2016-03-25 3 views
3

Есть ли способ заблокировать ветку Git для записи и чтения? Для того, чтобы ни одна запись в ветку и никакое клонирование из ветки не было возможно, а только для одного человека, который является инженером-строителем?Заблокировать ветвь Git

Вот сценарий:

код был нажат в хранилище Git, а затем ветвь развития было сделано. Теперь идея состоит в том, чтобы заблокировать основную ветвь для всех, но один человек, и у разработчиков есть возможность клонировать из ветви разработки и возвращать код обратно в ветку разработки.

Только один человек - инженер-строитель должен иметь доступ к главной ветке.

Также есть хороший инструмент Gui, который может работать с Git? В настоящее время мы используем SourceTree, но отображение дерева и коммитов является уродливым.

спасибо.

+0

Как правило, сервер Git (например, Github или Stash) позволит вам предотвратить нажатие на определенные ветви. Я не вижу причины для предотвращения * вытаскивания * из определенной ветви. –

+0

Возможный дубликат [Способ ограничения доступа к филиалу Git?] (Http://stackoverflow.com/questions/8781240/a-way-to-restrict-git-branch-access) – Frxstrem

+0

@OliverCharlesworth, поскольку регулярная разработка должна быть сделанные из ветви разработки. У обычного разработчика не должно быть доступа к основной ветке. Также как насчет инструмента Gui? Есть что-то лучше? – Igor

ответ

3

Git работает на уровне хранилища, что означает, если вы можете клонировать Git репозиторий, вы можете клонировать его полностью (со всеми ее филиала)

Это означает, что доступ для чтения не может быть обеспечено ниже уровня репо (для филиал).
Все репо могут быть закрытыми, но это не функция git, а более широкий доступ к прослушивателю перед git-репо (например, сервер Apache или демон ssh в сочетании с аутентификацией и авторизацией пользователей).

Для достижения полной защиты чтения, вам понадобятся две операции РЕПО:

  • один для мастера
  • один для разработчика (как правило, вилка мастера)

Разработчики будут по-прежнему иметь доступ к мастер через оригинальное репо, которое было разветвлено.
Для полной изоляции вам нужно будет сделать первый репо частным, а второй больше не будет вилкой.

Но в более общем плане, имея (чтение) доступ к мастеру не плохая практика:

  • до тех пор, как не прямой толчок к development ветви блокируются, что означает перебазирование указанного development ветвь не возможно: любое развитие продолжается на этой ветке (а не master)
  • Разработчики все еще могут сравнить свои обязательства по освоению и/или вишневому захвату или объединить некоторые из основных коммитов в ветку разработки, должны ли они включать некоторые горячие -fix, сделанное на главном (до следующего слияния)
+0

@ jthill ниже кажется более точным, хотя сам git не запрещает доступ к репо вообще.Вы можете поместить слушателей перед репо, которые будут лишать доступа, но git сам по себе является только файловым менеджером версии, чей пакет 'receive-pack' /' upload-pack' будет с радостью получать/передавать все, что вы просите. Я отредактировал ответ соответственно. – VonC

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