【问题标题】:Repair links between moved files in Mercurial修复 Mercurial 中移动文件之间的链接
【发布时间】:2011-05-24 03:49:18
【问题描述】:

在拥有这个 repo(最初是 SVN)的过程中,我一直不太擅长将文件链接保持在一起。我已经两次更改了 IDE,将项目拆分为 Netbeans 模块,并随着时间的推移对项目进行了 mavenized。大部分文件历史都丢失了,主要是因为在 mavenizing 期间我删除了整个主干,提交,复制了 maven 项目,然后提交。不完全是最好的主意,因为我后来发现所有的历史都重置到了那个点。它变得如此糟糕,以至于存储库统计程序毫无用处,因为它说我投入了 50,000 行代码而不是大约 8,000 行。

有没有办法修复所有损坏的文件历史记录?如果 Mercurial 不能,我可以访问 SVN 和 Git

【问题讨论】:

    标签: java svn git mercurial


    【解决方案1】:

    Hrm,如果您刚刚完成hg addremove --similarity 90,那么您进行删除和复制的时间会很好,上面写着“删除所有已消失的内容,添加所有新内容,如果它们 90% 相似另一个算作重命名”。

    现在这个机会已经过去了,没有办法在不重新编写存储库的情况下移动一个,这会随着所有节点 id(哈希)的变化而使野外的所有克隆无效。如果没关系,并且您的历史基本上是线性的,您可能可以通过以下方式解决:

    hg export --output "../patch-%n.patch" 0:tip  # exports every changeset to a patch file
    cd ..
    hg init newrepo
    cd newrepo
    hg import --similarity 90 ../patch*
    

    这需要从您的第一次提交到最后一次提交(不包括分支和其他头等)的线性历史记录。将它们导出到补丁,创建一个新的空存储库,并使用重命名检测功能导入变更集。

    这是一个非常激烈的行为,因此请确保它对您来说真的值得,并妥善保存您的旧回购。

    【讨论】:

    • 因为我是这个 repo 上唯一的人,没有人克隆它,我应该没问题。但是,有没有办法合并我在 SVN 中所做的删除和复制提交?因为你在mavenizing之前还有破历史的问题。我能想到的唯一方法是回滚到那个特定的版本,完成工作,然后在上面应用所有更改。但这是我在 Mercurial 中不太熟悉的操作,我认为它会丢失所有时间戳,这是我想要保留的东西。
    • 如果您要使用 export-everything import-everything 路线,您可以使用 hg import --no-commit 合并两个变更集,然后在执行 hg commit 之前执行两个导入。时间戳可以设置为您想要的变更集上的任何内容(请参阅commit --date),并且根本不会跟踪文件时间戳。
    • 回到这个问题,我试图这样做,但在重新创建 repo 时遇到了问题。我使用hg export --git -a -o "../patch-%r.patch" -vv 0:tip 导出并使用(大大简化)for i in `ls .. | grep patch`; do hg import --similarity 90 --user "..." --force --date "..." ../$i; done; 导入。但是我收到很多导入错误:文件不存在,它们已经存在,或者被拒绝。有什么建议吗?
    • @TheLQ 历史记录中的任何非线性都需要特别处理。在导入之前,您需要对每个变更集的父级“更新”。当两个变更集按顺序或父子顺序排列时,您可以跳过“hg update”,因为您上次提交让您更新到下一个 repo 的父级,但每次不是这种情况,您都需要手动执行。这是我给你的“基本上是线性的”警告。 glob 也适用于 for 循环,因此您可以这样做:for i in ../*patch* ; do
    • 这最初是一个 SVN 存储库,只有 trunk 中的代码。当我使用 hg convert 将其转换为 mercurial 时,我从未做过任何类型的分支、多头或其他类似的怪事。所以我很困惑我怎么会得到这样的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 2015-05-30
    • 2013-02-01
    相关资源
    最近更新 更多