【发布时间】:2021-06-25 12:12:18
【问题描述】:
我有一个脚本可以自动执行我们执行的一些大型拉取请求任务。我要做的一件事是尝试自动同步我们使用的两个分支。我曾经使用令牌来做git fetch,但由于一些政策变化,最近不得不更改它。
所以我现在正在做的是下面。
subprocess.check_call(['git', 'fetch', f'https://{username}:{password}@{repo_url}'], cwd=repo_path)
但是,我注意到当我的本地分支与远程分支不同步时,这并不总是显示。
问题
我的问题是,git fetch 与我使用我的用户名、密码和 repo_url 时有什么不同,导致它在我使用我的用户名和凭据进行提取时不会注意到远程更改?我应该做些什么不同的事情?我应该使用什么来保证我的脚本在远程分支不同步时发出通知?
更多详情
我已经尝试自己编写 git fetch 脚本,它工作得很好,只是它需要我再次输入我的用户名和密码。
subprocess.check_call(['git', 'fetch'], cwd=repo_path)
【问题讨论】:
-
你可以试试凭证管理器吗?
-
我也不想。我们的 IT 部门真的不喜欢存储用户凭据。
-
你可以使用 ssh 和密钥认证吗?
-
确切地说,“并不总是有效”是什么意思?
git fetch调用是否失败?它是否成功并更新了 some 远程跟踪名称,但不是 all 远程跟踪名称?它什么都不做吗?如果有的话,它会产生什么输出?由于check_call确保退出状态为零(否则引发异常),它是在没有异常的情况下结束,还是以异常结束? -
(理想情况下,你应该包括一个复制器,但如果它是一个私人仓库,那显然是相当困难的!)