1

ソースのバージョン番号をインクリメントする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

このような自動変更はお勧めしません。しかし、技術的にはこれはとにかく可能であるはずです。Ubuntu9.10でgit1.6.3.3を使用しています。

4

1 に答える 1

1

pre-commitスクリプトは、ファイルの作業ツリーコピーを変更しますが、インデックスのバージョンは変更しません。後者は実際にコミットされるものです。

あなたはgit addそれを変更した後にファイルをする必要があります。ただし、これを行うと、作業ツリーから一部の変更をコミットしようとしている場合でも、そのファイルへのすべての変更がすべてのコミットに含まれることになります。

于 2012-11-14T08:45:56.240 に答える