在Windows上从mac提交到存储库时获取“无法获得文件的独占锁定”

时间:2015-01-03 15:17:11

标签: windows macos svn version-control

我想要做的就是在mac和windows机器之间拥有一个共享存储库。存储库在Windows机器上,我有一个家庭组与mac共享它。将项目更新到Mac可以正常工作,但是从mac提交并不会产生结果。

svn: E000045: Commit failed (details follow):
svn: E000045: Can't get exclusive lock on file '/Volumes/[reponame]/db/txn-current-lock': Operation not supported

问题是,它无法确保没有其他人篡改该文件?

现在有人会评论说共享像这样的文件夹并不是正确的做事方式,并且可能会导致问题。但我的用法仅限于在这两台计算机之间共享,所以我只需要一个简单的解决方案。

所以我的问题是:是否只是不可能使锁定工作或使svn忽略锁定要求?如果是这样,我怎么能这样做呢?

2 个答案:

答案 0 :(得分:1)

@Ben是对的:Subversion存储库可以存储在网络磁盘上,但它需要特定的锁定功能才能使用。当存储在Windows机器中的共享文件夹时,Mac计算机似乎不支持这种情况。

使用VisualSVN Server在Windows上安装Subversion服务器非常简单:只需下载安装包并单击“下一步”几次。安装Subversion存储库后,可以使用http:// protocol。

访问

答案 1 :(得分:1)

这听起来像您正在使用file:///协议。唐'吨。该协议适用于非常非常具体的情况。如果您在用户之间或计算机之间共享存储库,则无法使用它。

请改用svnserve或Apache httpd服务器。设置这些内容在在线Subversion书的Chapter 6中进行了解释。

svnserve快速而简单。您可以在几分钟内设置svnserve进程。甚至有将svnserve设置为Windows service的说明。这意味着只要您打开Windows计算机,您的存储库就可用,您可以在Mac上进行结帐。唯一的缺点是您的网络或防火墙可能会过滤掉svnserve默认使用的端口3690。 (这可以更改,但您必须确保您的客户知道正确的端口号。)

您还可以使用类似VisualSVN Server的内容来设置Apache httpd并为您配置subversion模块。它的GUI设置,默认使用端口80,通常不会被阻止。

你唯一应该使用file:///的时候是你最初开始使用Subversion来学习它,或者是一些基于网络的客户端,它们允许你查看(但不能修改)你的信息存储库(主要是因为这是您配置它们的唯一方法)。否则,即使您在一台计算机上自己使用Subversion,您仍然不应该使用它。

如果您遇到网络问题导致无法使用永远在线的版本控制系统,请改用Git等分布式系统。 Git使用起来有点复杂,但由于存储库保存在多个地方(没有副本),你仍然可以在没有网络的情况下完成工作连接,并在连接时将您的更改合并到其他存储库中。


还有一件事

我在使用Git和Dropbox时发现了这个post。您 无法 使用Subversion执行此操作 - 即使使用svnserve(尽管请参阅下面的注释)。这可能是您工作的最佳方式。你把你的回购放在Dropbox上,但从不直接使用你的回购。相反,您将其克隆到其他位置,然后您的更改推送回Dropbox存储库。

下面的注释

我希望你明白,你没有听到我的意见。如果你被警察审问过,我会否认一切,并围捕那些将我远离犯罪现场的目击证人:

我看到人们将他们的Subversion存储库放在Dropbox上,然后在他们的机器上运行svnserve来访问该存储库。他们在混合的Mac,Windows和Linux环境中成功完成了这项工作。但请注意,他们正在运行svnserve。请注意,这是 他们的 私有存储库。请注意 没有其他人在使用 。请注意,他们 从不 一次从多台计算机访问该存储库。请注意,我 否认我曾说过这个 。请注意, 无隐含保修

如果你真的,真的想要使用Subversion,而且你真的需要访问多个系统,并且你没有一个很好的方式来进行网络连接,你就会明白这是不受支持的。你自己承担风险,你可以尝试一下。没有保证,但有人这样做。