Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 源代码管理-开源项目_Visual Studio_Svn_Version Control_Open Source - Fatal编程技术网

Visual studio 源代码管理-开源项目

Visual studio 源代码管理-开源项目,visual-studio,svn,version-control,open-source,Visual Studio,Svn,Version Control,Open Source,我遇到了一个常见的两难境地 很多时候,我们公司依靠使用开源库来完成工作,但有时我们不得不修改它们以使其在不同的平台上运行,修复bug,等等 我们结合使用subversion:TortoiseSVN和AnkhSVN 以下场景是否有办法与SVN一起使用: 开发者将开源项目中的源代码添加到subversion中(通常通过导出,具体取决于他们使用的源代码管理) 开发人员对开放源代码进行了一些更改 开源项目创建者自己做了一些改进和bug修复 我们如何将开源项目中的更改合并到subversion中 如果

我遇到了一个常见的两难境地

很多时候,我们公司依靠使用开源库来完成工作,但有时我们不得不修改它们以使其在不同的平台上运行,修复bug,等等

我们结合使用subversion:TortoiseSVN和AnkhSVN

以下场景是否有办法与SVN一起使用:

  • 开发者将开源项目中的源代码添加到subversion中(通常通过导出,具体取决于他们使用的源代码管理)
  • 开发人员对开放源代码进行了一些更改
  • 开源项目创建者自己做了一些改进和bug修复
  • 我们如何将开源项目中的更改合并到subversion中

如果SVN不能做到这一点,有没有更好的源代码控制选项?如果可能的话,我们更希望使用Visual Studio集成。

Subversion不是合适的工具。您正在寻找的是一个分布式版本控制系统,这基本上意味着您可以在存储库之间拉取和推送,而没有中央存储库

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

另外请注意:您不直接将更改贡献给项目有什么原因吗?(特别是如果项目是根据GPL或LPGL之类的许可证授权的,这会迫使您根据适当的许可证向公众发布修改后的源代码,而许多项目都是这样)。这似乎是一个伟大的方式来回馈那些免费给你代码的人


下面的问题是针对Git+Visual Studio的:

Subversion当然可以做到这一点。这种事情发生在分布式VCS出现之前。请参阅Subversion手册中的部分

引述:

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


这两个都有Visual Studio集成吗?@Jonathan.Peppers我相信有。我是linux用户,所以我不完全知道。我发现了一个给你答案的SO问题,并在我给你的答案上贴了一个链接。+1表示向上游推进。这是可靠地降低开源依赖项维护成本的唯一方法。认为Subversion不是正确的工具是完全错误的。在Subversion中创建一个供应商分支(正如@Peter所指出的)是一个完全合理且可维护的解决方案。我甚至不确定,如果没有供应商分支策略,DVCS是否会使问题更易于管理。我们通过在svn存储库中分支供应商代码,应用补丁,然后将任何后续供应商更新合并到我们的补丁分支中来处理这一问题。我不同意subversion是一个错误的工具。请确保我的回答正确:通过“svn copy”从开源项目创建一个分支,然后合并到我们的主分支中。稍后,我将再次使用“svncopy”更新开源项目中的分支,并再次合并。听起来很简单。我将尝试一下,但我想知道其他源代码管理选项是否会更好。我知道有些DVC可以比subversion更好地合并(冲突更少),因为它们保留了关于每个变更集的更多信息。@Jonathan.Peppers任何DVC解决方案都会更好,因为它将保留一个有向无环的变更图,将您的变更和开源上游变更分开,然后轻松地将它们合并在一起(而不是试图将二者挤在一起,产生不应该存在的冲突)。此外,该模型可以轻松地支持直接与两个上游分支协作的能力。@Jonathan.Peppers:不,您不能从不同的存储库“svn复制”。您可以从下载(或签出)的稳定版本创建供应商分支源。然后将它们导入到您自己的SVN中。(我同意DVCS更好,因为它允许您将更改从远程存储库直接拉入供应商分支,包括完整的历史记录。在SVN中,您没有完整的历史记录,您必须手动执行“拉入”操作)