Svn 如何避免Subversion中的复杂合并?
我是来自视觉源代码安全(VSS)背景的Subversion(SVN)新手。在VSS中,编辑文件的人会签出该文件,并锁定其他用户,使其无法通过Visual Studio编辑该文件。我知道SVN是一个并发模型,允许多人处理同一个文件,然后将更改合并在一起。我的问题是:Svn 如何避免Subversion中的复杂合并?,svn,version-control,tortoisesvn,ankhsvn,Svn,Version Control,Tortoisesvn,Ankhsvn,我是来自视觉源代码安全(VSS)背景的Subversion(SVN)新手。在VSS中,编辑文件的人会签出该文件,并锁定其他用户,使其无法通过Visual Studio编辑该文件。我知道SVN是一个并发模型,允许多人处理同一个文件,然后将更改合并在一起。我的问题是: 避免用户编辑同一个文件(编写大量代码)并面临复杂的更改合并,或者更糟糕的是,编写大量代码却发现文件被其他用户锁定的最佳方法是什么 在检索文件时,是否有方法通知用户该文件当前正被其他用户编辑或锁定 其他详情: 使用VisualSVN服务
使用TortoiseSVN和AnkhSVN客户端。我会花一些时间学习“签到舞” 这是一张照片
网络上也有多篇关于这一点以及如何减轻痛苦的文章。我建议采取不同的方法来使用subversion
- 你应该经常得到更新
- 你也应该尽早和经常登记
使用这种方法,合并通常很少发生,而且是自动进行的。在冲突的情况下,这些冲突通常较小。首先,如果可能的话,避免在不签入文件的情况下编写“大量代码”可能是明智的。如果您有一个好的单元测试套件(如果没有,为什么没有?:),那么只要您在绿色栏上签入,频繁提交是最好的 然后,如果您确实有需要花费很长时间的更改,那么值得定期执行
svn更新
,以尽可能与主干保持同步。Subversion在合并方面(与VSS相比)是相当值得尊敬的,并且能够很好地处理大部分内容
任何它无法处理的事情,都将进入冲突状态,让您使用自己选择的合并工具解决冲突(我建议使用ace)。这不是问题。使用乌龟SVN,这样做
- 经常更新
- 经常犯错误
- 避免使用大型类/文件(1000行太多)。这还有其他好处:-)
如果您试图使用SVN而不是作为“本机SVN”,而是作为具有不同名称的VSS,那么这将是一件痛苦的事情,也不值得为此烦恼。熟悉新的范例,您会惊讶地发现,与旧的“在任何给定时间只有一个用户编辑给定文件”例程相比,采用这种方式工作会好得多。我也是以前的视觉资源安全用户。合并曾经让我发疯,直到我意识到这不是技术问题,而是人的问题。在使用VSS时,大多数开发人员都会在签入代码之前尽可能多地完成工作。这种行为是导致复杂合并的原因 以下是一些可以缓解这种情况的措施:
- 开始之前,请始终更新工作副本
- 经常登记入住。这将使代码更改更小,更容易自动合并
- 不要让工作代码处于未选中状态
- 如果更改需要几天或更长时间,开发人员应该创建自己的分支