【问题标题】:Is it possible to glue history in SVN?是否可以在 SVN 中粘合历史?
【发布时间】:2009-11-24 15:31:48
【问题描述】:

我们有一个历史很长的文件 OLD_FILE,大约有 100 次修订。

然后此文件已从存储库中删除。 并创建了内容为 OLD_FILE 的新文件 NEW_FILE。 不要问我 - 为什么文件不只是重命名;)

然后 NEW_FILE 被更改了 5 次。 然后使用 svn 将 NEW_FILE 重命名为 OLD_FILE。

现在,如果我们尝试查看 OLD_FILE 的历史记录 - 我们只会看到与 NEW_FILE 相关的最近 5 个修订。 但是我们没有看到第一个 OLD_FILE 历史的很多修订。

是否可以修复存储库以查看 OLD_FILE(~100 个修订)和 NEW_FILE(5 个修订)的所有修订? 我想使用命令查看所有这些修订 svn lof -q OLD_FILE

顺便说一句 当我尝试从 TortoiseSVN 调用“显示日志”时,我可以看到下一个对话框:


离线?

连接服务器时出现问题。 你想查看缓存的数据吗?

请理解,由于历史记录不完整,缓存的数据可能已过时、不完整甚至误导。

暂时离线。永久离线。不要离线


然后我可以看到第一个 OLD_FILE 的所有 100 个修订版。

什么意思?

【问题讨论】:

    标签: svn tortoisesvn


    【解决方案1】:

    简短的回答是否定的。

    但如果 NEW_FILE 更改的日期、修订号和与其他更改的相对顺序不重要,您可以:

    恢复旧的修订历史:

    svn rm OLD_FILE 
    svn copy -r when_old_was_gone OLD_FILE OLD_FILE
    

    svn diff 填充对 NEW_FILE、apply the patchcommit 的所有更改的新文件历史记录。您必须分别对每个更改进行差异、修补和提交。

    另一种解决方法是使用 tortoise svn 和 按路径过滤 检索所有修订的日志。将选择同一路径的所有更改。

    【讨论】:

      【解决方案2】:

      由于Subversion不知道NEW_FILEOLD_FILE是相关的,所以你的问题的答案是否定的;它不会显示您想要的综合历史记录。但是,如果您提供适当的 peg revision,您仍然可以访问大约 100 个旧版本。

      例如:

      svn 日志 http://my.repos.com/path/to/OLD_FILE@42

      其中 42 是原始 OLD_FILE 被删除之前的修订版。

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 2013-05-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-27
        • 2020-09-03
        • 1970-01-01
        • 1970-01-01
        • 2012-09-19
        相关资源
        最近更新 更多