源代码管理 - 开源项目

jon*_*ers 5 svn version-control open-source visual-studio

我遇到了一个共同的困境.

很多时候,我们公司依赖于使用开源库来完成工作,但有时我们必须修改它们以使其在不同平台上运行,修复错误等.

我们使用颠覆的组合:TortoiseSVN和AnkhSVN.

以下方案是否有办法与SVN一起使用:

  • Devs将源代码从开源项目添加到我们的subversion中(通常通过导出,取决于他们使用的源控件)
  • Devs对开源代码进行了一些更改
  • 开源项目创建者进行了一些改进和自己的错误修复
  • 我们如何将开源项目的变更合并到我们的颠覆?

如果SVN无法做到这一点,我们有更好的源控制选项吗?如果可能的话,我们更喜欢使用Visual Studio集成.

Pet*_*aný 5

Subversion当然可以做到这一点.这种东西在分布式VCS存在之前就已经发生了.请参阅第4章中的" 供应商分支"部分."Subversion中的分支和合并"一书.

引用:

管理供应商分支通常是这样的:首先,您创建一个顶级目录(例如/ vendor)来保存供应商分支.然后,将第三方代码导入该顶级目录的子目录中.然后,将该子目录复制到适当位置的主开发分支(例如/ trunk).您始终在主开发分支中进行本地更改.对于您要跟踪的每个新版本的代码,您将其带入供应商分支并将更改合并到/ trunk中,从而解决本地更改与上游更改之间发生的任何冲突.


alt*_*ive 3

Subversion 在这里不是合适的工具。您正在寻找的内容需要一个分布式版本控制系统,这基本上意味着您可以跨存储库拉动和推送,并且没有中央存储库。

查看 Git 和 Mercurial 了解更多信息。如果上游项目使用 Subversion,您可以使用 git-svn 作为桥梁 - 您创建自己的存储库,更改内容,并且您仍然可以将 svn 合并到其中以及推送到您自己的“上游/中央”git 存储库。

另请注意:您是否有理由不直接将更改贡献给项目?(特别是如果该项目获得了 GPL 或 LPGL 等许可,这迫使您在适当的许可下向公众发布修改后的源代码,许多项目都是如此)。这似乎是回馈那些免费为您提供代码的人的好方法......

以下问题涉及 Git + Visual Studio:将 Git 与 Visual Studio 结合使用

  • 认为 Subversion 不是正确的工具是完全错误的。在 Subversion 中创建供应商分支(如 @Peter 所示)是一个完全合理且可维护的解决方案。我什至不确定 DVCS 是否能让问题在没有供应商分支策略的情况下更容易管理。 (2认同)
  • 我们通过在 svn 存储库中分支供应商代码、应用补丁,然后将任何后续供应商更新合并到我们已修补的分支中来处理此问题。我不同意颠覆是一个错误的工具。 (2认同)