SVN 似乎没有恢复更改

标签 svn revert

我从一个 repo 中提取,对多个文件进行了更改,现在我想撤消它们。

我试过 svn revert -R . , 和 svn revert --depth infinity .但是当我调用 svn status ,我仍然看到所有文件都标记为已修改,而且它们似乎与我尝试还原之前的状态相同。

我看到了 this文档中关于恢复更改的讨论,但它似乎处理从一个提交到另一个提交,而不是撤消所有未提交的更改。

(我无权访问 TortoiseSVN。)

我不能给你一个确切的状态命令转储,但它看起来有点像这样:

>>svn status
?    dir/
?    dir/
X    dir/
?    dir/

Performing status on external item at [dir]
M    file

Performing status on external item at [dir]
?    dir/
?    dir/
?    file
?    file
X    dir/

最佳答案

根据svn:externals documentation有一些命令会递归到外部定义的目录中。这些命令是:

  • 结帐
  • 更新
  • 开关
  • 导出
  • 状态

  • 其中大部分都有 --ignore-externals标志让你避免更新那些。

    但是,使用 svn:externals 的工作原理是在定义它们的目录下创建独立的工作副本。除了上面的一小组命令之外,这正是处理外部目录的方式。特别是在您的情况下,svn revert直接跳过外部目录,因为它们实际上不是这个工作副本的一部分。

    可悲的是,这似乎是 svn:externals 中剩余的粗糙点之一。您可能需要将目录更改为修改后的外部目录并在那里恢复。

    您可能可以很容易地编写脚本。

    关于SVN 似乎没有恢复更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35046641/

    相关文章:

    linux - 以前从 yum 安装时如何从源更新 subversion (svn)

    iphone - project.pbxproj 中的 subversion 冲突正常吗?

    svn - 保护文件免受SVN提交

    linux - 如何解决以下与 svn 分支相关的场景?

    svn - 尝试在 Mac OS X 上使用 Subversion 提交时出错

    svn - 恢复所有 svn :ignore properties recursively

    svn - 如何仅还原SVN工作副本中的目录?

    jquery - 使用文本框的属性之一设置文本框的值 (jQuery)

    git 恢复到某个提交

    git - 撤消未在 Git 中推送的标记