Восстановление статуса только для чтения при переключении веток в msysgit - PullRequest
2 голосов
/ 06 сентября 2011

Я бы хотел использовать ветви git для отделения локальных изменений от кода руководителя группы, который хранится в репозитории Perforce.

Perforce использует флаг только для чтения на неизмененных файлах и не будет обновлять измененные файлы, если флаг только для чтения не установлен, думая, что я мог изменить их, не помещая их в список изменений.

Я бы хотел оставить все доступным только для чтения в основной ветке и изменить файлы в других ветвях. Можно ли заставить msysgit восстанавливать флаг только для чтения для восстановленных файлов при проверке главной ветви, чтобы p4 мог синхронизировать все?

1 Ответ

3 голосов
/ 06 сентября 2011

Вы можете написать git post-checkout hook со сценарием bash, который устанавливает флаг только для чтения ...

Что-то вроде:

# (flag==1?) && (HEAD == master) ?
if [ $3 == 1 ] && [ `git symbolic-ref -q HEAD` == "refs/heads/master" ]
then
    # make everything in the given directory (recursively) read-only:
    chmod -w [ path_to_repo | . ]/* -R
fi

Похоже, ./* пропускает папку .git ( скрытые файлы / папки в целом?), Но вы должны проверить это, чтобы быть уверенным.Вы, вероятно, также хотите использовать полный путь к вашему git-репо вместо просто ./*, чтобы не имело значения, в каком каталоге / каталоге вы находитесь ...

...