Предположим, git status
дает это:
# On branch X
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: file1.cc
# modified: file1.h
# modified: file1_test.cc
# modified: SConscript
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# (commit or discard the untracked or modified content in submodules)
#
# modified: file1.cc
# modified: tinyxml2 (untracked content)
#
В этом случае только некоторые изменения, внесенные в file1.cc, были проиндексированы / проиндексированы для следующей фиксации.
Я запускаю сценарий предварительной фиксации, чтобы запустить проверку стиля:
#!/bin/bash
git stash -q --keep-index
# Do the checks
RESULT=0
while read status file
do
if python ~/python/cpplint.py "$file"; then
let RESULT=1
fi
done < <(git diff --cached --name-status --diff-filter=ACM | grep -P '\.((cc)|(h)|(cpp)|(c))$' )
git stash pop -q
[ $RESULT -ne 0 ] && exit 1
exit 0
Как было предложено здесь, я прячу неустановленные файлы, прежде чем я провожу проверки стиля, а потом вставляю их. Однако в случае, когда только некоторые изменения в файле были поставлены, это вызывает конфликт слияния, когда я вставляю тайник в конец ловушки предварительной фиксации.
Как лучше это сделать? Я хочу выполнить проверку стиля для поэтапной версии файлов, которые собираются зафиксировать.