在我的工作中,我们有许多单独的 TFS 项目,它们组合在一起形成了我们的 Visual Studio 解决方案。维护这些单独的 TFS 项目,以便我们可以跨多个解决方案重用代码。诚然,这是一个坏主意,因为现在当我们必须分支时,我们必须单独分支每个 TFS 项目(我们甚至编写了一个应用程序来执行此操作)。我们最终得到一个如下所示的项目结构:
$/Production/[superproject]/MAIN
$/Production/[superproject]/dev/[branch]
$/Production/[dependency1]/MAIN
$/Production/[dependency1]/dev/[branch/
其中 [superproject] 在解决方案中需要 [dependency1]。我们最终将所有这些项目映射到同一个工作区。
我想使用 Git-TFS 以便在我的日常开发中使用 Git。到目前为止,我发现做到这一点的最好方法是为每个 TFS 项目拥有一个带有子模块的“主”git repo。这样我可以使用git submodule foreach
.
不幸的是,我们关于签入的政策是为一项任务设置一个变更集,即使该变更集跨越多个 TFS 项目。如果我的所有更改都被限制在一个 TFS 项目(即一个 git 子模块)中,这很好,但是当我为一项任务跨多个子模块进行更改时,我不知道该怎么做。我目前的计划是搁置每个人使用git submodule foreach 'git-tfs shelve mytask_$name'
,然后将每个人拉入我的 TFS 工作区,从那里签入。这仅适用于我已经映射的任何 TFS 分支,这首先破坏了使用 Git 的一半目的。
有没有人遇到过类似的问题?是否已经有任何解决方案,可能使用 TFS 命令行和脚本?如果没有,我想我会花一些时间为 git-tfs 创建一个拉取请求。如果问题在那里解决,我愿意使用 Git-TF。
谢谢大家。