【问题标题】:How to fix Subversion «!» status如何修复颠覆«!»状态
【发布时间】:2011-03-24 07:24:30
【问题描述】:

Subversion 手册指出:

'!'

物品丢失(例如您搬家或 不使用 svn 将其删除)。这 也表示一个目录是 不完整(结帐或更新是 中断)。

但与 Subversion 一样,没有说明如何解决问题。

通常情况下,我会使用我信任的Fix_Subversion.command,但这次它是主干,需要很长时间。

那么有没有更快的选择?

【问题讨论】:

  • 您是否移动或删除了相关项目?
  • @Martin:感谢您的脚本,它拯救了我的一天!

标签: svn


【解决方案1】:

在我的情况下,我已经提交了一条消息,带有红色标志的父文件夹,然后所有包含父文件夹的图标的嵌套文件夹都被清除。

【讨论】:

    【解决方案2】:

    如果你删除了一个带有! 标记的文件,只需运行svn rm --force <filename> 告诉SVN 也从存储库中删除该文件。

    【讨论】:

    • svn 状态 --no-ignore | grep -E '(^\!)|(^\!)' | sed -e's/^. *//' | sed -e 's/(.*)/"\1"/' | xargs svn 还原
    【解决方案3】:

    我尝试恢复和清理,但它没有解决我的问题。我找到的解决方案有点苛刻但有效:

    1. 将 old_folder 重命名为 new_folder。
    2. 从父级发出 svn up old_folder
    3. 从 new_folder 复制回文件 [避免从 new_folder 复制 .​​svn 文件夹]。

    我删除了 new_folder,通过这种方式我设法清理了 old_folder。

    【讨论】:

    • 这正是Fix_Subversion.command 所做的。但我要求更快/更好的解决方案。此外:它可能不再适用于 Subversion 1.7,因为 Subversion 1.7 只有一个 .svn 文件夹用于整个工作副本。
    • 这对我有用,在 1.6 上。我拿到 ”!”编辑文件后(没有签入)然后切换到分支
    • FixSubversion.command 不再存在,所以我们现在只能这样做了。
    【解决方案4】:

    在收到此错误之前,您对分支做了什么?

    如果您在使用 SVN 时经常遇到问题,那么您可能做错了什么(例如,在分支上使用 mv/rm 而不是 svn mv/svn rm)。

    【讨论】:

    • 我复制了一个项目以创建一个新的类似项目。我使用«svn copy»来做到这一点。然后我提交了新项目并开始了进一步的更改。
    • @Martin:所以所有你所做的是:svn copy,进行更改,svn commit?如果有,有哪些变化?它们是否涉及移动、添加或删除文件?
    • 提交后我开始了“真正的”工作。重构包等等。随着下一次入住,麻烦开始了。首先需要更新(对于单人项目来说很奇怪)。那次更新失败了,从那里开始走下坡路。但这并不是真正的问题。我习惯于为 Subversion 感到悲伤,我只是问是否有快速修复。我想没有,所以我再次检查了整个树,复制了我的更改并再次提交。
    【解决方案5】:
    svn revert /path/to/file
    svn rm /path/to/file      # if you want to delete it from svn itself
    

    黄金法则是:一旦有东西在 svn 控制之下,任何移动、删除、重命名,都应该使用 svn 命令(svn mv、svn rm 等)来完成,而不是使用普通的文件系统/文件浏览器功能。

    【讨论】:

    • 是的,我确实复制并重命名了。但在每个市长更换后,所有这些都使用 svn 命令和 svn commit。但事情还是一团糟。
    • 要么something 做了,要么你在本地或服务器上的 svn 实现被破坏了。
    • 我想知道 Eclipse 是否把事情搞砸了。我在命令行上完成大多数与 Subversion 相关的工作。除了包和类重命名,我使用 Eclipse 重构。当然 Eclipse 有需要的 Subversion 插件。
    • 如果有(有)孩子,您可能需要在“svn revert”命令中使用“--depth infinity”或“--depth files”。
    • 在这方面git要好得多
    【解决方案6】:

    运行后会发生什么:

    svn cleanup .
    svn update
    svn status
    

    【讨论】:

    • 如果您担心时间递归到其他目录,请将--depth=files 添加到更新中
    • 结果是: >svn cleanup 。 >svn update svn: REPORT of '/svnroot/uiq3/!svn/vcc/default': 无法读取块大小:安全连接被截断 (uiq3.svn.sourceforge.net) 看起来不太好。我想我必须硬着头皮重新创建整个工作树……
    猜你喜欢
    • 1970-01-01
    • 2012-09-13
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多