6

我有一个 svn 仓库

http://path/to/svn/trunk

并从中分支了一些东西到

http://path/to/svn/branch

通过使用

svn copy http://path/to/svn/trunk/site1 http://path/to/svn/branch/site1 -m 'message'

我在分支上做了很多工作,但还没有将它合并回来,因为它还没有准备好。

但是,我现在需要对主干进行更改,并且在尝试这样做时得到以下信息

> svn commit -m 'some message'
svn: Commit failed (details follow):
svn: Aborting commit: '/path/to/svn/trunk' remains in tree-conflict

我以为我应该svn up在 /path/to/trunk 但发生以下情况

> svn up
svn: Two top-level reports with no target

A--force无助于纠正这种情况。

svn status导致更改的文件旁边有很多 +

> svn status
M  +    site1/changedfile

以前有没有人经历过这种情况,你能解释一下手头的问题吗?

4

4 回答 4

2

我设法解决这个问题的方法是将受影响的目录移动/path/to/svn/trunk到一个临时位置,并svn up在主干上做了一个。

这拉入了我的文件的旧版本。然后我手动复制了无法提交的文件,一旦它们恢复原位,一切都按预期工作。

于 2012-07-23T13:30:46.383 回答
1

在拙劣之后,以下内容对我有用svn mv https://path1 https://path2

svn revert --depth infinity path2
svn update path2

这避免了我不得不进行其他人建议的新结帐。在此过程中,我的任何更改都没有丢失。

于 2015-07-01T20:35:09.230 回答
0

做一个谷歌搜索,答案(例如这个 SO thread)表明你做了一些改变 svn (例如对一个文件进行了修改,然后移动它而不在中间提交)。

到目前为止,我能找到的最好的解决方法是重新检出主干,手动合并对它的更改(例如,如果你在 Windows 上,则通过 WinMerge)——在对同一文件的不同类型更改之间进行提交/directory -- 来自您当前的工作副本;然后提交该结帐。(此时,您可以使用此修改后的新签出替换当前工作副本或丢弃工作副本中的所有更改并对其进行更新以使其与您刚刚提交的更改同步)

于 2012-07-18T17:54:44.333 回答
0

'S' 标记一个切换的 URL 状态 - 目录的 URL 与您当前的工作目录不对应。这可能是由于未完成其操作的合并或切换。在这种情况下,我通常会执行以下操作:

对于以下步骤,让目录“problem_dir”成为受影响的目录。

首先,我找出目录切换的位置

svn info problem_dir

如果它指向另一个 URL,则切换到您希望它指向的 URL:

svn switch ^/trunk/problem_dir problem_dir

一旦所有目录都指向正确的 URL,您就可以还原和更新:

svn revert . -R
svn update

重要的!仅在提交工作更改后才进行递归还原。

如果这不起作用,那么最后的手段是

rm -rf .
svn update
于 2013-02-08T15:43:05.760 回答