不是第一次,我不小心从项目根目录下的某处做了“svn switch”。这只会切换该子目录,但是如何撤消它呢?
如果我尝试将子目录切换回原始分支,我得到:
"svn: Directory 'subdir\_svn' containing working copy admin area is missing"
更新:我在子目录中有变化,所以我不想删除。
在短期内我通过重新应用更改修复了它,但是我想要让Subversion重新切换回我来自的地方......或者这是一个缺少的功能?
答案 0 :(得分:7)
快速入侵:删除目录,升级一级,然后运行svn update。
答案 1 :(得分:5)
如果不确切知道切换的方式以及目录和存储库布局的方式,很难说出你的情况出了什么问题。
无法真正“恢复”开关。通常,svn开关可以通过开关撤回到原始位置,即当原始位置在svn:// url / to / orig / dir时,则以下内容应该有效:
将子目录切换到存储库的其他部分
svn switch svn://path/to/switched/dir/ subdir
...然后再将其切换回来
svn switch svn://url/to/orig/dir subdir
在您的情况下,听起来好像您试图切换不属于工作副本的目录。
答案 2 :(得分:1)
我通过检查已切换目录中的更改,删除.svn文件和放错位置的文件,然后使用svn checkout <rootUrl>
后跟svn update -r HEAD --force
来解决此问题。
我认为没有一种干净的方法可以做到。
答案 3 :(得分:0)
如果最新的更改只是切换,那么
右键单击公共父目录,tortoise svn-&gt; 转到svn日志。右键单击SVN Switch之前的版本,然后选择Revert to this revision。
答案 4 :(得分:0)
似乎可以将另一个交换机运行回到您实际所在目录的正确路径。也就是说,如果您运行:
svn switch file:///srv/svn/someproject/branch/27
当你在someproject / subdir中时,然后运行
svn switch file:///srv/svn/someproject/branch/26/subdir
然后从正确的位置运行原始开关。
这似乎恢复了秩序。
答案 5 :(得分: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
已认证:在我的机器上工作!
答案 6 :(得分:-2)
svn revert <dir>
或者,是的,删除它并抓取另一份副本。