Intereting Posts
Fatal: невозможно выполнить перемотку вперед, прерывание Изменения теряются, когда несколько разработчиков работают над одним файлом Концепция git tracking и git staging Сокращение для получения diff от последнего N коммит? Рабочий процесс Subversion: сравнение последних и фиксация новых изменений Как иметь несколько «развивающихся» ветвей с потоком git? Какой сервер вы используете для размещения репозитория Git? Как загрузить мои файлы на SVN через Tortoise SVN – нужно сначала обновить рабочую копию Как svn экспортировать с автоматическим созданием относительного каталога / пути? P4 Root и Altroot через Windows и Linux Проблема Subversion с рабочей копией при одной ревизии Невозможно добавить символ «!» В сообщении git commit Папка Java Eclipse с git клонирование проекта github от eclipse Есть ли способ получить количество файлов в репозитории git с новым / измененным / удаленным статусом?

git pre-commit модификации кода применяются после фиксации вместо

Я написал крюк pre-commit, чтобы увеличить номер версии в источнике. Почему изменения применяются после фиксации? Что я могу сделать, чтобы сделать это до фиксации?

#!/bin/sh # Hook to increment version number before checkin REPO_DIR=$(cd `dirname $0`/../.. && pwd) VERS_FILE="${REPO_DIR}/version.php" CUR_DATE=`date -u '+%Y-%m-%d %H:%M:%S'` HOOK=`basename $0` if [ -w ${VERS_FILE} ]; then # increment last digit of version string perl -i -pe 's/(\$version\s?=\s?['\''|"][\d\.]+)(\d+)/"$1".($2+1)/e' "${VERS_FILE}" RV=$? if [ 0 -ne ${RV} ]; then echo "ERROR: Updating version in ${VERS_FILE} failed" exit $RV fi echo "INFO: Increment version in file ${VERS_FILE}" fi echo "Finish $HOOK at $CUR_DATE" exit 0 

Я знаю, что такие автоматические изменения не рекомендуются. Но технически это должно быть возможно в любом случае. Я использую git 1.6.3.3 на Ubuntu 9.10.

Ваш скрипт pre-commit изменяет копию рабочего дерева файла, но не версию в индексе. Последний – это то, что на самом деле происходит.

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