如何在SVN中进行独占式检出?

11

我正在寻找一种从SVN中进行独占式检出的方法。

  1. 是否有一种自动锁定正在被检出的文件的方法?

  2. 如果一个用户进行了独占式检出,然后另一个用户对相同的文件进行了检出,如何生成某种通知或即时消息以告知第二个用户该文件已被锁定?

3个回答

22
你可以添加属性或自动属性svn:needs-lock,使文件变为只读,并需要你在编辑文件之前将其锁定。
如果你使用的是TortoiseSVN,你会看到被锁定的文件有不同的图标,这对于第二个用户来说应该很容易看到并知道不要编辑该文件。 在TortoiseSVN文档中引用

6
您可以使用 svn lock 来防止其他用户提交更改(请注意,您可以使用 --force 从另一个用户处获取锁定)。这将在命令行上生成消息,告知谁锁定了该文件。
这种做法并不常见。人们通过检出副本(非独占性)并写回更改来使用 SVN(对于可合并格式如文本,会与其他更改合并 - 对于二进制文件无法进行此操作,如果同时进行了其他检入,则会拒绝检入)。
我不希望经常使用此功能,并且通常依赖于 a) svn 的合并能力 b) 与其他团队成员的沟通,以确保我没有触及到其他人的利益。

1
我同意沟通是更好的第一选择,但需要注意的是:如果您是仓库的管理员,可以通过使用“pre-unlock”存储库钩子来加强锁定。我并不是真正推荐它用于正常使用,但我可以想象出某些情况下它可能是有用或必要的。 - Telemachus

2
如果我理解您的跟进帖子正确,您真正想要的是确保人们了解锁定。我想象一种情况,用户A和B已经检出了一个jpeg文件。现在,用户A锁定它,您想确保用户B知道,以便他或她不会开始编辑jpeg文件并浪费时间和精力。
如果是这样,我建议两件事:首先是沟通(虽然不是非常技术化,但在持续使用时非常有效);其次,您可以查看svn的post-lock存储库钩子。您可以使用它在某人锁定文件时发送电子邮件。
从《Subversion》书中得知:
“post-lock”钩子在一个或多个路径被锁定后运行。通常用于发送锁定事件的电子邮件通知。

1
如果你遵循这个逻辑和过程(例如,在编辑图像文件之前必须始终锁定),你就不会遇到问题!当你尝试锁定文件时,它会警告你已经有一个锁定(以及锁定的原因)。如果你使用svn:needs-lock属性,它会对该文件或文件类型强制执行锁定策略。 - Alex
在你的例子中,如果用户B尝试在没有放置锁定的情况下编辑JPEG,则他/她没有遵循流程。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接