问题描述
最小可重现失败如下:
> 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:
令我困惑的是,这是一个干净的结帐,没有人接触过 repo(提交没有区别之前的 svn update
)并且文件确实存在(我可以 ls
it 或 vim
it).
What puzzles me is that this is a clean checkout, nobody has touched the repo (an svn update
before the commit makes no difference) and the file does exist (I can ls
it or vim
it).
这里唯一值得注意的是,包含 main.php 的文件夹名称在 r1 和 r52 之间发生了变化.
The only notable thing here is that the folder name which contains main.php has changed between r1 and r52.
这个问题是从哪里来的,为什么那个文件明显存在却找不到?我该如何解决这个问题?
Where does that issue come from, why can that file not be found when it's obviously there? And how can I fix this?
推荐答案
简短回答
我的 subversion 客户端版本已过时.
My client version of subversion was outdated.
长答案
我在 Mac 上运行 MacPorts 并以某种方式假设我有 Subversion 作为其中的一部分安装.唉,我没有,我的 svn
命令是 Apple 的默认 svn,版本 1.6.17 (r1128011)
,它以 subversion 格式 10 运行.
I'm running MacPorts on my Mac and somehow assumed that I had Subversion installed as a part of that. Alas, I had not, and my svn
command was Apple's default svn, version 1.6.17 (r1128011)
which runs with subversion format 10.
存储库运行 svn, version 1.7.13 (r1516569)
,它以 subversion 格式 12 运行.
The repository runs svn, version 1.7.13 (r1516569)
which runs with subversion format 12.
更新(即安装)我的本地 svn,版本 1.8.3 (r1516576)
后,它也以格式 12 运行,并且 svn upgrade
我的本地存储库树到当前版本,我可以毫无问题地提交所有更改.
After updating (i.e. installing) my local svn, version 1.8.3 (r1516576)
which runs with format 12 as well and svn upgrade
my local repository tree to the current version, I could commit all my changes without problems.
这篇关于svn 提交失败:找不到文件:事务»52-1r«的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!