GitPython 中的`git ls-remote`
`git ls-remote` in GitPython
在我的 python 程序中,我想检查我的遥控器上是否存在引用。我可以使用 git ls-remote
检查遥控器,但我想避免自己解析输出。
我在 GitPython
中找到了 git.remote.Remote
,但它仅指本地存储库的远程。
GitPython
是否有一个等效的命令允许我在不克隆存储库的情况下查看远程引用?
GitPython
不支持ls-remote
,但是可以使用git.cmd
到运行任何git命令,然后手动解析输出:
import git
def lsremote(url):
remote_refs = {}
g = git.cmd.Git()
for ref in g.ls_remote(url).split('\n'):
hash_ref_list = ref.split('\t')
remote_refs[hash_ref_list[1]] = hash_ref_list[0]
return remote_refs
示例:
In [3]: refs = lsremote('https://github.com/gitpython-developers/GitPython.git')
In [4]: refs['HEAD']
Out[4]: u'9f4af7c6db25c5bbec7fdc8dfc0ea6803350d94c'
这也有效。
from git import Repo
repo = Repo('path to source')
repo.git.ls_remote("--heads", "origin", "release/10.0.0.2")
输出将类似于:
'9e5ca005c2d320a4904e88e25df1efa6fb26b396\trefs/heads/release/10.0.0.2'
没有克隆的案例:
import git
url = "git://github.com/git/git.git"
g = git.cmd.Git()
g.ls_remote("--tags", url).split('\n')
我为你留下了输出解析,但我有一些例子
>>> test = g.ls_remote("--tags", url).split('\n')
>>> print(test[0])
d5aef6e4d58cfe1549adef5b436f3ace984e8c86 refs/tags/gitgui-0.10.0
在我的 python 程序中,我想检查我的遥控器上是否存在引用。我可以使用 git ls-remote
检查遥控器,但我想避免自己解析输出。
我在 GitPython
中找到了 git.remote.Remote
,但它仅指本地存储库的远程。
GitPython
是否有一个等效的命令允许我在不克隆存储库的情况下查看远程引用?
GitPython
不支持ls-remote
,但是可以使用git.cmd
到运行任何git命令,然后手动解析输出:
import git
def lsremote(url):
remote_refs = {}
g = git.cmd.Git()
for ref in g.ls_remote(url).split('\n'):
hash_ref_list = ref.split('\t')
remote_refs[hash_ref_list[1]] = hash_ref_list[0]
return remote_refs
示例:
In [3]: refs = lsremote('https://github.com/gitpython-developers/GitPython.git')
In [4]: refs['HEAD']
Out[4]: u'9f4af7c6db25c5bbec7fdc8dfc0ea6803350d94c'
这也有效。
from git import Repo
repo = Repo('path to source')
repo.git.ls_remote("--heads", "origin", "release/10.0.0.2")
输出将类似于:
'9e5ca005c2d320a4904e88e25df1efa6fb26b396\trefs/heads/release/10.0.0.2'
没有克隆的案例:
import git
url = "git://github.com/git/git.git"
g = git.cmd.Git()
g.ls_remote("--tags", url).split('\n')
我为你留下了输出解析,但我有一些例子
>>> test = g.ls_remote("--tags", url).split('\n')
>>> print(test[0])
d5aef6e4d58cfe1549adef5b436f3ace984e8c86 refs/tags/gitgui-0.10.0