У нас есть настройка SVN, и есть некоторые вещи, которые нам в ней не нравятся, а некоторые вещи нам нравятся. Мы хотим перейти на git, но не уверены, какая именно настройка подойдет нам. В настоящее время мы используем SVN (с Authz) + Apache (с WebDAV и LDAP).
Пункт 5 выше - это тот, который нас постоянно забивает. Кто-то делает коммит с живого сайта, а затем ловушка ломается.
Мы думаем использовать gitosis / gitolite для управления доступом, но, поскольку они используют ssh-ключи, мы не будем требовать пароли. Мы также думаем использовать git-http-backend и использовать Apache для аутентификации, но теряем ли мы тогда контроль доступа? Можно ли автоматически обновлять действующий сайт с помощью перехвата, если Apache требует аутентификации? Можем ли мы как-то объединить git-http-backend и gitosis / gitolite? Можем ли мы сохранить учетные данные http с помощью git?
Мы также думаем использовать git-http-backend и использовать Apache для аутентификации, но теряем ли мы тогда контроль доступа?
Нет, вы можете настроить аутентификацию с помощью ldap почти так же, как вы использовали ее для SVN. Gitweb и git-http-backend используют mod_ldap так же, как SVN для аутентификации.
Можно ли автоматически обновлять действующий сайт с помощью перехвата, если Apache требует аутентификации?
Git по умолчанию поставляется с gitweb. Это преимущественно то, что используется для онлайн-браузера для вашей базы исходного кода. Вы можете настроить его за Apache с помощью mod_ldap для целей аутентификации, как git-http-backend. Для обновления онлайн-браузера и репозиториев, перечисленных в нем, ловушка не требуется. Все это поддерживается cgi, git-http-backend.
Можем ли мы как-то объединить git-http-backend и gitosis / gitolite?
гитолит - это то, что вы хотите:
https://github.com/sitaramc/gitolite/wiki/
Гитоз в основном описывается:
Ubuntu-server: соглашение об именах пользователей gitosis
Лично мы просто используем LDAP для авторизации и аутентификации пользователей. Если вы используете LDAP, вам действительно не нужен gitolite для управления пользователями. Для этого вы можете использовать любой общий инструмент управления пользователями LDAP. Большинство дистрибутивов Linux поставляются с различными инструментами пользовательского интерфейса для управления openLDAP. Если у вас Windows, просто используйте активный каталог.
Оба подхода по умолчанию (git, gitweb, git-http-backend, LDAP) и gitolite поддерживают следующее:
Однако, если вы хотите, чтобы такое детализированное управление пользователями без LDAP соответствовало следующим критериям, то лучшим решением может быть gitolite:
Из http://sitaramc.github.com/gitolite/index.html#gl_what
Можем ли мы сохранить учетные данные http с помощью git?
Да, вы можете хранить / назначать пользователей с помощью git config:
git config --global user.name "Foo Bar"
git config --global user.email "your@mail.address.com"
git config --global user.password "yourpassword"
git config --global github.user "yourusername"
git config --global github.password "yourpassword"
Хотя, если вы используете его с SSH, убедитесь, что вы используете сертификаты CA, а не самоподписанный. У Git есть этот странный прием, sslVerify = false, чтобы заставить его работать с самоподписанными сертификатами, что, похоже, противоречит цели использования сертификатов.
Когда вы собираетесь перенести код из svn в git, вам понадобится хороший инструмент для импорта. Я не смог найти ни одного, подходящего для больших репозиториев, поэтому написал свой собственный. Не стесняйтесь экспериментировать, если у вас возникнут проблемы с git-svn:
Если вы все еще предпочитаете использовать svn up
для живого сайта, прочтите svn help up
внимательно и обратите внимание на некоторые параметры, чтобы обрабатывать учетные данные в Smart Way
Global options:
--username ARG : specify a username ARG
--password ARG : specify a password ARG
--no-auth-cache : do not cache authentication tokens