从 mac 提交到 windows 上的存储库时获取 "can't get exclusive lock on file"

Getting "can't get exclusive lock on file" when commiting from mac to repository on windows

我想做的就是在 mac 和 windows machine 之间建立一个共享存储库。存储库在 windows machine 上,我有一个家庭组可以与 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 忽略锁定要求?如果是这样,我该怎么办?

@Ben 说得对:Subversion 版本库可以存储在网络磁盘上,但需要特定的锁定功能才能使用。 Mac 计算机似乎不支持共享文件夹存储在 Windows 计算机中。

使用 VisualSVN Server 在 Windows 上安装 Subversion 服务器非常简单:只需下载安装包并单击 Next 几次。安装后,您的 Subversion 存储库将可以使用 http:// 协议访问。

这听起来像是您在使用 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 来学习它时,或者当你使用一些允许你查看(但不能修改)信息的基于 Web 的客户端时在您的存储库中(主要是因为这是您配置它们的唯一方法)。否则,即使你在一台机器上独自使用 Subversion,你仍然不应该使用它。

如果您遇到网络问题导致无法使用始终可用的版本控制系统,请改用像 Git 这样的分布式系统。 Git 使用起来有点复杂,但是因为存储库保存在多个地方(没有 master 副本),当没有网络连接时你仍然可以工作,并在有连接时将您的更改合并到其他存储库中。


还有一件事

我在使用 Git 和 Dropbox 时发现了这个 post。你 不能 用 Subversion 做这个 —— 即使用 svnserve (尽管见下面的注释)。这可能是您工作的最佳方式。您将您的存储库放在 Dropbox 上,但从不直接使用您的存储库。相反,您将其克隆到别处,然后将您的更改推送到 Dropbox 存储库。

下面的注释

我想让你明白你不是从我这里听到的。如果你被警察审问,我会否认一切,并召集目击者,让我远离案发现场:

我见过有人将他们的 Subversion 存储库放在 Dropbox 上,然后 运行 svnserve 在他们的机器上访问该存储库。他们已经在 Mac、Windows 和 Linux 混合环境中成功地做到了这一点。但是,请注意它们是 运行宁 svnserve。请注意,这是 他们的 私有存储库。请注意,没有其他人在使用它。请注意,他们从不一次从多台机器访问该存储库。请注意,我否认我曾这样说过。请注意,这是原样出售,无默示保证.

如果您真的非常想使用 Subversion,并且您真的非常需要访问多个系统,并且您没有进行网络连接的好方法,并且您明白这不受支持并且一切都很好风险自负,您可以尝试一下。没有保证,但有人这样做。