3

バージョン管理システムとして git を使用し、コード レビューを行うために Gerrit サイトをセットアップしました。次のことを行うフックを作成したいと思います。

  • 管理者が [送信] ボタンをクリックすると、ファイル ( version.txt ) が変更されます。
  • スクリプトはファイルを開く必要があります。
  • 次のテキストを見つけます (ID が変わる可能性があります)。

    #version Change-Id: Ie1411d50f6beb885bc3d3b7d8c587635e1446c18

  • Change-Id を新しいパッチの Change-Id に置き換えます。

  • したがって、マージされるパッチに がある場合、スクリプトの実行後Change-Id: I1c25f7b967084008b69a6a8aefa6e3bb32967b82version.txtファイルに次の文字列が含まれている必要があります。

    #version Change-Id: I1c25f7b967084008b69a6a8aefa6e3bb32967b82

  • 次に、フックは新しいコミットを作成し (ファイルの 1 つに変更があったため)、この最後のコミットを master にプッシュする必要があります。

これは、変更マージされたフックを使用して可能になると思います。私は正しいですか?

前もって感謝します。

4

2 に答える 2

1

このようなもの:

#!/bin/sh

# See link below for actual command line format
# you may need to make the argument parsing more robust
CHANGE_ID=$2

git clone ${GIT_DIR} /tmp/repo-${CHANGE_ID}
echo "#version Change-Id: ${CHANGE_ID}" > /tmp/repo-${CHANGE_ID}/version.txt
GIT_DIR=/tmp/repo-${CHANGE_ID}/
cd /tmp/repo-${CHANGE_ID}/
git add /tmp/repo-${CHANGE_ID}/version.txt
git commit -m'Auto-updated version'
git push origin master
rm -rf /tmp/repo-${CHANGE_ID}/

http://gerrit-documentation.googlecode.com/svn/Documentation/2.2.2/config-hooks.html#_change_merged

原則として、私はこのアプローチのファンではなく、途中で行う方がよいと思います (たとえば、git コマンドを使用してリビジョン ハッシュを抽出し、そこから version.txt ファイル)。しかし、このようなものはあなたを正しい方向に導くはずです. これはテストされていませんが、動作するはずです。

于 2012-03-16T21:37:28.643 に答える
0

逆にやったほうがいいですよ~

コミットに対して「検証されていない」変更を行う代わりに、Gerrit の背後で、そのコミットにgit タグ
を 付けます。

詳細については、Git - タグ付けを参照してください。

于 2017-06-15T06:48:05.247 に答える