【问题标题】:SVN checkout without restoringSVN结帐不恢复
【发布时间】:2012-07-31 06:30:35
【问题描述】:

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

我通常结帐:

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

【问题讨论】:

  • 可能是未跟踪的文件导致冲突;不是很清楚,你在每次操作之前和之后该目录的状态/内容(“路径”,是否与“intranet/trunk/PYTHON/”相同?);你的 SVN 版本是多少?
  • 如果您认为这绝对是一个错误,请写信给 users@subversion.apache.org 或 FreeNode 的 #svn 频道
  • 如果您没有更新工作副本中的任何内容,通常它不会那样做。只是为了确保,您是将整个工作副本更新为不同的版本,还是只是其中的一部分?如果是前一种情况,在我看来那是 svn 中的一个错误。
  • 我正在使用 subversion-1.7.5-1.fc17.i686。这是完全相同的路径,我实际上只是想获得一个新的修订版。无论我做什么,它似乎都不会只是下载最新的副本。我正在尝试更新整个工作副本。
  • 第二次抱怨另一个冲突节点。也许您应该使用“--depth=infinity”选项和“--accept theirs”解决冲突,以免手动解析每个文件。但无论如何,奇怪..你能发布更新前后“svn status inm”的输出吗?

标签: svn conflict resolve svn-checkout


【解决方案1】:

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

svn revert --depth=infinity inm

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

编辑

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

【讨论】:

    【解决方案2】:

    所以:

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

    发生冲突的原因有很多。

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多