Я использую git в Windows 7 (мой пользователь находится в локальной группе администраторов) с моим проектом dev, но каждый раз, когда я фиксирую изменения, файл .git/COMMIT_EDITMSG
тоже меняется: его содержимое заменяется последним сообщением msg (которое хорошо) Это свойство изменено только для readonly
.
Из-за этого изменения свойства следующий коммит, который я сделаю, вернет ошибку "Отказано в доступе" ...
Как я видел в других сообщениях, я пытался удалить оба файла:- .git/COMMIT_EDITMSG
- .git/COMMIT_EDITMSG.bak
Или я также попытался вручную снять свойство readonly
, но проблема все еще остается после следующего успешного коммита ...
Что я должен сделать, чтобы исправить эту проблему?
Заметьте, что я установил ловушку prepare-commit-msg
которая может быть проблемой? Содержание крюка ниже:
#!/bin/bash
# Name this script "prepare-commit-msg"
# This script will prefix every commit msg with the branch name in brackets,
# except if we are on non working branch like develop or master.
# The branch name pattern is : {category}/{issue-nb}_{work-description}
if [ -z "$BRANCHES_TO_SKIP" ]; then
BRANCHES_TO_SKIP=(master develop)
fi
# Find current branch name
BRANCH_NAME=$(git symbolic-ref --short HEAD)
# Remove category before slash (included)
BRANCH_NAME="${BRANCH_NAME##*/}"
# Remove description after first underscore (included)
BRANCH_NAME="${BRANCH_NAME%_*}"
# Check if the branch is excluded
BRANCH_EXCLUDED=$(printf "%s\n" "${BRANCHES_TO_SKIP[@]}" | grep -c "^$BRANCH_NAME$")
BRANCH_IN_COMMIT=$(grep -c "\[$BRANCH_NAME\]" $1)
# Check if branch name is not null, if the current branch is not an excluded one, and if the branch name is already in the commit msg
if [ -n "$BRANCH_NAME" ] && ! [[ $BRANCH_EXCLUDED -eq 1 ]] && ! [[ $BRANCH_IN_COMMIT -ge 1 ]]; then
# Add brackets around branch name and Prefix passed msg with it
sed -i.bak -e "1s/^/[$BRANCH_NAME] /" $1
fi