SVN合并后无法提交更改

6

我在使用TortoiseSVN将我的项目的两个分支合并后,提交更改时遇到了问题。

以下是详细信息:

我将一个分支合并到我正在工作的项目的主干上。

项目包括主要仓库和作为svn外部引用的附加库(这些库也有分支),作为项目的子目录。

当我试图提交更改时,TortoiseSVN会提示:

Commit A
re all the targets part of the same working copy? 
Unable to lock 'D:\websites\project\lib' 
Please execute the "Cleanup" command.

当然,清理并没有起到作用。
项目目录的svn:external关键字已经定义好了,而且lib文件夹仍然包含正确版本的库(主干版本)。
SVN服务器和客户端都是1.5.x版本(TortoiseSVN是1.5.3.x)。
从技术角度来看,项目和库都是同一SVN存储库中的项目。
有任何想法出了问题?
我已经在Google上搜索了一些解决方案,但没有找到有用的内容,所以我尝试分两步提交我的更改:
1.从项目文件夹提交更改
2.从库文件夹提交更改
这两个步骤都没有出现任何问题。
但我仍然想知道为什么我不能一次性提交所有更改。
编辑:
(在Ken G回答之后)修复了TortoiseSVN 1.3.x的版本->1.5.3.x。

这是一些更复杂的事情:( 今天我在更新存储库时遇到了这个错误——SVN无法锁定存储库中的文件夹。 清理后,SVN说: 无法添加目录“D:\websites\project\import”:同名的有版本记录的目录已经存在 我会调查它。 - Grzegorz Gierlik
3个回答

3

TortoiseSVN的1.3版本非常旧,最新版本为1.5.x。自1.3版本以来,Subversion和TortoiseSVN进行了许多更改,因此升级客户端可能是最好的选择。

话虽如此,1.5版的TortoiseSVN将创建/更新到1.5格式的工作副本。使用TortoiseSVN(或任何SVN客户端)针对之前的Subversion工作副本时,一定要非常小心


2

我记得在TortoiseSVN中有一个与此相关的错误,已经在最新版本中修复。请查看最新的发行说明


2
svn:external会导致Subversion在检出时合并不同的存储库路径,但最终这些路径仍然是“不连续的”,因此您需要进行两次提交才能应用更改。
以下是来自《Subversion版本控制》的相关引用:
引用如下: Subversion仅在非不连续的工作副本上真正运行。例如,如果要提交在一个或多个外部工作副本中所做的更改,则必须在这些工作副本上显式运行svn commit - 提交主工作副本将不会递归到任何外部工作副本中。

Ken,这是同一个代码库。我每周合并一次,总是能成功。我可以在一个提交中提交所有内容。TortoiseSVN在提交窗口中显示项目文件夹和lib文件夹中的文件,甚至包括lib文件夹本身(属性svn:merge已更改)。 - Grzegorz Gierlik
JFTR,“不同的存储库路径”存在于同一个存储库中——它们只是不同的“路径”,对吗?因此,在升级到TortoiseSVN 1.5.3之后,您看到了相同的行为?相同的错误消息? - Ken Gentle
是的,行为还是一样的。根据http://svn.haxx.se/users/archive-2008-01/0814.shtml的说法,这不是一个错误,而是一个功能:)。所以你是正确的。可能较早版本的TortoiseSVN掩盖了这种行为。 - Grzegorz Gierlik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接