【问题标题】:Undo SVN remove from depo [duplicate]撤消从 depo 中删除的 SVN [重复]
【发布时间】:2012-12-01 15:16:40
【问题描述】:

可能重复:
What’s a simple way to undelete a file in subversion?

我想将一个名为 prj1 的新项目导入到 depo 中。 prj1里面有sub1sub2、...

cd prj1    
svn import prj1 http://someurl.com/project/branches/

但这是错误的路径,我应该在上述行的末尾添加 prj1,所以我打算删除 prj1 中的子项目,我打算这样做:

svn remove http://someurl.com/project/branches/sub1

但我做错了:

svn remove http://someurl.com/project/branches

因此,branchs 消失了。在 branches 内,与 prj1 平行,还有一些其他项目我没有本地副本(尚未检查出来)。我想知道是否有任何方法可以撤消意外 svn 删除 branches 并将其带回仓库。

编辑:

按照 Lekensteyn、Lazy Badger 和 https://stackoverflow.com/a/3128696/1383356 的建议,我通过检查最新版本 (102) 解决了这个问题,并使用 svn merge 回滚到版本 100(导入之前)。以下是详细信息:

svn co http://someurl.com/project
cd project
svn merge -r 102:100 http://someurl.com/project
svn commit -m "Rolling back to the old days of r100 :)"

【问题讨论】:

  • @Lekensteyn:这个问题似乎是关于撤消从本地目录中删除文件的操作。我的问题是关于在没有其他项目的本地副本的情况下从 depo 中删除一个文件夹。此处的 SVN 文档区分了两者:svnbook.red-bean.com/en/1.6/svn.ref.svn.c.delete.html
  • 我无法直接想到在本地执行此操作的 SVN 命令,但如果您具有服务器端访问权限,stackoverflow.com/q/402159/427545 可能会有所帮助。
  • 我没有服务器端访问权限
  • 有什么理由不能签出 /project 并使用 svn merge 回到以前的版本?请参阅链接的问题。
  • 谢谢。这对我有用。问题中添加了详细信息。

标签: svn


【解决方案1】:

您的导入和删除是存储库中的单独修订(检查svn log

撤消 SVN 中的任何提交都是反向合并的工作:您必须知道提交的修订 ID 和删除,签出受影响的路径(http://someurl.com/project/ - 是的,可能是 giant checkout,但这是你的麻烦),反向合并错误的修订并将撤消修订提交到 repo

另一种方法是在最新版本中签出http://someurl.com/project/branches/,当它存在时(使用 PEG 语法),分支它,更新到 HEAD,合并分支(真正恢复树),在 WC 中检查结果,提交

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-07
    • 2010-12-19
    • 1970-01-01
    • 2010-09-30
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    相关资源
    最近更新 更多