我们组织中有很多团队项目。
我的目标是拥有一个核心团队项目,让我们称之为$/Core
,其中包含一个$/Core/Scripts
文件夹,所有常见的构建/部署/等脚本都将存在于该文件夹中:
$/Core
└───Scripts
├───build
│ build_functions.ps1
│ build_tasks.ps1
│ run_build.ps1
│
└───deploy
deploy_functions.ps1
deploy_functions_configuration.ps1
deploy_functions_eventlog.ps1
deploy_functions_web.ps1
我希望能够“分享”这个常见的主干到我们每个团队项目中:
$/Foo
└───Scripts
$/Bar
└───Scripts
$/WallaWalla
└───Scripts
$/Cucamonga
└───Scripts
我正在考虑通过分支实现这一点。这些是我们的前提:
$/Core/Scripts
中继的内容始终优先于所有分支。$/Core/Scripts
位置,并合并到所有分支。Source Control Explorer为我提供了两个选项:
这将允许我选择一个目标:
但我也看到这个选项可用。我可以选择所需的目标文件夹之一,使其成为分支。
最后,我的目标$/Target/Scripts
文件夹如下所示:
答案 0 :(得分:3)
我建议在这种情况下根本不使用分支。
将Core \ Scripts文件夹保留为在共享脚本上进行开发的位置。然后只需将脚本文件夹复制到需要使用它的每个项目中。由于您只对一个地方(Core)中的脚本进行了更改,因此不需要分支/合并功能,简单的副本就可以了。如果要将最新版本的脚本拉入项目,只需重新复制Scripts文件夹即可。
分支到每个项目将完成同样的事情,但是有一个很大的缺点(并没有明显的好处,而不是一个简单的副本)。您不能在分支机构内拥有分支机构。而且我在某种程度上假设您可能希望在Project Foo中有多个分支(例如MAIN,DEV,HOTFIX等)。如果Project Foo将Scripts作为其中的分支,则严重限制了Foo的分支选项。