Git镜像问题

时间:2018-06-21 22:05:18

标签: git tfs azure-devops

我的拓扑:

W = Workstation w/VS.2017
R1 = Local TFS repo
R2 = Remote VSTS repo

出于here讨论的原因,我正在运行一个TFS释放步骤,每次将W同步到R1时,都会将R1镜像到R2。

(仅供参考,其他Q&A的Invoke-git脚本在将STDERR发送到文本文件时会导致未指定的Git错误,因此我决定停止使用它。我选择配置TFS释放步骤以确保在STDERR上不会失败。)

这是从W到R1同步后从R1到R2镜像时TFS释放步骤的输出:

POST git-receive-pack (744 bytes)
Pushing to https://Personal%20Access%20Token:********@customer.visualstudio.com/Applications/_git/Application
To https://customer.visualstudio.com/Applications/_git/Application
  = [up to date]      master -> master
  = [up to date]      origin/develop -> origin/develop
  - [deleted]         Application/master
    c13bdc5..81ddbe0  origin/master -> origin/master
updating local tracking ref 'refs/remotes/Application/master'

此操作忽略了R2上R1上的一些提交:

R1

Local TFS repo

R2

Remote VSTS repo

这是从W到R2的测试镜:

D:\Dev\Application>git push --mirror Application
Counting objects: 1, done.
Writing objects: 100% (1/1), 235 bytes | 235.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Analyzing objects... (1/1) (187 ms)
remote: Storing packfile... done (95 ms)
remote: Storing index... done (44 ms)
To https://customer.visualstudio.com/Applications/_git/Application
   67e6c4f..81ddbe0  master -> master
 * [new branch]      develop -> develop
 * [new branch]      Application/develop -> Application/develop
 * [new branch]      Application/master -> Application/master

此测试成功将所有提交发送到R2。

这是从T1到R2的另一个TFS生成的镜像,在从W到R2的测试镜像之后:

POST git-receive-pack (885 bytes)
Pushing to https://Personal%20Access%20Token:********@customer.visualstudio.com/Applications/_git/Application
To https://customer.visualstudio.com/Applications/_git/Application
 = [up to date]      origin/develop -> origin/develop
 - [deleted]         develop
 + 81ddbe0...67e6c4f master -> master (forced update)
 - [deleted]         Application/develop
 + c13bdc5...67e6c4f Application/master -> Application/master (forced update)
   81ddbe0..3329b73  origin/master -> origin/master
updating local tracking ref 'refs/remotes/Application/develop'
updating local tracking ref 'refs/remotes/Application/master'

在所有这些之后,当我手动从R1到R2运行镜像时,我得到的是:

D:\Agent\_work\37\s>git push --mirror Application
Everything up-to-date

但是R2显然不是最新的。它丢失了67e6c4f3之后的所有提交。

我在这里做错了什么?如何使R2始终是R1的精确副本?

0 个答案:

没有答案