先进的颠覆技术,我缺少什么?


10

大约9个月前,我开始使用SVN,至少可以说它已经改变了游戏规则。虽然,我仍然感到迷茫。我觉得我还需要利用很多东西来真正加强我的应用程序开发。

例如

我希望能够将任何易失性/重大更改隔离到某种“子存储库”或某些内容中。我发现重大更改妨碍了非常紧急的次要错误修复。如何推送一个简单的更新而不推送不完整或损坏的代码?


3
您可能要考虑对本地分支机构使用hg(您可以将svn与
sgn

哈!您缺少水银。
DexterW 2010年

3
“高级颠覆”听起来像是矛盾之词。如果仅在本地使用Git或Mercurial。
Macneil 2010年

Answers:


7

为了解决您的示例,您可以采用三种方法:

  1. 您可以提交单个文件。如果使用IDE访问存储库,则它很可能具有视图,可以在提交之前选择或取消选择单个文件。在命令行上,键入svn commit file1 path1/file2 path2要提交的文件1,路径1 /文件2和路径2下的所有更改。
  2. 您可以制作不同的工作副本。您可以在标准工作副本中使用大型功能,并获得有关紧急错误的信息。您可以将存储库检出到其他目录,并修复第二个工作副本中的错误。您甚至可以仅检出包含发生错误的组件的子目录。错误修正后,您可以提交第二个工作副本,而无需提交主要功能的工作。编辑:安娜·李尔的答案中也描述了这种方式。
  3. 您为功能上的工作创建一个分支。为此,请使用copy命令。如果您对存储库使用标准布局(具有项目名称的目录以及具有主干,标签和分支的子目录,以及包含项目的主干),则可以使用svn-copy-command如下所示来创建分支:svn copy svn://hostname/projectname/trunk svn://hostname/branches/branch-for-feature-X。现在,您可以将工作副本切换到新位置:svn switch svn switch svn://hostname/projectname/branches/branch-for-feature-X。如果切换到错误修复模式,则提交您的实际更改,将工作副本切换回主干,修复错误并提交,然后将工作副本切换回功能分支。如果您准备好开发该功能,则可以将其合并回主干。

对于上述简单情况,您通常会使用#1(我经常使用),有时会使用#2。使用分支(案例3)更复杂(请参阅更多信息),但可以使用更多技巧。但是分支匹配您对子存储库的描述。

除了你的例子,我不能说太多。有关Subversion的很多事情,但我不知道您已经使用了什么以及项目需要什么。要了解有关SVN的更多信息,SVN-Book是一个不错的资源:http : //svnbook.red-bean.com/


3
方法1的问题在于,您无法总是总是事先知道新功能和错误修复都不会最终涉及对同一文件的更改。因此,我建议使用#2(每个功能或错误修复的单独工作副本)或#3(每个功能或错误修复的单独分支)。分支的优势在于,您可以在功能或错误修复完成之前在分支上提交更改,而不会影响从主干签出(使用单独的工作副本,所有提交都会影响主干)。
斯蒂芬·斯蒂尔·斯蒂尔

7

您可以将代码检出到不同的沙箱中,而不仅仅是复制一份并在那里进行所有更改。

因此,您可以使用类似以下内容的文件夹结构:

D:\Dev\MajorFeature1
D:\Dev\Bug12345
D:\Dev\MajorFeature2

等等

所有这些都可以从SVN中的同一位置检出,例如http://mysvnrepo/trunk

这样,尽管您需要svn update从其他沙箱运行才能提交针对错误修复的更改,但是您可以从错误修复沙箱中提交而不影响功能开发者。


4

您是否看过Subversion分支

一种常见的技术是保持Trunk稳定,并根据需要应用关键修复程序。然后,您为每个重要的新工作创建一个分支。从事该项目的开发人员签出分支并提交到该分支。在您决定将分支合并回主干作为最终集成的一部分之前,它不会影响干线。

另一种方法是为特定的发行版创建分支,以避免在主干上意外进行的任何其他工作导致问题。您可以根据需要对“发布分支”进行错误修复,然后在准备好后将这些修复折叠回主干。

您的开发人员可以签出多个工作副本(主干和任何分支),或者可以使用svn switch命令在主干和特定分支之间进行交换。

我不建议您单独保存许多“沙盒”工作副本,因为(a)禁止与他人合作,并且(b)意外地将尚未生效的更改提交到主干中太容易了。


3

我的工作副本的当前大小为10GB,包含超过50.000个文件。我可以为不同的分支提供多个副本,但是创建新副本需要一些时间!

当出现紧急错误时,我通常将所有更改保存在补丁程序中,还原所有内容,对错误进行处理并提交,然后应用我保存的补丁程序……比获得新的工作副本要容易和快捷得多。如果我需要经常这样做,我将有两个工作副本:一个用于长期更改,另一个用于错误修复。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.