Есть ли какие-либо причины, чтобы заставить пользователя не изменять файл .gitignore. Я имею в виду, скажем, кто-то изменит или удалит этот файл и изменит эти изменения.Предотвращение изменения пользователем файла .gitignore?
ответ
Вы можете установить крюк предварительной передачи на серверной стороне и отказаться от нажатия, если изменяется .gitignore
.
Git децентрализован. Когда кто-то клонирует репо, он полностью находится под их контролем, включая файл .gitignore
.
Что вы делаете может do не позволяет пользователям нажимать определенные файлы на ваш сервер с помощью Git hook, который проверяет указанные типы файлов и отказывает пользователю нажать.
Читайте также: pre-receive hooks. И напишите сценарий, который ищет данные типы файлов.
Проверьте свой репо .git/hooks
, будет список образцов файлов, которые покажут вам, как с ним обращаться. Также прочитайте this article, чтобы избежать легкой ошибки.
EDIT
Я не годится на языке сценариев командной оболочки, но вот небольшой скрипт, который запрещает .php и .css файлы и сообщает пользователю до отмены. Он расположен в .git/hooks/pre-receive
. Не забудьте сделать его исполняемым (chmod +x
), иначе он не будет работать.
#!/bin/sh
while read oldrev newrev refname
do
if [[ `git diff-tree --no-commit-id --name-only -r $newrev | grep -e 'css\|php'` != "" ]]
do
echo "Cannot push this"
exit 1;
fi
end
С , предварительно получают Крючки называются VREFS (Virtual Refs, также listed here): не установка предварительно получить крючок непосредственно в операции РЕПО, управляемых gitolite, сделать это путем добавления VREF в каталоге VREF
от gitolite-admin
репо, а Гитолит будет распространять его на репозитории.
В разделе «restricting pushes by dir/file name» показано, как ограничить нажатие на имена файлов и файлов.
Это один VREF, который вам не нужно добавлять в каталог VREF
, на самом деле (он является частью крючка обновления, управляемого Gitolite. Для дополнительного обновления, see here).
Таким образом, модификация gitolite.conf
в репозитории gitolite-admin
и отбрасывание того, что админ-репо на сервер gitolite достаточно.
repo foo
RW+ = @senior_devs
RW = @junior_devs
- VREF/NAME/Makefile = @junior_devs
Это довольно круто, и он работает как шарм: P Thx очень много. У меня также есть еще один вопрос, который может немного отличаться от темы. Можете ли вы посоветовать мне хороший рабочий процесс с использованием GIT с командой QA и обзором кода в среде с серверами разработки, тестирования, постановки и производства? –
@MarceliPo git-flow является текущим стандартом и является хорошей отправной точкой (http://stackoverflow.com/a/12927985/6309) – VonC
@MarceliPo. Если бы это ответили на ваш вопрос, можете ли вы пометить его как правильный ответьте, чтобы другие посетители узнали, и VonC получит надлежащую атрибуцию? :) – Swivel
Если вы говорите на местном уровне файловой системы, может быть способ, чтобы установить 'chmod' на файлы в рабочем каталоге мерзавца, но и на уровне хранилища мерзавец, не может быть каким-либо образом сделать что. – ConcurrentHashMap
Ну, я использую гитолит для управления доступом к репозиториям. –
Я бы не рекомендовал крючки, когда вы управляете репозиториями с Gitolite. См. Мой ответ. – VonC