我在网络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
所以它说“权限被拒绝”,但我有权限,这是肯定的。 它也不是大小,我可以提交更大的文件,当它们是文本时。
非常欢迎任何建议。 感谢
答案 0 :(得分:2)
我在网络Windows共享驱动器上使用svn。
没有!坏开发者!没有甜甜圈给你!
Windows上的权限非常棘手,尤其是涉及共享驱动器时。在此实例中,您不应使用file://
协议。您将遇到权限问题。我甚至不在Unix系统上使用file://
作为我的私有存储库。我始终启动svnserve
并使用svn://
作为协议。
在Windows上将svnserve
设置为Windows服务很简单。有很多Windows软件包将Apache httpd和Subversion打包在一起,然后为您自动设置几乎所有内容。没有理由在Windows上使用共享驱动器并使用file://
协议。
检查存储库中所有文件和子目录的权限。即使您是唯一使用此存储库的人,也可能存在某个权限问题。然后继续将所有内容设置为服务。
答案 1 :(得分:0)
我在子文件夹上有此问题。只有大约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-add
)。
那时候,我选择删除文件夹并保持“干净”。回顾日志和状态消息输出,我发现有一个名为default-log4j.properties.
bak
的不受控制的文件。
我的工作假设是SVN仅在源控制下删除文件。因此.bak
是这个 orphan 。在这种情况下,“权限被拒绝”听起来像是要报告错误的错误消息。
希望对您或下一个人有帮助。