【问题标题】:Recover a folder or file in TortoiseSVN whilst also retaining all history恢复 TortoiseSVN 中的文件夹或文件,同时保留所有历史记录
【发布时间】:2010-05-19 05:17:22
【问题描述】:

在版本 1 中存在一个文件夹。 在修订版 2 中,文件夹被意外删除并提交了更改。

我们希望回滚以使文件夹存在,并保留其历史记录。

TortoiseSVN docs 中,它在标题为“找回已删除的文件或文件夹”的部分中指明“如何”。

引用:

找回已删除的文件或文件夹

如果你已经删除了一个文件或文件夹并且已经将该删除操作提交到存储库,那么普通的 TortoiseSVN -> Revert 不能再将它恢复。但是文件或文件夹根本没有丢失。如果您知道文件或文件夹被删除的版本(如果不知道,请使用日志对话框查找)打开存储库浏览器并切换到该版本。然后选择您删除的文件或文件夹,右键单击并选择 [上下文菜单] -> [复制到...] 作为该复制操作的目标,选择工作副本的路径。

正如人们所期望的那样,开关将文件检索到我的工作副本中,但是当我右键单击此工作副本时,上下文菜单上没有“复制到”选项。如果我打开 repos 浏览器,有一个复制到选项,但似乎这只是获取文件的副本。

我觉得解决方案是做一个分支/标签,但是如果我从以前的版本尝试这个到存储库中的相同路径,SVN 会抛出路径已经存在的错误。

因此,如何在 TortoiseSVN 中恢复文件夹/文件,同时保留所有历史记录。

TortoiseSVN v1.6.8,构建 19260 - 32 位,Subversion 1.6.11,

【问题讨论】:

    标签: svn tortoisesvn


    【解决方案1】:

    做一个“反向合并”:

    1. 确保您的工作副本已更新为 HEAD 并且完全干净(并非绝对必要,但在尝试合并之前始终是一个好主意)
    2. 右键单击文件夹并选择 TortoiseSVN > 合并...
    3. 选择“合并一系列修订”并点击“下一步”
    4. 要合并的 URL 是您当前目录的 repo 路径(即包含已删除文件的目录)
    5. 要合并的版本范围是您删除文件的版本(此处显示日志可能会有所帮助)
    6. 一定要选择“反向合并”
    7. 点击“下一步”
    8. 所有默认的合并选项都应该足够了,所以点击“合并”

    该文件现在应该被添加并且仍然保留它之前的所有历史记录。

    说明:

    这会“回滚”包含删除的修订,但会将合并信息添加到目录属性中。 SVN 可以通过这个元数据跟踪原始文件。在命令行上,您可以对删除它的版本进行向后合并:

    svn merge -c -<revision-number> path/containing/file
    

    注意版本号前的连字符(即“负”版本号)。

    【讨论】:

    • 谢谢,这行得通。我希望在幕后它可能会像 khmarbaise 提到的 copyto 一样工作,但尚未验证该方法是否会保留历史。
    • 如果我以后有时间检查一下,我会在这里发布结果。
    【解决方案2】:

    您用“复制到”描述的内容仅在 Repo-Browser 中是正确的。这正是您应该恢复文件的方式。另一方面,复制有什么问题?

    【讨论】:

      【解决方案3】:

      存储库浏览器中的“复制到”是正确的。我想你错过了一个事实,这是一个保留历史信息的 svn 副本。正是你所要求的。

      【讨论】:

        【解决方案4】:

        我认为您可以使用上下文菜单中的“Branch/Tag...”选项来执行此操作,只需将特定修订指定为源,将主干指定为目标。

        AFAIK,它相当于svn copy 命令行。

        您也可以在命令行中使用svn copy...

        【讨论】:

        • 是的,我也认为是分支/标签,但是它抱怨因为目标已经存在。必须进行一些内部 TortoiseSVN 检查吗?如果没有进一步的 Tortoise 建议,我会尝试 detly 建议的复制方法或向后合并
        • 目标需要在 repo 中,可能类似于http://someserver/svn/foo/trunk/MissingDir,而不是工作副本。
        猜你喜欢
        • 1970-01-01
        • 2021-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-22
        • 2018-09-02
        相关资源
        最近更新 更多