2016-06-15 6 views
0

Я использую крючок GIT pre-commit, чтобы найти шаблон строки в моем файле README.md ex. {{STRING_PATTERN}}, а затем сменив строковый шаблон на требуемый вывод текста/кода, который также содержит имя текущей ветви.GIT Pre-Commit Hook Изменяет файл, но не добавляет его в Commit

В этом проблема. Сценарий pre-commit работает с точки зрения того, что он находит шаблон строки и заменяет его правильным текстом/кодом, но он не делает этого до внесения изменений ... что означает, что после запуска git commit -m "Updated README.md" и выполните проверку git status файл README.md отображается как измененный, и если бы я должен был запустить git push origin branch_name, файл README.md содержит фактический {{STRING_PATTERN}} идентификатор (не нужен), а не текст, в котором он был обновлен (это то, что я хотите).

Вот pre-commit код, как я сказал, пожалуйста, обратите внимание, что это делает работу с точки зрения, что она находит строку {{STRING_PATTERN}} идентификатор и обновляет его с динамически созданного текста/кода - это просто не фактически совершая эти изменения, что является проблемой.

#!/usr/bin/env bash 

# Echo out text to ensure pre-commit is running 
echo "pre-commit working" 

# Get the current branch name 
function git_branch { 
    git rev-parse --abbrev-ref HEAD 
} 

# Set branch variable to current branch 
branch=$(git_branch) 

# Define the string/pattern marker to search for 
# This pattern/string serves as a marker that 
# gets replaced with the dynamically created text/code 
id="{{STRING_PATTERN}}" 

# Dynamically create text/code 
# Inject the $branch variable into the correct location of the text 
updated_text="Example text containing that is being added to the $branch branch" 

# Find the string/pattern and replace it with the text/code 
# Then replace it with the build status image 
sed -i '' -e "s%{{STRING_PATTERN}}%$updated_text%g" README.md 

ответ

0

Вы должны сделать также git add в предварительной фиксации крюк, чтобы добавить изменения в репозиторий.

+0

Когда вы говорите, добавьте 'git add', вы имеете в виду, что он должен быть добавлен в конце скрипта? Итак, после запуска кода кода sed? Кроме того, это не значит, что мне также нужно будет повторно запустить git commit? – corey

+0

Да, точно, 'git add' в конце скрипта –