TortoiseSVN 在 SAMBA 共享上的权限问题

TortoiseSVN 在 SAMBA 共享上的权限问题

我花了一整天的时间来解决这个问题,现在真的很绝望。

Windows 10 是我的主机,在其中,我运行 Debian VM,将其用作完整的 Linux Web 堆栈。Linux VM 运行 SVN 服务器,它本身运行良好。在我的 Windows 10 机器(本地驱动器)上,我可以签出并提交。我使用我在 SVN 中配置的唯一用户执行此操作。

但这不是我的用例。我想要的是使用我的 Windows IDE 直接操作 Linux 服务器上的文件。我通过网络映射访问所述文件。

为了实现这一点,我在 Linux VM 上安装了 SAMBA。这本身也有效。我可以访问网络映射并完全控制其上的所有文件。授权设置很简单:我有一个组 @fileadmins,我向其中添加了我的个人用户、root 和 www-data(用于 Apache)。但是,为了使这种情况简单化,目前我使用 root 帐户执行所有操作。

现在进入最后一部分:我喜欢将工作副本放在该网络驱动器上。这样,我就可以使用 TortoiseSVN 从 Windows 无缝地直接操作文件以及提交。我知道不建议使用这种情况,但请注意,我是唯一的用户,这是一种非常高效的设置。多年来,我一直在以前的服务器上为个人项目这样做。

由于某种原因,这次我无法让它工作。这是我遇到的错误,例如在第一次签出存储库时:

无法将“W:\jd5.svn\tmp\svn-5FDD2730”移动到“W:\jd5.svn\pristine\18\185e98e0088e20d84a5dfaaee60a22f73658439a.svn-base”:访问被拒绝。

从遇到类似问题的人那里,我了解到 TortoiseSVN 正在动态创建这些 SVN 特定的文件,这些文件具有一组特定的非常有限的权限(即只读),并且具有有限的 Linux 文件权限。

因此,几乎所有答案都集中在配置 Samba 以强制对新创建的文件(例如 TortoiseSVN 创建的文件)设置更高的权限。这是我当前的 Samba 配置文件:

[projects]
comment = web apps for users in group *fileadmins*
path = /var/www/apps
valid users = @fileadmins
create mask = 0777
directory mask = 0777
writable = yes
force create mode = 0777
force directory mode = 0777
write list = +@fileadmins
delete readonly = yes
read only = No

如您所见,我故意将权限留空,只是为了让某些功能正常工作。如果我现在从 Windows 在网络驱动器上手动创建一个新的文本文档,它将应用上述权限,这样就可以正常工作了。

TortoiseSVN 客户端创建的文件(特别是它抱怨的文件)如下:

  • .svn/tmp(组:fileadmins,所有者:root,权限:0777)
  • .svn/tmp/svn-5FDD2730(组:root,所有者:root,权限:0777)
  • .svn/pristine(组:fileadmins,所有者:root,权限:0777)
  • .svn/pristine(组:fileadmins,所有者:root,权限:0777)
  • .svn\pristine\18(组:root,所有者:root,权限:0777)

从表面上看,root 对所有文件具有完全访问权限,并且我以 root 用户身份使用网络驱动器。我假设 TortoiseSVN 在同一帐户下运行。

上述情况唯一奇怪的是,有些文件将 root 作为其所属组。我尝试通过 Samba 设置强制指定一个组,但这导致整个驱动器不可用。无论如何,由于 root 是所有者(作为用户),我认为这并不重要。

从我的角度来看,我已经将权限扩展到最大可能,但仍然会出现权限错误。我很想知道我忽略了什么。十多年来,我在多台机器上使用过这样的设置,但在这一台机器上却完全卡住了。

答案1

我也遇到了这个问题,但我发现如果我重复更新过程几次,最终所有文件都会更新。我偶尔也需要清理一下。

当我将 Tortoise 从 1.7.11.xx 升级到 1.9.0.xx 时,出现了这个问题

相关内容