如何在子目录上撤销“svn switch”操作?

13

这已经不是我第一次意外地在项目根目录下方某处使用“svn switch”命令了。这会切换到该子目录,并使其它部分保持原样,但是如何撤销这个操作呢?

如果尝试将子目录切换回原来的分支,会出现以下错误信息:

"svn: Directory 'subdir\_svn' containing working copy admin area is missing"
更新:子目录中有变更,所以我不想执行删除操作。
短期内,我已通过重新应用更改来修复它,但我想知道是否有方法让Subversion切换回原来的位置......或者这是一个缺失的功能?
7个回答

7

快速解决方法:删除该目录,返回上一级目录,运行svn update命令。


你可以制作一个补丁,执行rm/svn up命令,然后重新应用补丁。 - Marcin Gil
7
我很讨厌svn。它让我花费了一整天的时间来进行切换、更新、修整、删除,然后再切换几次才能完成干净的切换。 - Rhythmic Fistman
我已经从仓库中删除了该文件夹,但在本地它是 S。当我执行 rm -rf; cd ..; svn up 命令时,它会恢复! - Nakilon
不要删除相关目录,你可以将其重命名。这样,你就不会失去其中的所有非版本化文件(例如上传的文件等)。一旦你通过 svn up 或 svn switch 解决了 svn 问题,你就可以将非版本化文件复制回相应的目录中。 - Asrar
仅删除已切换的目录并不起作用。我必须删除其上级文件夹。 - Melebius

5

在不知道你是如何进行转换以及你的目录和仓库布局的情况下,很难说你的情况出了什么问题。

实际上没有办法真正“撤销”一个转换。通常,可以通过切换回原始位置来撤消svn switch操作,即当原始位置位于svn://url/to/orig/dir时,以下操作应该有效:

将子目录切换到仓库中的不同部分

svn switch svn://path/to/switched/dir/ subdir

...并将其切换回来

svn switch svn://url/to/orig/dir subdir

在您的情况下,似乎您尝试切换到不属于您工作副本的目录。

1
我通过在切换的目录中检查更改,删除 .svn 文件和错放的文件,然后使用 svn checkout <rootUrl>,最后使用 svn update -r HEAD --force 解决了这个问题。 我不认为有一种干净的方法来解决这个问题。

0

我的使用情况似乎很简单;我想要切换回以父目录URL为根的当前目录名称。当然,这里的麻烦在于获取并复制父目录的URL。这个Windows批处理脚本为我完成了这个任务。Bash用户可以更轻松地完成,但是这里有要点。看起来将此功能直接整合到SVN中应该很容易...

你可能需要在参数周围添加引号,但我会留给你自己去做。如果不明显,你需要在你想要“取消切换”的目录中运行它。它目前不接受任何参数或其他内容,尽管如果你愿意,这是一个相当简单的添加(只需在顶部添加cd \d %1,如果%1不为空)。

svn-unswitch.bat

@echo off
setlocal

for /f "tokens=*" %%u in ('svn info --show-item url ..') do set "PARENT_URL=%%u"
call :SetDirName %CD%
svn switch %PARENT_URL%/%DIRNAME%
goto :eof

:SetDirName
    set DIRNAME=%~nx1
    goto :eof

认证通过:在我的机器上运行!


0
如果最新的更改只是切换,那么:
右键单击共同父目录,Tortoise SVN -> 进入 SVN 日志。右键单击 SVN 切换之前的版本,选择还原到此版本。

0

看起来可以运行另一个开关,将其返回到实际所在目录的正确路径。也就是说,如果您运行了:

svn switch file:///srv/svn/someproject/branch/27

如果你在 someproject/subdir 目录下,那么运行以下命令:

svn switch file:///srv/svn/someproject/branch/26/subdir

然后从正确的位置运行您的原始开关。

这似乎恢复了秩序。


-2
svn revert <dir>

或者,是的,删除它并获取另一个副本。


1
svn revert <dir>不会还原切换。它会还原本地修改(如果有的话),但仍然保留已切换子树的内容。 - Eloff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接