【问题标题】:SVN error E720005, permission denied on binary filesSVN 错误 E720005,二进制文件的权限被拒绝
【发布时间】:2018-08-10 08:25:17
【问题描述】:

我正在网络 Windows 共享驱动器上使用 svn。映射到驱动器号。 最近我从 svn 1.7.7 更新到 1.8.0。这对许多回购都很有效。 今天我创建了一个新的回购并不断遇到问题。还没有其他人访问它。

我无法提交二进制文件。完全相同的东西适用于其他项目,但不是 对于这个新的回购。 添加文本文件效果很好,当我提交二进制文件时,如 .png 它失败了。

Adding  (bin)  SW\hw\system.bit
Transmitting file data .svn: E720005: Commit failed (details follow):
svn: E720005: Can't set position pointer in file 'G:\Projekt\P2SW\CASTLE\6_Softw
are\SVN\CTE_5_HW_Self_Bip46\db\txn-protorevs\18-18.rev': Zugriff verweigert

所以它说“权限被拒绝”,但我有权限,这是肯定的。 它也不是大小,当它们是文本时,我可以提交更大的文件。

非常欢迎任何建议。 谢谢

【问题讨论】:

  • 永远不要将共享用于基于 file:/// 的存储库或工作副本 - 这很容易
  • 普通文本文件(一些 .java.properties 文件)出现同样的错误。 Windows上相当普通的硬盘驱动器。不使用服务器,只使用命令行或 TortiseSVN——要么失败。文件夹很小,41k。虽然我只能copyadd,然后rm ...我更喜欢SVN 跟踪。

标签: svn


【解决方案1】:

我正在网络 Windows 共享驱动器上使用 svn。

不!糟糕的开发商!没有甜甜圈给你!

Windows 上的权限非常棘​​手,尤其是在涉及共享驱动器的情况下。在这种情况下,您不应使用file:// 协议。您将遇到权限问题。我什至不使用 Unix 系统上的 file:// 作为我的私人存储库。我总是启动svnserve 并使用svn:// 作为协议。

在 Windows 上将 svnserve 设置为 Windows 服务很简单。有很多 Windows 软件包将 Apache httpd 和 Subversion 打包在一起,然后自动为您设置几乎所有内容。没有理由在 Windows 上使用共享驱动器并使用file:// 协议。

检查存储库中所有文件和子目录的权限。即使您是唯一使用此存储库的人,也可能在某处存在权限问题。然后继续将所有内容设置为服务。

【讨论】:

  • 请注意:本地驱动器上的 file:/// 可以,适用于任何操作系统的快速解决方案
  • 我现在已经使用这个多年了,没有任何问题。但是使用 svn:// 协议确实解决了这个问题。
  • @fbenoit ...如果您没有找到文件权限,我怀疑(像我一样)您不会拥有。检查 offending 文件夹的状态:`svn status dev\experiments`。
【解决方案2】:

我在子文件夹中遇到了这个问题。只有大约 8 个文件,没有权限问题,不是二进制文件。

奇怪的是 mv 为我处理单个文件。不适用于src/ 文件夹。

我的当务之急是保留历史记录,使用文件副本会丢失它。一种解决方法/替代方法是复制文件和文件夹,然后在 SVN 中删除它们。

 d:> md dev\experiments\modelA
 d:> svn add dev\experiments\modelA
 d:> svn cp dev\experiments\*  dev\experiments\modelA\
 A         dev\experiments\modelA\

 d:> svn mv  dev\experiments\build.gradle  dev\experiments\modelA\
 A         dev\experiments\modelA\build.gradle
 D         dev\experiments\build.gradle

 d:> d:> svn mv  dev\experiments\gradle.properties  dev\experiments\modelA\
 A         dev\experiments\modelA\gradle.properties
 D         dev\experiments\gradle.properties

 d:> dir /s/b  dev\experiments
   (shows all your files and folders...)

 d:> svn commit  -m "move project to modelA sub-project" dev\experiments\
 Deleting       dev\experiments\build.gradle
 Deleting       dev\experiments\gradle.properties
 Adding         dev\experiments\modelA\build.gradle
 Adding         dev\experiments\modelA\gradle.properties
 Adding         dev\experiments\modelA\src
 Committing transaction...
 Committed revision 24262.

您可能会注意到,我在删除 src 文件夹之前完成了复制文件夹和文件的提交。碰巧删除src 仍然存在问题:

 d:> svn rm dev\experiments\src
 svn: E155009: Failed to run the WC DB work queue associated with '...\dev\experiments\src', work item 202 (dir-remove experiments/src 1 1)
 svn: E720145: Can't remove directory '...\dev\experiments\src\main\java\au\com\something': The directory is not empty.

 d:> svn cleanup dev
      ( didn't help...)
 d:> 
 d:> rd /s/q dev\experiments\src
 d:> svn status dev\experiments
 D       dev\experiments\src

 d:> svn commit  -m "move project to modelA sub-project" dev\experiments\
 Deleting       dev\experiments\src
 Committing transaction...
 Committed revision XXXXX.
 d:> svn update dev
 Updating 'dev':

这已经移动了src/ 下的文件夹和文件,并且所有内容都在 SVN 中提交,具有连续的历史记录。

有关的错误信息

\src\main\java\au\com\something

可能意味着something/目录下有一个文件不是由SVN管理的(un-added可以这么说)。

那时,我选择删除文件夹并保持“干净”。回顾日志和状态消息输出,我发现有一个不受控制的文件,名为:default-log4j.properties.bak

我的工作假设是 SVN 只删除受源控制的文件。所以.bak 就是这个孤儿。如果是这种情况,“权限被拒绝”听起来像是要报告的错误消息。

希望对您或下一个人有所帮助。

【讨论】:

    猜你喜欢
    • 2015-03-13
    • 2018-07-19
    • 1970-01-01
    • 2012-01-17
    • 2011-06-07
    • 1970-01-01
    • 2016-09-25
    • 2015-09-16
    • 2012-02-11
    相关资源
    最近更新 更多