Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 需要在Subversion中还原已删除的分支_Svn_Version Control_Branch - Fatal编程技术网

Svn 需要在Subversion中还原已删除的分支

Svn 需要在Subversion中还原已删除的分支,svn,version-control,branch,Svn,Version Control,Branch,我有两个Subversion存储库的工作副本,一个是主干,另一个是我创建的分支 我无意中删除了存储库浏览器中的分支。如何恢复分支?是否有办法撤消整个存储库最近的提交?使用: svn cp [path to deleted branch]@[revision before delete] [new path] 例如: svn cp svn://myrepo.com/svn/branches/2.0.5@1993 \ svn://myrepo.com/svn/branches/2.0

我有两个Subversion存储库的工作副本,一个是主干,另一个是我创建的分支

我无意中删除了存储库浏览器中的分支。如何恢复分支?是否有办法撤消整个存储库最近的提交?

使用:

svn cp [path to deleted branch]@[revision before delete] [new path]
例如:

svn cp svn://myrepo.com/svn/branches/2.0.5@1993 \
       svn://myrepo.com/svn/branches/2.0.5_restored
其中,1993是删除前的修订

是一些很好的文档


必须有某种方法来转义用户名中的
@
符号

假设您的上一次修订是108:

svn merge --revision 108:107
svn diff 
svn commit -m "Reverted revision 108"
您还可以将源URL添加到合并:

svn merge --revision 108:107 http://svn/repo/
堆栈溢出的其他位置:

如果您使用的是陆龟vn,这里有一个解决方案:

  • 在repo浏览器中,导航到已删除文件夹的父文件夹(例如“分支”)
  • 右键单击文件夹并执行“显示日志”
  • 查找删除特定分支文件夹的修订
  • 选择该修订之前的修订
  • 右键单击并选择“浏览存储库”。您现在正在查看存储库在删除分支之前的时间点的状态
  • 找到已删除的分支文件夹,选择,右键单击,然后选择“复制到…”
  • 现在,您可以将已删除的文件夹复制到新名称,甚至相同的名称

  • 我遇到了这个问题,但是上面的命令对我无效。这样做容易得多。在删除分支之前,我在一次修订中签出了它

    删除的修订版本为9331。我在9330查过了:

    svn co https://svn.acme.com/svn/giantFlySwatterTargetingSystem/branches/bug1234@9330 restored
    
    这是我想要的简单解决方案。

    这对我很有效

    svn cp——用户名您的用户名 https://您的回购路径/branchs/已删除的分支机构名称@删除前的最后一次修订 https://您的回购协议路径/branchs/新的分支机构名称


    或者,如果是单个提交删除了分支:

    恢复提交,然后提交

    svn merge -c -REV .
    svn commit -m "Reverting deletion of branch XYZ"
    

    我在SmartSVN(Enterprise 6.0.2)中遇到了同样的问题,并以这种方式解决了它:

    • 打开后备箱/头部的视图
    • 调用菜单“存储库/在存储库浏览器中打开”(已删除的分支不在“分支”文件夹中)
    • 在存储库浏览器中,调用菜单“存储库/显示修订…”
    • 选择删除之前的修订(删除的分支会重新出现在“分支”文件夹中)
    • 右键单击已删除的分支,在菜单中选择“复制”,然后为目标输入相同的路径

    似乎不起作用,我正在使用svn+ssh,因为它位于本地服务器上,所以我尝试了svn cp svn+ssh://username@serverip/svn/branchs/branch-name@9999svn:ssh://username@serverip/svn/branchs/branch name,我得到了“Path”svn+ssh://username@serverip/svn/branchs/branch@9999'版本9998中不存在'你能试试svn cp-r 9998 svn吗+ssh://username@serverip/svn/branchs/branch name svn+ssh://username@serverip/svn/Branchs/branch新名称?你刚刚救了我的命。@Alucard我很高兴它有帮助:)如果它不起作用,请添加-m“commit message”,如下所示:svn cpsvn://myrepo.com/svn/branches/2.0.5@1993 svn://myrepo.com/svn/branches/2.0.5_restored -m“提交消息“这似乎也不起作用。我得到的错误是路径/分支/分支名称在修订版108中不存在,其中108是我删除branchok后的修订版。您可能需要结帐/分支机构。您的分支非常大还是可行?对于一个有很多分支的大型项目,签出/分支比John Weldon建议的“svn cp”要昂贵得多。这样,您的工作副本将处于所需状态,但存储库将保持不变,因此其他开发人员将看不到已删除的分支(这可能不是您想要实现的目标)。然后,您可以在最新/head repo浏览器中转到重命名的分支机构,并复制回原始分支机构名称。然后,分支机构的日志历史记录将显示通过“已还原”的迂回路径分支,但会起作用。仅供参考,一个很好的附加功能是,分支的修订历史也会被还原。您只需右键单击还原的分支并“显示日志”。如果取消选中“复制/重命名时停止”,它将向您显示整个分支历史记录。保存了我的一天。正在重做大约一周的工作。很好,我可以保留相同的名称。谢谢。这些步骤都提到得很好。由于无意中删除了一个未合并到主干中的分支,使我免于大量返工。谢谢!这假设您已将父级签出为您的代理工作副本。如果父级包含许多文件/文件夹,这可能非常耗时并占用大量磁盘空间。但是,如果使用
    --depth immediates
    签出父级,然后使用
    --depth infinity
    运行指定的合并命令,则可以避免签出整个父级。