如何在开发代码时使用Internet Subversion存储库?

时间:2009-06-25 20:54:34

标签: svn synchronization codeplex repository

我已经将自己描绘成了使用CodePlex的Subversion项目的问题 - 为此我请求帮助here。我有一个本地存储库,CodePlex有它的项目的Internet存储库,两者不混合: - (。

但是我亲爱的离去的父亲曾经告诉我,一个聪明人和一个聪明人之间的区别在于智者没有进入陷阱,一个聪明的人找到了出路。换句话说:我一定是做错了。所以:

假设你是一群开发者。您想要开始修改Internet上的Subversion控制项目。您希望在本地处理它,根据您的需要进行更改。您想要本地版本控制。您希望控制哪些Internet更改可以接受到您的存储库 - 那些相关且重要且不会产生噪音的更改。您希望将一些本地更改提交到Internet - 您确定这些更改是稳定的,并且与整个社区相关。

这种操作方法在我看来是常识,但后来我从未参与过开源项目。所以: 这确实是一种常见的操作方法 2.如何使用Subversion进行操作而不会遇到麻烦?

6 个答案:

答案 0 :(得分:1)

Subversion本质上是一个集中的修订控制系统。根据您的描述,您似乎想要一个分布式版本控制系统。在这样的系统中,人们可以在本地开发,然后在彼此之间交换他们的工作单元(称为变更集)。分布式版本控制系统非常支持合并分支以支持此功能。

我自己使用Mercurial并且会推荐它用于Subversion用户,因为它的许多命令与Subversion中的命令类似。此类别中的其他常用工具包括GitBazaar

答案 1 :(得分:1)

Vendor Branches部分的SVN一书中介绍了从外部源(“供应商丢弃”)吸收的更改到您自己的本地存储库中。

或者,您可以使用merge命令从存储库A中的文件夹中挑选修订,并将这些更改应用于存储库B中文件夹的工作副本。合并命令似乎对此有一些支持(至少在最新版本中)所以它可能很像在本地分支之间合并(减去自动合并跟踪)。

答案 2 :(得分:0)

  

说你是一群人   开发人员。有一个Subversion   在互联网上控制项目你   想要开始修改。你想要   在本地工作,改变它   适合您的需求。你想要本地的   版本控制。你想控制   哪个互联网变更接受   你的存储库 - 那些存储库   相关和重要,不要造成   噪声

您希望能够在本地工作,并在不经过深思熟虑的情况下进行分支或合并。你基本上是在谈论分布式版本控制。 Subversion不支持这一点。您应该使用MercurialGit之类的内容。

答案 3 :(得分:0)

听起来您应该在原始存储库中为代码创建分支。您可以根据需要从主干合并到您的分支,或者反过来。

您的另一个选择是从存储库导出文件并添加到您自己的存储库中。但这只是将来的痛苦。

答案 4 :(得分:0)

使用分布式源代码控制系统(例如git。

)会更容易

然后你可以拥有一个本地git存储库,使用git-svn从公共存储库获取更新,并通过你的特殊调整拥有你自己的本地分支。

你会在github上看到很多这样的项目(使用git扩展subversion-ed OSS项目) - 用于NHibernate,用于Castle项目等。

如果必须坚持使用SVN,则可以使用公共中继上的一组补丁文件管理自己的更改。如果你想从trunk获得更新的东西,用你的更改创建一个补丁,恢复,更新到更新的trunk,然后有选择地应用你的补丁。

答案 5 :(得分:0)

我通常会保留一份我从SVN中删除的副本,其中只包含存储库中的更新代码以及我正在处理并计划提交的代码。

在处理新功能时,我会将整个副本导出到我的计算机上的新副本,然后进行+测试所需的更改。如果我决定要将更改提交回来,我会使用某种合并工具(如果你在Windows上,WinMerge很好),将我的更改合并到我带来的原始SVN更新文件夹中下来。

这使得一切都很整洁,因为我能够相对容易地避免无意中提交代码。我还可以通过制作我的“基本”SVN更新文件夹的新副本来轻松地删除更改。缺点是它使得我不打算一次性提交的多个功能相对不易使用。