Git веб-интерфейсы — различия между версиями
Материал из YourcmcWiki
м |
м |
||
Строка 14: | Строка 14: | ||
! <abbr title="commit = поиск по комментарию и метаданным коммита, grep = поиск "перебором" по всем файлам, fulltext = быстрый поиск по содержимому файлов с помощью полнотекстового движка">Поиск</abbr> | ! <abbr title="commit = поиск по комментарию и метаданным коммита, grep = поиск "перебором" по всем файлам, fulltext = быстрый поиск по содержимому файлов с помощью полнотекстового движка">Поиск</abbr> | ||
! <abbr title="Создание/удаление репозиториев, управление правами доступами">Адм</abbr> | ! <abbr title="Создание/удаление репозиториев, управление правами доступами">Адм</abbr> | ||
+ | ! <abbr title="Аутентификация: либо нет, либо ssh = встроенный неотрубаемый push-сервер с исключительно встроенной БД и ключами, либо ext = поддержка внешних БД пользователей, например, LDAP, и либо необязательный push-сервер, либо отсутствие оного">Auth</abbr> | ||
! Баги | ! Баги | ||
! Wiki | ! Wiki | ||
− | ! | + | ! Ревью |
! <abbr title="Запросы на слияние (push/pull requests в разной терминологии)">PullReq</abbr> | ! <abbr title="Запросы на слияние (push/pull requests в разной терминологии)">PullReq</abbr> | ||
! RSS | ! RSS | ||
− | ! Графы | + | ! <abbr title="Графы коммитов">Граф</abbr> |
! Примечания | ! Примечания | ||
|- | |- | ||
Строка 27: | Строка 28: | ||
| Perl | | Perl | ||
| commit, grep | | commit, grep | ||
+ | | | ||
| | | | ||
| | | | ||
Строка 41: | Строка 43: | ||
| C | | C | ||
| commit | | commit | ||
+ | | | ||
| | | | ||
| | | | ||
Строка 56: | Строка 59: | ||
|class=good| fulltext (Lucene) | |class=good| fulltext (Lucene) | ||
|class=good| да | |class=good| да | ||
+ | |class=good| ext | ||
| бета | | бета | ||
| <abbr title="Разбор Markdown в файлах внутри репозитория">.md</abbr> | | <abbr title="Разбор Markdown в файлах внутри репозитория">.md</abbr> | ||
Строка 69: | Строка 73: | ||
| PHP | | PHP | ||
| commit | | commit | ||
+ | | | ||
| | | | ||
| | | | ||
Строка 83: | Строка 88: | ||
| Perl | | Perl | ||
| commit | | commit | ||
+ | | | ||
| | | | ||
| | | | ||
Строка 97: | Строка 103: | ||
| PHP | | PHP | ||
|class=bad| отсутствует | |class=bad| отсутствует | ||
+ | | | ||
| | | | ||
| | | | ||
Строка 111: | Строка 118: | ||
| PHP | | PHP | ||
| commit | | commit | ||
+ | | | ||
| | | | ||
| | | | ||
Строка 126: | Строка 134: | ||
|class=bad| отсутствует | |class=bad| отсутствует | ||
|class=good| да | |class=good| да | ||
+ | | ssh | ||
| | | | ||
| <abbr title="Разбор Markdown в файлах внутри репозитория">.md</abbr> | | <abbr title="Разбор Markdown в файлах внутри репозитория">.md</abbr> | ||
Строка 140: | Строка 149: | ||
| commit | | commit | ||
|class=good| да | |class=good| да | ||
+ | | ssh | ||
|class=good| да | |class=good| да | ||
|class=good| да | |class=good| да | ||
Строка 146: | Строка 156: | ||
|class=good| да | |class=good| да | ||
| | | | ||
− | | (неполный) клон GitHub. Неотрубаемый встроенный Push-сервер, авторизация через SSH-ключи. С версии 6.0 есть платная версия, но, вроде, открытость пока не пострадала. | + | | (неполный) клон GitHub. Неотрубаемый встроенный Push-сервер, авторизация через SSH-ключи. С версии 6.0 есть платная версия, но, вроде, открытость пока не пострадала. Однако LDAP предлагается |
|- | |- | ||
| Gitorious | | Gitorious | ||
Строка 154: | Строка 164: | ||
| commit | | commit | ||
|class=good| да | |class=good| да | ||
+ | | ssh | ||
| | | | ||
| <abbr title="Разбор Markdown в файлах внутри репозитория">.md</abbr> | | <abbr title="Разбор Markdown в файлах внутри репозитория">.md</abbr> | ||
Строка 168: | Строка 179: | ||
|class=good| fulltext (Whoosh) | |class=good| fulltext (Whoosh) | ||
|class=good| да | |class=good| да | ||
+ | |class=good| ext | ||
|class=good| да | |class=good| да | ||
|class=good| да | |class=good| да | ||
Строка 182: | Строка 194: | ||
|class=good| fulltext (Whoosh) | |class=good| fulltext (Whoosh) | ||
|class=good| да | |class=good| да | ||
+ | |class=good| ext | ||
|class=good| да | |class=good| да | ||
|class=good| да | |class=good| да | ||
Строка 196: | Строка 209: | ||
|class=bad| отсутствует | |class=bad| отсутствует | ||
|class=good| да | |class=good| да | ||
+ | |class=good| ext | ||
|class=good| да | |class=good| да | ||
|class=good| да | |class=good| да | ||
Строка 210: | Строка 224: | ||
|class=bad| отсутствует | |class=bad| отсутствует | ||
|class=good| да | |class=good| да | ||
+ | |class=good| ext | ||
| | | | ||
| | | | ||
Строка 224: | Строка 239: | ||
| commit | | commit | ||
|class=good| да | |class=good| да | ||
+ | |class=good| ext | ||
|class=good| да | |class=good| да | ||
| <abbr title="Разбор Markdown в файлах внутри репозитория">.md</abbr> | | <abbr title="Разбор Markdown в файлах внутри репозитория">.md</abbr> |
Версия 00:13, 8 июля 2014
Название | Сайт | Демо | Язык | Поиск | Адм | Auth | Баги | Wiki | Ревью | PullReq | RSS | Граф | Примечания |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
gitweb | сайт | демо | Perl | commit, grep | да | Поиск по комменту/автору/дате, а также содержимому файлов, но без полнотекстового движка, то есть grep’ом (медленно). | |||||||
cgit | сайт | демо | C | commit | да | Клон gitweb. | |||||||
Gitblit | сайт | демо | Java | fulltext (Lucene) | да | ext | бета | .md | бета | да | да | Интегрируется с различными системами аутентификации. Есть лента активности по всем проектам. В логе показывает граф коммитов (только в бета-версии 1.4.0, в 1.3.2 поддержки нет, но сама фича вполне стабильна). Есть относительно экспериментальная реализация простых «багтрекера» и «ревью», причём данные хранятся не где-нибудь, а прямо в репозитории (демо-видео). | |
ViewGit | сайт | демо | PHP | commit | да | Клон gitweb. | |||||||
Gitalist | сайт | демо | Perl | commit | да | Функционально — клон gitweb; дизайн неплохой, но в узкую колонку по центру экрана с крупными шрифтами; требует дикую кучу зависимостей с CPAN; скорее мёртв, чем жив — пример лежит (хотя локально запустить удалось), последний коммит 1 апреля 2013. | |||||||
GitList | сайт | демо | PHP | отсутствует | да | Очень слабый клон gitweb — не умеет почти ничего. Есть, правда, статистика по коду (авторы, расширения файлов, всего файлов, всего байт). Стили github-подобные, на twitter bootstrap. | |||||||
GitPHP | сайт | демо | PHP | commit | да | Клон gitweb. | |||||||
Gitprep | сайт | демо | Perl | отсутствует | да | ssh | .md | Визуальный клон GitHub; есть форканье, архивы, управление ssh-ключами. Не хватает RSS, поиска и pull request’ов. По-видимому, используется push-сервер и отсутствует интеграция с внешними базами данных пользователей. | |||||
GitLab | сайт | демо | Ruby | commit | да | ssh | да | да | да | да | да | (неполный) клон GitHub. Неотрубаемый встроенный Push-сервер, авторизация через SSH-ключи. С версии 6.0 есть платная версия, но, вроде, открытость пока не пострадала. Однако LDAP предлагается | |
Gitorious | сайт | демо | Ruby | commit | да | ssh | .md | да | да | да | Открытый код сервиса Gitorious. Review плюс-минус, в виде merge request’ов. Есть управление SSH-ключами и, опять-таки, неотрубаемый push-сервер и отсутствие интеграции с внешними БД пользователей. | ||
|
сайт | выпилено | Python | fulltext (Whoosh) | да | ext | да | да | да | да | да | Основная поддержка — Mercurial. Различные методы аутентификации — присутствуют. Визуальная тема оформления — страшный отстой (на демо была нормальная, но её нет в комплекте поставки). Последняя нормальная GPL версия — 1.7.2 (перечисленные фичи имеет); более новые — исключительно платные, так что ну его нафиг. Демо раньше было на demo.rhodecode.org. | |
Kallithea | сайт | демо | Python | fulltext (Whoosh) | да | ext | да | да | да | да | да | да | Форк последнего GPL’ного RhodeCode. Теоретически из этого следует, что все фичи RhodeCode должен иметь. Умеет строить графы (показываются в Changelog автоматом) — может быть, и RhodeCode умел?.. |
Indefero | сайт | демо | PHP | отсутствует | да | ext | да | да | да | Клон Google Code. Умеет LDAP. Также умеет другие системы контроля версий: Mercurial, SVN и monotone O_o | |||
SCM Manager | сайт | пример | Java | отсутствует | да | ext | Есть поддержка SVN, немало плагинов — интеграция с багтрекерами, CI, LDAP и т. п. Но дизайн дико стрёмный, так как сделан на постылом ExtJS — AJAX во все поля, самодельные вкладочки, наношрифты, стандартное ExtJS’овское оформление и т. п. Какой-либо поиск по коммитам, похоже, отсутствует, о графах коммитов не стоит и мечтать. | ||||||
Gogs | сайт | демо | Go | commit | да | ext | да | .md | Код + список фич. Дизайн сильно похож, хоть и не идентичен, гитхабу. Дополнительно умеет форканье, архивы, ленту активности, отслеживание (watching), хуки, почтовые уведомления, Gravatar и вход через социальные сети либо LDAP, SMTP (O_o) либо фронтенд (то есть видимо, через заголовок). А, ещё теги как «релизы» показывает. |
В тему — есть ещё ungit, на node.js. Но по-видимому, это скорее веб-клиент, чем серверный веб-интерфейс.
Допилить ViewVC?
Фантазии о ViewVC
Кстати о птичках — можно же допилить поддержку Git (и hg, если охота) к ViewVC! И это совсем не сложно. Базовые фичи (интерфейс к репозиторию):
- Чтение коммитов, открытие файла, annotate (увы, только через вызов консольного git’а)
- Commit hook
После чего оно уже, в принципе, становится юзабельным, и сразу имеет офигенский поиск (уже мною реализованный на Sphinx’е). И, кстати, будет одной из немногих систем, поддерживающих и централизованные, и децентрализованные VCSы (из вышеперечисленных такое умеет только Indefero).
Однако для DVCS’ов всё-таки хочется:
- Граф коммитов (индексируемый в базу)
Правда, чтобы оно было похоже на Gitlab и ему подобных, нужны «активные» фичи:
- Code review — комментарии к коммитам и к строчкам кода
- Личные репозитории, возможность разграничения прав на них (элементарно путём POSIX ACL)
- Возможно, какая-нибудь статистика по репозиториям
- Возможно, открывать на главной страницы ленту последних коммитов
- Возможно, как-то парсить reflog’и, чтобы понимать, в какую ветку push’ился коммит
- README и отображение подмножества разметки MediaWiki (а то и просто ?action=render)
Зато при этом:
- — Багтрекер и Wiki не нужны вообще
- — Клонирование одним тыком малополезно
- — Pull request’ы при наличии Code review тоже малополезны, так как workflow не корпоративный
- — Онлайн-редактор файлов в репозитории из браузера не нужен
- — Заметки типа Gist’ов — малополезны
- — Push-сервер не нужен, так как можно юзать стандартный ssh в chroot, и даже с krb5 доменной авторизацией
- — От лент активности (кроме коммитов, ленты которых и так есть) в связи с отсутствием «социальных» фич тоже проку мало