Ответ 1
Проблема заключается в том, что любая forking commit создает "анонимную" ветвь (в отличие от именованной ветки, которая немного отличается от концепции), а графическое представление по умолчанию не может размещать записи в статических столбцах без наличия хороших идентификаторов. Таким образом, разработчик отказался, и у нас есть текущий график.
Теперь я думаю, что первое представление, которое вы даете, является удивительным, и должно быть возможно использовать некоторые эвристики для назначения идентификаторов анонимным ветвям в зависимости от (developer1-a, developer2-a, developer2-b и т.д.). Это было бы круто.:)
Время вложения!
Обновление
Что я хотел бы видеть:
- Commits сортируется по вертикали по времени фиксации, а не по целочисленному идентификатору версии.
- Commits сортируется по горизонтали, группируется по названной ветки и по каждому коммиттеру внутри каждой ветки. (И каждый коммиттер должен быть близок, если коммиттер разветкил и объединил свои собственные данные.)
Это означает, что алгоритм должен смотреть на все коммиты (которые должны быть просмотрены) перед заполнением представления и помещением "точек" фиксации в правый столбец/строку.
Три прохода над всеми коммитами должны быть достаточными, и каждый из них может быть выполнен в O (n) времени, что является O (n) для всего:
- Пройдите все, чтобы собрать данные (собрать ветки/коммиттеры) (O (n))
- сортировать ветки/коммиты в подходящий порядок столбцов
- сортировка фиксируется по времени фиксации (O (n log n) или лучше O (n) с помощью сортировки radix на секундах с эпохи)
- ходьба фиксирует и рисует точки и линии предков в соответствии с группировкой
Возможно, нам нужно быть умным (er) при маршрутизации линий между коммитами, но это еще предстоит выяснить. В частности, мы могли бы использовать вертикальное пространство между точками фиксации для соединения слияний, которые расположены далеко друг от друга по вертикали (т.е. Во времени), вместо использования целого столбца, такого как текущий алгоритм