1

master最後のリリース以降にブランチに対して行われたすべてのコミットを一覧表示する必要があります。を使用してこの機能を実装する必要がありますpygit2。しかし、ここでは状況が少し異なります。

ブランチへのコミットをmaster使用して、ブランチでリリースが行われます。素朴なアプローチは、 last のを見つけて、から this まで履歴を下に移動することです。しかし、これは私の場合はブランチにするのではなく、ブランチにすることです。興味深いことに、ブランチを実行すると、次のように正しい出力が得られます。tagothershatagged commitHEADshatagged commitmasterothermaster

$ git log sometag..HEAD --oneline

ここで、ブランチsometagで行われたコミットを指します。したがって、ブランチotherで行われたすべてのコミットのリストがある場合、これをプログラムで実装する方法を知りたいです。master

私の頭に浮かぶ解決策の 1 つは、コミット リストの を見つけてフィルター処理することですtimestamptagged commitこれをどのようgit logに行っていますか、何かアイデアはありますか?

4

1 に答える 1

4

これが役立つと思います: まず、(コミット イテレータ)Repository.walk()を取得するために使用し、次にそれを変更して ( ) から到達可能なすべてのコミットを除外します。WalkerWalker.hide()sometag

from pygit2 import Repository
from pygit2 import GIT_SORT_TIME

repo = Repository('.git')
start = repo.revparse_single('refs/heads/master')
release_tag = repo.revparse_single('refs/tags/sometag')

walker = repo.walk(start.id, GIT_SORT_TIME)
walker.hide(release_tag.id)
for commit in walker:
    print commit.message
于 2016-07-13T17:11:48.677 に答える