Git веб-интерфейсы — различия между версиями
Материал из YourcmcWiki
м |
м |
||
Строка 1: | Строка 1: | ||
− | {| class="wikitable" | + | <html><style> |
+ | .gitint td { text-align: center; } | ||
+ | .gitint td:last-child { text-align: left; } | ||
+ | .good { color: white; background: #0a0; } | ||
+ | .bad { color: white; background: red; } | ||
+ | </style></html> | ||
+ | |||
+ | {| class="wikitable gitint" | ||
|- | |- | ||
! Название | ! Название | ||
Строка 5: | Строка 12: | ||
! Демо | ! Демо | ||
! Язык | ! Язык | ||
− | ! <abbr title="commit = поиск по комментарию | + | ! <abbr title="commit = поиск по комментарию и метаданным коммита, grep = поиск "перебором" по всем файлам, fulltext = быстрый поиск по содержимому файлов с помощью полнотекстового движка">Поиск</abbr> |
− | ! <abbr title="Создание/удаление репозиториев, управление правами доступами"> | + | ! <abbr title="Создание/удаление репозиториев, управление правами доступами">Адм</abbr> |
! Баги | ! Баги | ||
! Wiki | ! Wiki | ||
! Review | ! Review | ||
! <abbr title="Запросы на слияние (push/pull requests в разной терминологии)">PullReq</abbr> | ! <abbr title="Запросы на слияние (push/pull requests в разной терминологии)">PullReq</abbr> | ||
+ | ! RSS | ||
+ | ! Графы | ||
! Примечания | ! Примечания | ||
|- | |- | ||
| gitweb | | gitweb | ||
− | | https://git.wiki.kernel.org/index.php/Gitweb | + | | [https://git.wiki.kernel.org/index.php/Gitweb сайт] |
− | | https://gitweb.torproject.org/ | + | | [https://gitweb.torproject.org/ демо] |
| Perl | | Perl | ||
| commit, grep | | commit, grep | ||
Строка 22: | Строка 31: | ||
| | | | ||
| | | | ||
+ | | | ||
+ | |class=good| да | ||
| | | | ||
| Поиск по комменту/автору/дате, а также содержимому файлов, но без полнотекстового движка, то есть grep’ом (медленно). | | Поиск по комменту/автору/дате, а также содержимому файлов, но без полнотекстового движка, то есть grep’ом (медленно). | ||
|- | |- | ||
| cgit | | cgit | ||
− | | http://hjemli.net/git/cgit/ | + | | [http://hjemli.net/git/cgit/ сайт] |
− | | http://cgit.freedesktop.org/ | + | | [http://cgit.freedesktop.org/ демо] |
| C | | C | ||
| commit | | commit | ||
Строка 34: | Строка 45: | ||
| | | | ||
| | | | ||
+ | | | ||
+ | |class=good| да | ||
| | | | ||
| Клон gitweb. | | Клон gitweb. | ||
|- | |- | ||
| Gitblit | | Gitblit | ||
− | | http://gitblit.com | + | | [http://gitblit.com сайт] |
− | | https://git.wikimedia.org/ | + | | [https://git.wikimedia.org/ демо] |
| Java | | Java | ||
− | | | + | |class=good| fulltext (Lucene) |
− | | | + | |class=good| да |
| | | | ||
| | | | ||
| | | | ||
| | | | ||
− | | Интегрируется с различными системами аутентификации. | + | |class=good| да |
+ | |class=good| да | ||
+ | | Интегрируется с различными системами аутентификации. Есть лента активности по всем проектам. В логе показывает граф коммитов. | ||
|- | |- | ||
| ViewGit | | ViewGit | ||
− | | http://viewgit.fealdia.org/ | + | | [http://viewgit.fealdia.org/ сайт] |
− | | https://os.inf.tu-dresden.de/~mroi/git/ | + | | [https://os.inf.tu-dresden.de/~mroi/git/ демо] |
| PHP | | PHP | ||
| commit | | commit | ||
Строка 58: | Строка 73: | ||
| | | | ||
| | | | ||
+ | | | ||
+ | |class=good| да | ||
| | | | ||
| Клон gitweb. | | Клон gitweb. | ||
|- | |- | ||
| Gitalist | | Gitalist | ||
− | | http://www.gitalist.com/ | + | | [http://www.gitalist.com/ сайт] |
− | | http://example.gitalist.com/ | + | | [http://example.gitalist.com/ демо] |
| Perl | | Perl | ||
| commit | | commit | ||
Строка 70: | Строка 87: | ||
| | | | ||
| | | | ||
+ | | | ||
+ | |class=good| да | ||
| | | | ||
| Функционально — клон gitweb; дизайн неплохой, но в узкую колонку по центру экрана с крупными шрифтами; требует дикую кучу зависимостей с CPAN; скорее мёртв, чем жив — пример лежит (хотя локально запустить удалось), последний коммит 1 апреля 2013. | | Функционально — клон gitweb; дизайн неплохой, но в узкую колонку по центру экрана с крупными шрифтами; требует дикую кучу зависимостей с CPAN; скорее мёртв, чем жив — пример лежит (хотя локально запустить удалось), последний коммит 1 апреля 2013. | ||
|- | |- | ||
| GitList | | GitList | ||
− | | http://gitlist.org/ | + | | [http://gitlist.org/ сайт] |
− | | http://repo.blindmikey.com/oEdit.git/ | + | | [http://repo.blindmikey.com/oEdit.git/ демо] |
| PHP | | PHP | ||
− | | | + | |class=bad| отсутствует |
| | | | ||
| | | | ||
| | | | ||
| | | | ||
+ | | | ||
+ | |class=good| да | ||
| | | | ||
| Очень слабый клон gitweb — не умеет почти ничего. Есть, правда, статистика по коду (авторы, расширения файлов, всего файлов, всего байт). Стили github-подобные, на twitter bootstrap. | | Очень слабый клон gitweb — не умеет почти ничего. Есть, правда, статистика по коду (авторы, расширения файлов, всего файлов, всего байт). Стили github-подобные, на twitter bootstrap. | ||
|- | |- | ||
| GitPHP | | GitPHP | ||
− | | http://www.gitphp.org/ | + | | [http://www.gitphp.org/ сайт] |
− | | http://source.gitphp.org/ | + | | [http://source.gitphp.org/ демо] |
| PHP | | PHP | ||
| commit | | commit | ||
Строка 94: | Строка 115: | ||
| | | | ||
| | | | ||
+ | | | ||
+ | |class=good| да | ||
| | | | ||
| Клон gitweb. | | Клон gitweb. | ||
|- | |- | ||
| Gitprep | | Gitprep | ||
− | | http://www.gitprep.org/ | + | | [http://www.gitprep.org/ сайт] |
− | | http://perlcodesample.sakura.ne.jp/gitprep.cgi | + | | [http://perlcodesample.sakura.ne.jp/gitprep.cgi демо] |
| Perl | | Perl | ||
− | | | + | |class=bad| отсутствует |
− | | | + | |class=good| да |
+ | | | ||
+ | | <abbr title="Разбор Markdown в файлах внутри репозитория">.md</abbr> | ||
+ | | | ||
| | | | ||
− | |||
| | | | ||
| | | | ||
Строка 110: | Строка 135: | ||
|- | |- | ||
| GitLab | | GitLab | ||
− | | http://gitlab.org/ | + | | [http://gitlab.org/ сайт] |
− | | http://demo.gitlab.com | + | | [http://demo.gitlab.com демо] |
| Ruby | | Ruby | ||
| commit | | commit | ||
− | | | + | |class=good| да |
− | | | + | |class=good| да |
− | | | + | |class=good| да |
− | | | + | |class=good| да |
− | | | + | |class=good| да |
+ | |class=good| да | ||
+ | | | ||
| (неполный) клон GitHub. Неотрубаемый встроенный Push-сервер, авторизация через SSH-ключи. С версии 6.0 есть платная версия, но, вроде, открытость пока не пострадала. | | (неполный) клон GitHub. Неотрубаемый встроенный Push-сервер, авторизация через SSH-ключи. С версии 6.0 есть платная версия, но, вроде, открытость пока не пострадала. | ||
|- | |- | ||
| Gitorious | | Gitorious | ||
− | | http://gitorious.org/ | + | | [http://gitorious.org/ сайт] |
− | | http://gitorious.org/ | + | | [http://gitorious.org/ демо] |
| Ruby | | Ruby | ||
| commit | | commit | ||
− | | | + | |class=good| да |
+ | | | ||
+ | | <abbr title="Разбор Markdown в файлах внутри репозитория">.md</abbr> | ||
+ | |class=good| да | ||
+ | |class=good| да | ||
+ | |class=good| да | ||
| | | | ||
− | |||
− | |||
− | |||
| Открытый код сервиса Gitorious. Review плюс-минус, в виде merge request’ов. Есть управление SSH-ключами. | | Открытый код сервиса Gitorious. Review плюс-минус, в виде merge request’ов. Есть управление SSH-ключами. | ||
|- | |- | ||
| <s>RhodeCode</s> | | <s>RhodeCode</s> | ||
− | | http://rhodecode.org/ | + | | [http://rhodecode.org/ сайт] |
− | | выпилено | + | | выпилено |
| Python | | Python | ||
− | | | + | |class=good| fulltext (Whoosh) |
− | | | + | |class=good| да |
− | | | + | |class=good| да |
− | | | + | |class=good| да |
− | | | + | |class=good| да |
− | | | + | |class=good| да |
− | | Основная поддержка — Mercurial. Визуальная тема оформления — страшный отстой (на демо была нормальная, но её нет в комплекте поставки). Последняя нормальная GPL версия — 1.7.2 (перечисленные фичи имеет); более новые — исключительно платные, так что ну его нафиг. | + | |class=good| да |
+ | | | ||
+ | | Основная поддержка — Mercurial. Визуальная тема оформления — страшный отстой (на демо была нормальная, но её нет в комплекте поставки). Последняя нормальная GPL версия — 1.7.2 (перечисленные фичи имеет); более новые — исключительно платные, так что ну его нафиг. Демо раньше было на demo.rhodecode.org. | ||
|- | |- | ||
| Indefero | | Indefero | ||
− | | http://www.indefero.net/ | + | | [http://www.indefero.net/ сайт] |
− | | http:// | + | | [http://projects.ceondo.com/p/indefero/ демо] |
| PHP | | PHP | ||
− | | | + | |class=bad| отсутствует |
− | | | + | |class=good| да |
− | | | + | |class=good| да |
− | | | + | |class=good| да |
− | | | + | |class=good| да |
+ | | | ||
+ | | | ||
| | | | ||
| Клон Google Code. Также умеет Mercurial, SVN и monotone O_o | | Клон Google Code. Также умеет Mercurial, SVN и monotone O_o | ||
|} | |} | ||
− | |||
− | |||
В тему — есть ещё [https://github.com/FredrikNoren/ungit ungit], на node.js. Но по-видимому, это скорее веб-клиент, чем серверный веб-интерфейс. | В тему — есть ещё [https://github.com/FredrikNoren/ungit ungit], на node.js. Но по-видимому, это скорее веб-клиент, чем серверный веб-интерфейс. |
Версия 15:38, 14 января 2014
Название | Сайт | Демо | Язык | Поиск | Адм | Баги | Wiki | Review | PullReq | RSS | Графы | Примечания |
---|---|---|---|---|---|---|---|---|---|---|---|---|
gitweb | сайт | демо | Perl | commit, grep | да | Поиск по комменту/автору/дате, а также содержимому файлов, но без полнотекстового движка, то есть grep’ом (медленно). | ||||||
cgit | сайт | демо | C | commit | да | Клон gitweb. | ||||||
Gitblit | сайт | демо | Java | fulltext (Lucene) | да | да | да | Интегрируется с различными системами аутентификации. Есть лента активности по всем проектам. В логе показывает граф коммитов. | ||||
ViewGit | сайт | демо | PHP | commit | да | Клон gitweb. | ||||||
Gitalist | сайт | демо | Perl | commit | да | Функционально — клон gitweb; дизайн неплохой, но в узкую колонку по центру экрана с крупными шрифтами; требует дикую кучу зависимостей с CPAN; скорее мёртв, чем жив — пример лежит (хотя локально запустить удалось), последний коммит 1 апреля 2013. | ||||||
GitList | сайт | демо | PHP | отсутствует | да | Очень слабый клон gitweb — не умеет почти ничего. Есть, правда, статистика по коду (авторы, расширения файлов, всего файлов, всего байт). Стили github-подобные, на twitter bootstrap. | ||||||
GitPHP | сайт | демо | PHP | commit | да | Клон gitweb. | ||||||
Gitprep | сайт | демо | Perl | отсутствует | да | .md | Визуальный клон GitHub; есть форканье, архивы. Не хватает RSS, поиска и pull request’ов. | |||||
GitLab | сайт | демо | Ruby | commit | да | да | да | да | да | да | (неполный) клон GitHub. Неотрубаемый встроенный Push-сервер, авторизация через SSH-ключи. С версии 6.0 есть платная версия, но, вроде, открытость пока не пострадала. | |
Gitorious | сайт | демо | Ruby | commit | да | .md | да | да | да | Открытый код сервиса Gitorious. Review плюс-минус, в виде merge request’ов. Есть управление SSH-ключами. | ||
|
сайт | выпилено | Python | fulltext (Whoosh) | да | да | да | да | да | да | Основная поддержка — Mercurial. Визуальная тема оформления — страшный отстой (на демо была нормальная, но её нет в комплекте поставки). Последняя нормальная GPL версия — 1.7.2 (перечисленные фичи имеет); более новые — исключительно платные, так что ну его нафиг. Демо раньше было на demo.rhodecode.org. | |
Indefero | сайт | демо | PHP | отсутствует | да | да | да | да | Клон Google Code. Также умеет Mercurial, SVN и monotone O_o |
В тему — есть ещё ungit, на node.js. Но по-видимому, это скорее веб-клиент, чем серверный веб-интерфейс.
Допилить 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 доменной авторизацией
- — От лент активности (кроме коммитов, ленты которых и так есть) в связи с отсутствием «социальных» фич тоже проку мало