我遇到了一个共同的困境。
很多时候,我们公司依赖于使用开源库来完成工作,但偶尔我们必须修改它们以使其在不同平台上运行,修复错误等。
我们使用颠覆的组合:TortoiseSVN和AnkhSVN。
以下方案是否可以使用SVN:
如果SVN无法做到这一点,我们有更好的源控制选项吗?如果可能的话,我们更喜欢使用Visual Studio集成。
答案 0 :(得分:5)
Subversion当然可以做到这一点。这种东西在分布式VCS存在之前就已经发生了。请参阅Subversion书籍中Vendor Branches的Chapter 4. Branching and Merging部分。
引用:
管理供应商分支通常是这样的:首先,您创建一个顶级目录(例如/ vendor)来保存供应商分支。然后,将第三方代码导入该顶级目录的子目录中。然后,将该子目录复制到适当位置的主开发分支(例如/ trunk)。您始终在主开发分支中进行本地更改。对于您要跟踪的每个新版本的代码,您可以将其引入供应商分支并将更改合并到/ trunk中,从而解决本地更改与上游更改之间发生的任何冲突。
答案 1 :(得分:3)
Subversion不是正确的工具。你在寻找什么需要一个分布式版本控制系统,这基本上意味着你可以拉动和推送存储库,而且没有中央存储库。
查看Git和Mercurial以获取更多信息。如果上游项目使用Subversion,您可以使用git-svn作为桥梁 - 您可以创建自己的存储库,更改内容,并且仍然可以将svn合并到其中以及推送到您自己的“上游/中央”git存储库。
另请注意:您是否有理由不直接向项目提供更改? (特别是如果项目是在GPL或LPGL之类的许可下,迫使您根据合适的许可证向公众发布修改后的源代码,许多项目都是如此)。这似乎是回馈那些免费提供代码的人的好方法......
以下问题涉及Git + Visual Studio:Using Git with Visual Studio