Version control 被多个网站引用的类库+;版本控制分支
考虑以下事项: 我有一个由多个项目组成的解决方案:Version control 被多个网站引用的类库+;版本控制分支,version-control,tfs,architecture,Version Control,Tfs,Architecture,考虑以下事项: 我有一个由多个项目组成的解决方案: DAL(类库) 业务逻辑(类库) 网站1(Web应用程序) 网站2(Web应用程序) Website1和Website2都共享对BusinessLogic的引用,后者反过来又引用DAL 由于这些只是网站,因此我不需要跟踪多个版本,但我确实希望有以下分支: 树干 生产 主干是我进行所有开发工作的地方,在所有工作都经过测试并准备就绪后,当网站实际部署到生产服务器时,我会从主干合并到生产服务器。这使我可以搁置当前的工作,检查生产分支,解决部署
- DAL(类库)
- 业务逻辑(类库)
- 网站1(Web应用程序)
- 网站2(Web应用程序)
- 树干
- 生产
这里的正确方法是什么?有很多正确的方法,这取决于什么对你来说是正确的。当然,每种方法都有利弊 如果需要源级别的依赖项,请为每个站点创建几个生产分支,每个分支包括外部分支:
- /地点1/生产
- 网站内容
- BusinessLogic[外部]->/BusinessLogic/v1Branch
- /地点2/生产
- 网站内容
- BusinessLogic[外部]->/BusinessLogic/v1Branch
- /BusinessLogic/v1Branch(来自DevBranch)
- /BusinessLogic/DevBranch
- 更改
,测试它业务逻辑/DevBranch
- 将it分支为
BusinessLogic/v2Branch
- 更新
的外部指向Site2/Production
BusinessLogic/v2Branch
- 构建站点2、测试和部署
- /地点1/生产
- 网站内容
- BusinessLogic[外部]->/BusinessLogic/v1Branch
- /Site2/制作
- 网站内容
- BusinessLogic[外部]->/BusinessLogic/v2Branch
- /BusinessLogic/v1Branch(来自DevBranch)
- /BusinessLogic/v2Branch(来自DevBranch)
- /BusinessLogic/DevBranch
如果您更喜欢源代码管理之外的二进制依赖项,那么可以利用本地nuget存储库。它的工作原理与官方版本相同:您创建一个新版本,发布到nuget,然后从站点、构建和部署引用它。这需要额外的设置和维护工作,更适合大型项目。您不应该使用代码共享或代码升级模式。它降低了质量并迫使返工。相反,您可以创建一个发布管道,为您的业务和Dal层创建一个包,并使用web应用程序中打包的包 最好的方法是使用构建服务器并为业务层使用的DAL创建NuGet包。这反过来又被打包成一个NuGet包,您的网站可以使用它 然后,将业务层更改添加到网站中的工作流是:
干净简单。没有分支就是好的分支。使用分支来解决这个问题是功能失调的,会导致代码质量的长期降低和大量的返工。@MrHinsh“这需要一定程度的开发文化和一定数量的svn管理。”如果您仔细阅读的话。当然会的。但一般来说,代码质量取决于编码器。有些人甚至会破坏《金色密码》的降落伞。在使用只读供应商分支时,我没有发现任何问题。此外,从技术上讲,它只是另一种形式的相同代码。正如您可能还注意到的,我也建议通过nuget进行二进制分发。它带来了与非二进制相同数量的问题,问题本身也不同。如果你愿意的话,这只是源代码对二进制的圣战。代码共享从来都不是解决这个问题的正确方法。您将得到多个不同的dll,其中包含相同的编译代码。这是错误的,永远不应该鼓励。