1

我正在使用 tortoiseSVN 来同步我们的代码。但是最近我发现有些东西不太方便。当我修改一个文件时,比如说a.jsp,我的同事可能也修改了这个文件,a.jsp,这可能会导致冲突,任何使用的人都需要先签入他的代码,另一个人会需要更新到最新版本,然后一一解决冲突,这确实容易出错。

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

有没有更好的解决方案?提前致谢 !!

4

4 回答 4

6

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

  1. 永远不要锁定,你不需要
  2. 不要与其他人同时处理同一个文件,或者至少是文件的完全相同的部分
  3. 如果你这样做,很高兴合并。

合并是使用 SVN 等源代码控制系统的典型部分。你不应该害怕它,你应该快乐地拥抱它。

通常,合并可以是自动的,除非您在额外的相同区域工作。在这种情况下,您必须手动进行更改(但 TortiseSVN 中的 diff 工具会帮助您)。

我建议如果这种情况经常发生,你重新评估你在项目中分配工作的方式。

于 2009-08-23T04:42:30.440 回答
5

正如其他人所提到的,最灵活的工作流程是您不需要锁定的工作流程。然而,如果你真的想锁定一个文件,Subversion 提供了这个功能。

将属性添加svn:needs-lock到您想要锁定的文件中,并将值设置为*(我认为属性值实际上并不重要)。然后在签出或更新时,Subversion 会在您的工作副本中将这些文件标记为只读,以提醒您先锁定它们。

您将使用 Subversion 锁定文件(我看到您已经找到了此选项,但它对不需要锁定的文件没有任何作用)这将使文件在磁盘上读写。然后进行更改。当您签入文件时,Subversion 将自动释放锁定(但如果您愿意,可以选择保留它)。然后该文件将再次在您的工作副本中成为只读文件。

请注意,在 Subversion 中的锁定只是“建议”。这意味着任何其他人都可以强制获取锁,即使其他人可能已经拥有它。在这种情况下,仍然支持工作流,因为有人可能仍然需要像在不锁定的情况下那样合并他们的更改。

最后,锁定文件是在 Subversion 中处理非文本文件的最佳方式,例如图像文件或 MS Word 文件。Subversion 无法自动合并这些类型的文件,因此建议锁定有助于确保两个人不会尝试同时编辑同一个文件。

于 2009-08-23T05:05:36.137 回答
0

Tortoise 有一个“合并”选项,您可能想在使用他的更改更新代码后尝试该选项。

于 2009-08-23T04:40:24.657 回答
0

SVN 用户(尤其是敏捷 SVN 用户)中有一种称为“The Check-In Dance”的做法。这种简单的做法可以极大地减少您在将代码签入 SVN 存储库时遇到的冲突数量。它是这样的:

当您准备好签入对 repo 的一些更改时: 1. 首先进行更新以获取其他人的更改。2. 运行您的构建脚本(或者如果您没有构建脚本,则只编译) 3. 如果一切顺利,请提交您的更改。

锁定会导致它自己的一系列问题,其中最重要的是人们往往会忘记“解锁”文件,如果他们需要更改该文件,则其他人完全无法工作。

在 SVN 中合并冲突相当容易,因此一旦您习惯了使用 TortoiseSVN,使用锁定对您来说应该不会成为问题。

希望这有帮助,李

于 2009-08-23T04:51:04.183 回答