2

Я использую 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

0