如何使用SVN使我们的代码同步?

时间:2009-08-23 04:39:15

标签: tortoisesvn conflict

我使用tortoiseSVN来同步我们的代码。 但最近我发现有一些不太方便的东西。 当我修改文件时,让我们说a.jsp, 我的同事也可以修改这个文件,a.jsp, 这可能会导致冲突,任何使用都需要先检查他的代码, 另一个需要更新到最新版本,然后解决 冲突一个接一个,这真的是错误的。

所以我需要一些陆龟SVN的功能,它可以在我编辑时锁定a.jsp,并防止其他同事同时修改文件。 我在tortoiseSVN中尝试过“锁定”功能,但它不起作用, 当我锁定a.jsp文件时,我的同事仍然可以同时修改此文件而没有任何促销和提醒,就像“你的同事正在修改这个文件,请修改直到签入”...

还有更好的解决方案吗? 在此先感谢!!

4 个答案:

答案 0 :(得分:6)

是的,有一个更好的解决方案,它由3部分组成:

  1. 永远不要锁定,你不需要
  2. 不要与其他人同时处理同一文件,或至少与文件完全相同的部分
  3. 如果你这样做,请乐意合并。
  4. 合并是使用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,使用锁定就不会成为问题。

希望这有帮助, 利