2013-07-17 2 views
7

Я настраиваю среду разработки на общем сервере для нескольких разработчиков. У меня будет один репозиторий, в котором размещается весь код, используемый в производстве, и многие другие, используемые для разработки разными членами команды. Я бы хотел, чтобы производственное репо было «тянуть только». Пользователи могут извлекать из него и получать производственные изменения локально всякий раз, когда захотят, но нажатие должно обрабатываться администратором производства или, по крайней мере, требовать пароль. Что-то вроде:Как создать репозиторий git 'pull only'

[[email protected] /devroot/myrepo]$ git pull $PRODUCTION master 
From <location> 
*branch    master  -> FETCH_HEAD 
Already up-to-date 

[[email protected] /devroot/myrepo]$ git push $PRODUCTION master 
error: user `user` is not authorized for this action 

Или

[[email protected] /devroot/myrepo]$ git push $PRODUCTION master 
HEAD @ `$PRODUCTION`-Please enter password: 

Я считаю, что я мог бы сделать это с правами доступа к файлам, но не поражает меня как элегантное решение. У git есть что-то вроде этого встроенного?

ответ

3

Если вы хотите установить средства контроля доступа к хранилищу, вы можете посмотреть в Gerrit. Его основное внимание уделяется просмотру кода (который тоже стоит того, чтобы иметь!), Но он также контролирует доступ как побочный эффект.

В противном случае, если вы просто хотите что-то действительно простое, разрешения на доступ к файлам - отличный способ справиться с этим на одной машине. Пока пользователь не может писать файлы в каталоге, содержащем репозиторий, они не могут нажать на него. Я ничего не вижу в этом ничего особенного!

2

Вы можете использовать gitolite или gitosis. Затем вы можете создавать списки пользователей, которые могут тянуть, нажимать каждую ветку, кто может создавать теги и т. Д.

Я знаю, что гитолит лучше, чем гитоз. Конфигурация - это только репозиторий git с простым синтаксисом для файлов.

0

Я согласен с @duskwuff .. Посмотрите на это branching model. Это поможет вам получить тягу только без Gerrit

1

git сам по себе не содержит никаких прав.

Вы можете достичь этого уровня выше в программном обеспечении, которое управляет вашими репозиториями git (если вы идете на несколько централизованный подход, но я думаю, что большинство компаний этого хотят). поэтому гитолит (http://gitolite.com/gitolite/) или gitlab может это сделать (http://gitlab.org/).

1

Будет ли более «готовое решение для взрослых» работать нормально?

Например, в git вы настраиваете только удаленный выбор и оставляете удаленный push на фиктивный несуществующий URL-адрес, чтобы пользователь случайно не мог использовать git push.

Редактировать: это похоже на то, что принято in this question.

Смежные вопросы