我使用tortoiseSVN来同步我们的代码。 但最近我发现有一些不太方便的东西。 当我修改文件时,让我们说a.jsp, 我的同事也可以修改这个文件,a.jsp, 这可能会导致冲突,任何使用都需要先检查他的代码, 另一个需要更新到最新版本,然后解决 冲突一个接一个,这真的是错误的。
所以我需要一些陆龟SVN的功能,它可以在我编辑时锁定a.jsp,并防止其他同事同时修改文件。 我在tortoiseSVN中尝试过“锁定”功能,但它不起作用, 当我锁定a.jsp文件时,我的同事仍然可以同时修改此文件而没有任何促销和提醒,就像“你的同事正在修改这个文件,请修改直到签入”...
还有更好的解决方案吗? 在此先感谢!!
答案 0 :(得分:6)
是的,有一个更好的解决方案,它由3部分组成:
合并是使用SVN等源控制系统的典型部分。你不应该害怕它,你应该高兴地拥抱它。
通常,合并可以是自动的,除非您在额外的相同区域工作。在这种情况下,您必须手动进行更改(但TortiseSVN中的diff工具将帮助您完成此操作)。
我建议如果发生这种情况,你会重新评估你在项目中如何分配工作。
答案 1 :(得分:5)
正如其他人所说,最灵活的工作流程是您不需要锁定的工作流程。但是,如果您确实想要锁定文件,Subversion将提供此功能。
将属性svn:needs-lock
添加到您想要锁定的文件中,并将值设置为*
(我认为实际上属性值不重要) 。然后在签出或更新时,Subversion会在工作副本中将这些文件标记为只读,以提醒您先锁定它们。
你会用Subversion锁定文件(我看到你已经找到了这个选项,但它对于不需要锁定的文件没有做任何事情),这会使文件在磁盘上进行读写。然后进行更改。当您签入文件时,Subversion将自动释放锁定(但如果您愿意,可以选择保留锁定)。然后,该文件将再次在您的工作副本中为只读。
请注意,锁定Subversion只是“建议”。这意味着即使其他人可能已经拥有它,任何其他人都可以强制获取锁。在这种情况下,仍然支持工作流,因为有些人可能仍然需要合并他们的更改,而不需要锁定。
最后,锁定文件是处理Subversion中非文本文件的最佳方式,例如图像文件或MS Word文件。 Subversion无法自动合并这些类型的文件,因此建议锁定有助于确保两个人不会同时尝试编辑同一个文件。
答案 2 :(得分:0)
Tortoise有一个“合并”选项,一旦您使用他的更改更新代码,您可能想要尝试。
答案 3 :(得分:0)
SVN用户(尤其是敏捷的SVN用户)之间的做法称为“The Check-In Dance”。这种简单的做法可以极大地减少将代码检入SVN仓库时发生的冲突。它是这样的:
当您准备检查回购的某些更改时: 1.首先进行更新以获取其他所有人的更改。 2.运行构建脚本(如果没有构建脚本,则只编译) 3.如果一切顺利,请提交更改。
锁定导致它自身的一系列问题,其中最重要的是人们往往忘记“解锁”文件,如果他们需要更改该文件,其他人完全无法工作。
合并SVN中的冲突相当容易,因此一旦习惯使用TortoiseSVN,使用锁定就不会成为问题。
希望这有帮助, 利