Да, я понимаю, что я школота, хоть и старый пердун и что мне такое не под силу. Но почему-то до меня никто не сделал git branches/commits viewer’a, глядя на который было бы что-то понятно о проекте.
Я хочу чтобы по умолчанию ось времени была по горизонтали. А бранчи и коммиты отображались в стиле https://www.nobledesktop.com/image/gitresources/git-branches-merge.png. При этом расстояние между коммитами было определено временем между ними (чтобы ось времени была действительно осью времени). Тогда гже гуще - сразу видно - велась работа.
Я хочу, чтобы этот граф можно было приближать/удалять и крутить как угодно (например, сделать ось времени вертикальной, как обычно).
Ну и я хочу плюшки в виде поля ввода простого DSL языка, чтобы, например, показать только бранчи от Коли Иванова. Или только коммиты от даты такой-то по такую-ту.
Ну и, конечно, возможность узреть разницу между двумя любыми «нодами» как meld показывает dir-diff. Ну и конечно diff’ы между файлами.
Также пользователь должен иметь возможность задать фильтр, а следом переключиться в обычный, не завязанный на время список коммитов (как в большинстве git viewer’ов).
Можно еще плюшки в виде репортов, но у меня шальная идея сделать систему плагинов и пусть каждый кому надо знать кто больше накодил в мартобре - пишет плагин.
При этом приближение/удаление/поворачивание графа должно быть быстрым. Тулза должна, например, не упасть (а в идеале корректно работать) с сырцами да хоть бы Линукса.
Я вообще не представляю с чего начать. Курить SDL? Граф явно придется самому рисовать, во-первых graphviz рисует уродство, а во вторых мне же надо будет соmmit messages рисовать если, например, удаление позволяет. И они должны быть всегда горизонтальными независимо от ротации.
Вообще что взять за UI framework? QT? И там внутри какой-то 2d-canvas? Напоминаю, что это должно быть быстрым (ну конечно при условии, что я не нагорожу алгоритмического огорода).
Посоветуйте, что курить.