@iv-fyodorov1992

Как визуализовать граф коммитов GIT с помощью php?

есть php.
Есть массив с коммитами из GIT честно распаршенный "git log" и слегка причёсанный вида:
[#ID#] => array (
   [HASH] => #HASH#
   [PARRENTS] => array (
      [0] => #PARRENT_HASH_0#
      ...
      [N] => #PARRENT_HASH_N#
   )
   [CHILDS] => array (
      [0] => #CHILD_HASH_0#
      ...
      [N] => #CHILD_HASH_N#
   )
)

#CHILD_HASH_0#, #PARRENT_HASH_0#, #HASH# - значения хешей соответвующих коммитов
#ID# - просто порядковый номер коммита в массиве от 0 до N (где 0 - самый свежий, а N - самый старый)

Фактически для каждого коммита есть его хеш, а так же хеши его родителей/детей (если они есть).
Если у коммита нет родителей или детей, то там будет пустой массив

Необходимо визуализовать историю ветки по аналогии с github/bitbucket.
Как это сделать?
  • Вопрос задан
  • 793 просмотра
Пригласить эксперта
Ответы на вопрос 2
ManWithBear
@ManWithBear
Swift Adept, Prague
git log --graph --oneline
?

UPD. Так это уже вообще другой вопрос получается.
1) Считаем кол-во дней и комитов в них. В итоге получаем число, которое будет шириной изображения в точках
2) Считаем кол-во веток. Получаем высоту изображения в точках.
3) Рисуем коммиты в зависимости от их ветки (ряд) и даты/порядкового номера в дне (столбец)
4) Соединяем комиты внутри одной ветки
5) Для комитов с несколькими потомками соединяем к соответствующим веткам (не забываем о смещение в столбце)

И тут куча места для оптимизаций и улучшений
Ответ написан
@ashumkin
системный разработчик
если графически визуализировать, то graphviz
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы