今天我们在本地TFS服务器上拥有所有源代码。现在我们希望一些外部方可以访问部分代码。因此,我们考虑的可能性是将此代码克隆到他们可以访问的外部GIT服务器。
我查看了git-tfs。但是如果我理解正确的话,当它们发生任何变化时,你必须手动同步GIT和TFS。有没有办法克隆自动同步的代码。
如果TFS有变化,它会自动同步到GIT,反之亦然。如果我使用最新代码
,应该没有不确定性答案 0 :(得分:10)
没有办法同步2个存储库100%自动地与您选择的任何解决方案同步发展(为了实现自动同步,您必须立即实现同步或者能够阻止推入git或在TFVC中检入时其中一个团队开始同步)。
因此,您将始终存在冲突,您应该手动合并。您可以找到一个工作流程来阻止其中的大多数但从未解决所有案例,这些剩余的案例将很难解决......
无论如何,你几乎可以实现你想要的东西(这取决于你的期望:你需要分支支持 - 硬 - ,......)和git-tfs(我已经包含在git-tfs中了所有需要做的事情)那但从未在生产中使用过)但这有点棘手。
您需要在bare
存储库中克隆您的TFS存储库:
git tfs clone https://server/tfs/TeamCollection $/project/trunk --bare --with-branches
那么你需要在这个post-receive
存储库的bare
钩子中写一些类似的东西(我不记得它是否有效):
branch=$(git rev-parse --symbolic --abbrev-ref $1)
if [ "master" == "$branch" ]; then
branch="default"
fi
git tfs rcheckin --bare -i $branch
有了这个,每次有人推入git存储库时,都会在TFS中签入提交。
为了更加舒适(否则他们在尝试推送时总会遇到无聊的冲突),您可以将git存储库与TFS服务器同步,并使用命令执行计划任务(这样他们就会更快地了解新的提交) :
git tfs fetch --all
注意:我不记得是否可以在bare
存储库中使用此命令(现在我想到了,我不这么认为)。否则,您必须为每个现有分支使用git tfs fetch -b=myGitBranch -i tfsRemote
:(
但我确信他们永远无法使用尚未在tfs中创建的分支:( git-tfs工具确实无法从git历史记录中自动创建TFVC分支。技术上,这是可以实现的我认为,但从未开发过(因为git-tfs更像是逃避TFVC的工具,而不是检查你的开发工具......)
其他一些东西可能很难或不可能......
我希望它会有所帮助。
PS:
答案 1 :(得分:3)
自问该问题以来(2013年第4季度),主要的变化是TFS 2015/2017现在对Git存储库有官方支持。请参阅" Git and TFS"。
所以合理的方法是:
这将为您留下一系列TFS项目,每个项目都可以向特定团队开放,确保其他贡献者只能看到/访问特定部分。
随时;从主要的代码回购,你可以update those submodules with:
git submodule update --recursive --remote --rebase
(然后测试,添加,提交和推送:您的主要Git仓库将引用这些子模块的最新发展)
另外,考虑到l--''''''---------''''''''''''
' previous question,这对于包含太多文件的单个仓库有帮助。
虽然如此,there will be soon(ish) GVFS。
l--''''''---------''''''''''''
提到的替代方法是:
我个人希望能够使用GIT进行自己的更改,我愿意 在GIT中有多个变更集,然后我将它们合并为一个,和 然后将该变更集转换为传统的TFS变更集并进行检查 在那个方面,我每个TFS项目只有1个签到
如果您不介意丢失中间Git提交历史记录,那么您可以将它们集中到一个TFS变更集中,这是可能的。