4

我们有一些公司中间件,有时很难找到我正在寻找的正确版本,所以我经常不得不更新到不同的版本来测试它们。

我通常结帐:

svn co svn+ssh://(username)@(ip)/srv/svn/intranet/trunk/PYTHON/<application> <local-application>

然后我可能会更新到不同的版本

svn update (path) -r (rev)

大多数情况下,经过几次尝试,这将导致错误节点仍然存在冲突

如果我删除该文件夹并尝试重新结帐,它只会恢复我所拥有的。我想做的只是检查一个修订版,我没有做任何更改,它仍然认为存在冲突。

我试图解决它们,但似乎没有任何效果:

svn更新-r 1586

Skipped 'inm/inm' -- Node remains in conflict
D    inm/fabfile.py
D    inm/test.db.bak
D    inm/tests
D    inm/test.db
D    inm/doc
D    inm/test.ini
D    inm/test.sql
U    inm/setup.py
A    inm/inm.egg-info
A    inm/inm.egg-info/SOURCES.txt
A    inm/inm.egg-info/top_level.txt
A    inm/inm.egg-info/PKG-INFO
A    inm/inm.egg-info/entry_points.txt
A    inm/inm.egg-info/dependency_links.txt
A    inm/inm.egg-info/not-zip-safe
A    inm/inm.egg-info/paster_plugins.txt
A    inm/inm.egg-info/requires.txt
U    inm/setup.cfg
Updated to revision 1586.
Killed by signal 15.
Summary of conflicts:
  Skipped paths: 1

svn resolved inm/inm
Resolved conflicted state of 'inm/inm'
(venv)

svn update inm/inm -r 1586
Updating 'inm/inm':
Password: 
Skipped 'inm/inm/templates' -- Node remains in conflict
At revision 1586.
Killed by signal 15.
Summary of conflicts:
  Skipped paths: 1
4

2 回答 2

17

我想我在这里寻找的答案是

svn revert --depth=infinity inm

我不关心保留本地更改,只更新到新版本。我现在已经用过这个命令几次了,它似乎可以解决问题

编辑

再次查看我的错误后,我可以看到很多文件可能已被测试或构建更改。我应该将它们添加到忽略文件中,这样 svn 就不会检测到它们的更改。

于 2012-08-08T10:24:22.393 回答
1

所以:

  • 您是仅从 签出和更新trunk,还是有时也从分支签出?
  • 您在测试时是否运行任何程序?
  • 如果你svn status在运行更新之前做了 a 怎么办?你有结帐的原始副本吗?

发生冲突的原因有很多。

想象一下,您修改了 Subversion 存储库中的文件,然后更新到早期版本或更高版本。根据您的操作方式,Subversion 可能会尝试合并您所做的和正在检查的内容之间的更改。有时,如果您不从修订的开头进行更新,Subversion 就不会。在这种情况下,Subversion 会报告文件有冲突。

另一个原因是您在工作目录中创建的文件不在您的 Subversion 版本中。当您使用该文件更新 Subversion 的修订版时,Subversion 将报告冲突。

那么,也许你的系统出了点问题。我们现在根本没有足够的信息。

下次执行此操作时,svn status请先在工作目录上执行svn update. 事实上,这总是一个好主意。这将在您进行更新时警告您与 Subversion 可能发生的任何冲突。

我在 Subversion 中错过了 CVS 拥有的一件事(我也不太想念 CVS)是一个假装执行您的命令的选项。这将允许您在进行实际更新之前假装进行更新并警告您冲突。唉,Subversion 目前没有这样的选项(尽管它已被大量请求)。

于 2012-08-02T14:02:22.340 回答