最小可重现性失败如下:
> mkdir test && cd test
> svn co https://svn.server.com/repo .
> vim php/main.php
> svn commit
Sending php/main.php
Transmitting file data ..svn: Commit failed (details follow):
svn: File not found: Transaction »52-1r«, Path »/php/main.php«
svn: Your commit message was left in a temporary file:
让我感到困惑的是,这是一个干净的结账,没有人触及回购(在提交没有区别之前svn update
)并且文件确实存在(我可以ls
它或{{ 1}}它)。
唯一值得注意的是,包含main.php的文件夹名称在r1和r52之间已经改变。
这个问题来自何处,为什么当文件明显存在时,找不到该文件?我该如何解决这个问题?
答案 0 :(得分:30)
使用客户端创建标记时,您也会收到此消息,方法是复制到存储库中不存在多个所需文件夹结构级别的新路径。 (Jeez听起来很复杂。)
换句话说,我试图创建一个标签:
/项目/ MyAwesomeProject /标签/ myFirstTag
...但是'标签'文件夹尚不存在。我希望客户能为我做这项工作;手动创建标签'文件夹是治愈的。
答案 1 :(得分:6)
简答
我的客户端版本的subversion已经过时了。
长答案
我正在Mac上运行MacPorts,并以某种方式假设我安装了Subversion作为其中一部分。唉,我没有,我的svn
命令是Apple的默认svn, version 1.6.17 (r1128011)
,以颠覆格式10运行。
存储库运行svn, version 1.7.13 (r1516569)
,它以subversion格式12运行。
更新(即安装)以格式12运行的本地svn, version 1.8.3 (r1516576)
和svn upgrade
本地存储库树到当前版本后,我可以毫无问题地提交所有更改。
答案 2 :(得分:1)
svn cleanup
为我做了诀窍
答案 3 :(得分:1)
在我选择了SVN客户端底部的复选框后,为我解决了此问题。 “创建中间文件夹”