1

コミット メッセージを Twitter に投稿するための git post-commit フックを作成しています。サーバーにフックを設定しました。これは、 を呼び出したときにのみ実行されることを意味しますgit push

Python から git とやり取りするために、私はGitPythonを使用しています。私のコードではrepo.head.commit.message、最新のコミット メッセージを取得するために使用しています。つまり、複数のコミットをプッシュすると、最後のコミットのみが取得されます。

これは私がこれまでに持っているものです。

class GITHelper:
    "This class interacts with GIT for us"
    def __init__(self, path):
        repo = git.Repo(path)
        headcommit = repo.head.commit
        self.message = headcommit.message
        self.author = headcommit.author.name

プッシュからすべてのコミットを取得するにはどうすればよいですか? または、プッシュされたコミットの数を取得するにはどうすればよいですか?

repo.iter_commits('master', max_count=5)好きなだけコミットを取得できるので、コミットの数がわかっていればそれを使用できます。

編集:私はテストしていましたが、実行するgit pushと、このフックはプッシュしたばかりのコミットではなく、最後のコミットからヘッドを取得するようです。サーバーにプッシュしたばかりのコミットからメッセージを取得するコミット後フックを作成するにはどうすればよいですか?

EDIT 2 :私は実際に post-commit フックではなく update フックを使用していますが、それはサーバーで使用する正しいフックですか?

4

1 に答える 1

3

githooksのドキュメントには次のように書かれています。

The hook executes once for each ref to be updated, and takes three parameters:
  - the name of the ref being updated,
  - the old object name stored in the ref,
  - and the new objectname to be stored in the ref.

したがって、スクリプトが取得する引数を確認してください。新しい参照も取得する必要があります。そうすれば、古い参照と新しい参照の間のコミットを把握できます。シェル スクリプトの場合は、次のようにすることができます。

git log --oneline $oldRef..$newRef
于 2011-06-09T03:29:01.480 に答える