2015-09-11 8 views
6

を取得します。GitPython:ローカルgitのは、私は、タグの名前を取得したい、チェックアウトしたタグにある場合、私は図書館<a href="http://gitpython.readthedocs.org/en/stable/">gitpython</a></p> <p>を使用し、現在のタグ(デタッチ頭に)

repo=git.Repo(repo_dir) 
repo.tag # --> tags. But which is the current? 

gitツールで認識されます。例

[email protected]> git status 
HEAD detached at release/1.2.3 

gitpythonで文字列 "release/1.2.3"を取得したいとします。

答えて

6

あなたがタグを反復し、各タグを比較することができ、コミット現在のヘッドをコミット:

next((tag for tag in repo.tags if tag.commit == repo.head.commit), None) 
+1

あなたのコードが何をしているのか、なぜそれが問題を解決するのかについての詳しい説明を追加するには、投稿を編集することを検討してください。ほとんどの場合、コードが含まれていても(たとえそれが機能していても)、OPが問題を理解するのに役立たない場合があります。 – SuperBiasedMan

+0

@AndreyTありがとうございます。 'next()'トリックは私には新しいものでした。最初の一致またはNoneを返します。他の人々のために: 'next(iter([1,2,3])、None) - > 1' – guettli

4

GitCmddescribeを呼び出すと、お望みのものを手に入れることができるようです。

g = Git(git_dir) 
rval = g.describe() 

この情報に直接アクセスする方法はありません。

+2

または[ 'repo.git.describe()']と(https://github.com/gitpython-developers/GitPython/issues/136)。 –

関連する問題