当有东西要获取/拉取时,gitPython返回的FetchInfo对象与没有东西时的不同?

2024-09-30 20:35:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试评估远程存储库中是否有更改,我可能需要在某段代码之前提取这些更改

为此,我通过fetch()FetchInfo对象提取到远程原点:

>>> import git
>>> my_repo = git.Repo.init(my_dir)
>>> repo_fetch = my_repo.remotes.origin.fetch()[0]
>>> repo_fetch
<git.remote.FetchInfo object at 0x10192c650>

然而,我无法在the documentation中清楚地看到当有东西要取/拉时与没有东西时的区别

我知道pull()输出一个str变量,其中包含Already up to date.当本地回购是最新的,但我不想拉,我只想取

当我知道远程回购中不存在任何变化时,我发现其属性存在一些差异:

>>> repo_fetch.ref 
<git.RemoteReference "refs/remotes/origin/master">
>>> repo_fetch.flags
4
>>> repo_fetch.note
''
>>> repo_fetch.old_commit
>>> repo_fetch.remote_ref_path
'master    '

发生变化时:

>>> repo_fetch.ref 
<git.RemoteReference "refs/remotes/origin/master">
>>> repo_fetch.flags
64
>>> repo_fetch.note
''
>>> repo_fetch.old_commit
<git.Commit "[some_string]">
>>> repo_fetch.remote_ref_path
' '

Tags: gitmasterref远程remotemyrepofetch
1条回答
网友
1楼 · 发布于 2024-09-30 20:35:05

关键是flags属性,在the documentation中不是非常直观或清晰地显示:

ERROR = 128
FAST_FORWARD = 64
FORCED_UPDATE = 32
HEAD_UPTODATE = 4
NEW_HEAD = 2
NEW_TAG = 1
REJECTED = 16
TAG_UPDATE = 8

就问题而言,只要标志不等于4HEAD_UPTODATE),我就需要采取不同于本地和远程存储库相同的操作

相关问题 更多 >