2017-04-23 24 views
1

我想知道有什么方法可以将Git存储库与VSTS集成的Git进行同步。例如,假设我有一个Git仓库“https://github.com/test/TestProject”,并且我已经在VSTS中导入了这个Git仓库。现在我的VSTS Git存储库URL说“https://testuser.visualstudio.com/test/_git/TestProject”。与GTS集成的VSTS同步Git存储库

我想同步这两件事情,并始终保持更新。就像如果我在直接Git仓库中进行任何更改,它应该反映在VSTS Git仓库中。即使它是通过任何构建定义或任何拉取请求,它的罚款。

有人可以帮助我吗?

+0

你有没有得到帮助你来解决这个问题的答案吗?如果是,请标记它。它会帮助其他有类似问题的人。 –

回答

1

也可以通过创建一个构建定义来从GitHub获取更改并将更改推送到VSTS Git来实现。以下是供您参考的步骤:

  1. Deploy your own build agent然后生成一个SSH密钥。
  2. 为您的VSTS Git Repo启用SSH Authentication,这样您就不需要在构建定义中输入用户名和密码。如果要使用替代凭据,可以跳过步骤1和步骤2.
  3. 创建构建定义并选择GitHub作为存储库。
  4. 在构建定义中启用“持续集成(CI)”选项,以便在GitHub中提交新变更后立即触发构建。
  5. 在您的构建定义中添加一个PowerShell脚本,将VSTS Git添加为远程并将更改推送给它。

现在,当您在GitHub中提交更改时,您应该看到构建已经触发,然后构建将从GitHub中提取更改并将其推送到VSTS Git。 enter image description here PowerShell代码,供大家参考:

git remote add vstsg ssh://[email protected]:22/VSTSProjectName/_git/VSTSGitRepoName 2>&1 | Write-Host 

git checkout -b master 2>&1 | Write-Host 

git push vstsg master 2>&1 | Write-Host 
+0

这似乎比我的答案更精确。 +1 – VonC

+0

嗨,你可以请帮忙解释如何实现这个vise vera,就像从VSTS git repo同步到github repo一样... – Jawad

+0

@Jawad在步骤3中,选择VSTS Git作为存储库并在powershell脚本中,将更改推送到GitHub。 –

0

您需要有webhook (ion GitHub)service hook(在Visual Studio上)才能接收推送事件。

您还需要编写并安装一个侦听器,该侦听器将侦听由Web /服务钩子发送的推送事件作为JSON有效内容(请参阅GitHub one,Visual Studio one)。
Visual Studio integrates with external services as well,它们有自己的监听器。

在从一个远程回购站接收到推送事件后,您可以从中取出并推送到另一个。但请注意,同一分支上的任何并发开发可能会导致在从一个回购库推向另一个时发生冲突。当每个回购使用不同的分支机构时,这种方法很有效。