Есть ли способ заблокировать ветку в git
-
20-09-2019 - |
Вопрос
У меня есть идея заблокировать репозиторий от пользователей, втягивающих в него файлы, имея скрипт блокировки в крючке GIT Update, поскольку push может распознавать только UserId как аргументы, а не филиалы. Так что я могу заблокировать весь репо, который просто блокирует каталог.
Есть ли способ заблокировать конкретную ветку в GIT?
Или есть способ, которым крючок обновления может идентифицировать, из какой филиала пользователь нажимает и на какую филиал нажимается код?
Решение
Ветвь подталкивается к первым параметрам в Обновить крючок. Анкет Если вы хотите заблокировать ветку myfeature
Для нажатия этот код (помещен в hooks/update
) сделаю это:
#!/bin/sh
# lock the myfeature branch for pushing
refname="$1"
if [[ $refname == "refs/heads/myfeature" ]]
then
echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo "You cannot push to myfeature! It's locked"
echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
exit 1
fi
exit 0
Другие советы
Обновление крюка, от документов:
Крюк выполняется один раз для каждого рефера, чтобы быть обновленным, и принимает три параметра:
- Название рефери обновляется,
- Имя старого объекта хранится в рефери,
- и новое имя объекта, которое будет сохранено в рефери.
Так что ... да, он точно знает, какая ветвь нажимается, и может просто проверить этот параметр и сбой выхода, если не хочет, чтобы ветвь подталкивала.
И если вы хотите (разумно) сделать это до Пользователь загрузил объекты, вы можете использовать крюк с предварительным приобретением:
Этот крюк выполняется один раз для операции приема. Это не требует аргументов, но для каждого рефери для обновления он получает на стандартном вводе строку формата:
<old-value>
Шрифт<new-value>
Шрифт<ref-name>
LFкуда
<old-value>
Старое имя объекта хранится в рефери,<new-value>
Является ли новое имя объекта, которое нужно хранить в рефери и<ref-name>
полное имя рефера.
(Это места и кормление)
В таком инструменте, как Gitolite, есть такая особенность, я верю: http://github.com/sitaramc/gitolite