Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVN:用户从SVN存储库签出文件后,是否可以立即锁定文件?_Svn_Tortoisesvn - Fatal编程技术网

SVN:用户从SVN存储库签出文件后,是否可以立即锁定文件?

SVN:用户从SVN存储库签出文件后,是否可以立即锁定文件?,svn,tortoisesvn,Svn,Tortoisesvn,我有一个特别的要求。 我希望一旦用户签出一个文件,该文件就应该用该用户的名称锁定,然后在解除锁定之前,其他用户都不能签出该文件。我想这样做的几个二进制文件不能合并后,由不同的开发人员同时编辑。 有一个名为svn:needs lock的属性,但它不会锁定文件,它只会使文件只读,并且在完成所有编辑后不允许保存文件,这既浪费时间又浪费精力。 是否有一种方法,通过它我可以创建一个钩子,一旦签出发生就会被触发。在这个钩子中,我可以锁定文件,这样在我提交并释放锁之前,其他人无法编辑它。您必须使用另一个使用独

我有一个特别的要求。 我希望一旦用户签出一个文件,该文件就应该用该用户的名称锁定,然后在解除锁定之前,其他用户都不能签出该文件。我想这样做的几个二进制文件不能合并后,由不同的开发人员同时编辑。 有一个名为svn:needs lock的属性,但它不会锁定文件,它只会使文件只读,并且在完成所有编辑后不允许保存文件,这既浪费时间又浪费精力。
是否有一种方法,通过它我可以创建一个钩子,一旦签出发生就会被触发。在这个钩子中,我可以锁定文件,这样在我提交并释放锁之前,其他人无法编辑它。

您必须使用另一个使用独占锁定的版本控制系统。
SVN不适合您想要的场景。

不可能仅基于签出对文件进行exlusive锁定。您可以做的是将svn:needs lock属性放在文件上。其结果是工作副本中的文件为只读,并提醒在进行更改之前先获得锁。Subversion基于“复制-修改-合并”模型工作。strickt锁定范例被其他版本的控制系统(如ClearCase)使用,但Subversion不使用。

我建议编写一个脚本/程序,而不是在尝试打开此类文件时运行。脚本将检查文件是否为只读文件(您不经常使用CD磁盘,不是吗?)。在这种情况下,它将锁定文件(或显示错误消息)并启动编辑器。

其他具有独占锁定功能的版本控制系统(如PVCS)的工作方式与具有“需要锁定”属性的SVN相同。唯一的区别是PVCS的默认模式是独占锁定。我曾对至少一个VCS感到不高兴,因为它的锁定文件甚至不能被其他用户读取,但我一辈子都记不起它是哪一个。你误解了svn:needs lock的工作原理。只读限制将在您锁定文件后立即撤销。嗨,Doc Brown,我认为当我们签出一个具有svn:needs lock属性的文件时,我们将无法编辑该文件,除非并且直到我们锁定该文件。我想要的是,当我们签出一个文件时,它应该自动被锁定。请立即提出建议,如果我错了,请纠正我。谢谢如果您只能通过签出获得锁,就我对您的理解而言,这意味着您将无法获得任何不想更改的文件的工作副本。这就是你真正想要的吗?在一个基于多个文件的典型项目(例如,一个编译语言项目)中,您需要这些文件,至少作为只读副本。也许这只是一个文字问题-告诉每个人“锁定=签出”,签出“获取只读副本”,他们会高兴的?不,我们不使用CD光盘。通过脚本,你想说我应该使用钩子吗?如果是这种情况,那么SVN中没有在签出时触发的挂钩。我的意思是说SVN中没有签出后挂钩。那么,如何编写一个脚本来检查文件在签出时是否为只读,并在我们签出时立即锁定它。请建议如何在签出时触发脚本。提前谢谢!!不,我不是指SVN钩子脚本——它们是服务器端的。我的意思是,当您打开某种类型的文件时,会运行某些命令。我建议用脚本替换它。在windows中,可以在注册表中更改此命令。当您打开常规文件(不在SVN存储库中)时,只读检查不应出现,因此此脚本不会对您的正常编辑器使用产生太大影响。如果不是这样的话,你可以在脚本中添加异常。我从来没有为自己使用过Clear case,但AFAIK Clear case使用的是一个特殊的文件系统。这意味着一个锁定方案,其中签出或锁定实际上为所有其他用户完全阻止了文件,这是可能的(有人能确认吗?)。工作副本位于本地驱动器上的SVN无法从服务器端主动访问其他用户的工作副本。然而,“需要锁定”功能是一个实用的替代方法,可以绕过这个限制,对于很多SVN用户来说已经足够好了。