2012-08-02 143 views
4

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

我通常结账:

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 
+0

可能未跟踪的文件导致冲突;目前还不清楚,在每次操作之前和之后,该目录的状态/内容(“路径”,是否与“intranet/trunk/PYTHON/”相同?你的SVN版本是什么? – 2012-08-02 09:59:29

+0

如果您认为这绝对是一个错误,如果您没有更新工作副本中的任何内容,通常可以在FreeNode – 2012-08-02 10:00:26

+0

上写信给[email protected]或#svn频道,通常情况下它的行为不会如此。只是为了确保,你是否将整个工作副本更新为不同的版本,或者只是其中的一部分?如果是前一种情况,那么在我看来,这是svn中的一个错误。 – 2012-08-02 10:02:36

回答

16

我觉得我是在这里寻找答案是

svn revert --depth=infinity inm 

我不关心保持本地修改,只更新到新版本。现在我几次都使用了该命令,它似乎这样的伎俩

编辑

在观看我的错误,我再次可以看到,很可能被测试改变或建立了很多的文件。我应该将它们添加到忽略文件中,以便它们的更改不会被svn检测到。

+0

做到这一点,然后更新,很好地工作 – 2014-11-05 09:41:30

1

所以:

  • 你只检查出来,并从trunk更新,或者你是否有时也从分支中退出?
  • 你在测试时运行任何程序吗?
  • 如果您在运行更新之前执行了svn status,该怎么办?你有结帐的原始副本吗?

冲突可能会发生,原因很多。

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

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

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

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

我在Subversion中错过CVS的一件事(我不想错过CVS)是一个伪装执行命令的选项。这可以让你假装做一个更新,并在进行实际更新之前警告你有冲突。唉,Subversion目前没有这样的选择(虽然它已经被严格要求)。