2012-07-11 107 views
6

SVN“没有目标两个顶级报道”我有一个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的/路径/到/躯干,但以下时以下发生

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

一个--force不利于亡羊补牢。

svn status导致大量+的旁边的修改过的文件

> svn status 
M + site1/changedfile 

有没有人经历过这一点,你可以摆脱手头上的问题,一些轻?

回答

2

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

这拉旧版本中我的文件。然后,我手动复制了无法提交的文件,并且一旦它们恢复正常,一切按预期工作。

0

做一个谷歌搜索,答案(例如this SO thread)表明你做了一些令svn感到不安的改变(例如,对文件进行了修改,然后在没有提交的情况下移动它)。

到目前为止,我能找到的最好的修复方法是对trunk进行全新的检查,手动合并对它的更改(例如通过WinMerge,如果您在Windows上) - 在不同类型的更改之间进行提交到同一个文件/目录 - 从你当前的工作拷贝;然后提交结帐。 (此时,您可以使用此修改后的全新结帐替换当前的工作副本,也可以放弃工作副本中的所有更改并对其进行更新,使其与您刚刚提交的更改保持同步)

+1

感谢您的回复,但我正在寻找一种方法来解决这个问题,而无需重新结帐。 – 2012-07-19 08:32:06

+0

@ darryn.ten - 出于好奇:新鲜复制方法有什么问题? – Attila 2012-07-19 13:53:38

+1

缺少磁盘空间,主干的大小和svn的速度(哈哈)。 – 2012-07-19 14:06:15

0

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

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

首先我找出目录皆已过

svn info problem_dir 

如果它指向另一个URL,然后切换到你希望它指向的网址:

svn switch ^/trunk/problem_dir problem_dir 

一旦所有目录指向正确的URL,您可以恢复和更新:

svn revert . -R 
svn update 

导入蚂蚁!只有在您进行修改后才能进行递归还原。

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

rm -rf . 
svn update 
1

后,以下为我工作的一个拙劣的svn mv https://path1 https://path2

svn revert --depth infinity path2 
svn update path2 

这避免我不必做新鲜结帐别人建议。在这个过程中,我的变化都没有丢失。