在 Mercurial 中拆分文件并保留双方的历史记录

Posted

技术标签:

【中文标题】在 Mercurial 中拆分文件并保留双方的历史记录【英文标题】:Splitting files in Mercurial and retaining history on both sides 【发布时间】:2010-11-11 15:32:19 【问题描述】:

我需要拆分多个文件,我正在寻找将完整文件历史记录保留在拆分文件中的选项。

背景...

我继承了一个项目,其中包含许多 Oracle PL/SQL 包,包规范和包主体都存储在一个“.sql”文件中。我希望将包规范和包主体放在单独的文件中。

开头:myfile.sql

我想拆分这个文件,以便第一个位(包规范)进入:

myfile.pks

最后一点(包体)进入:

myfile.pkb

我对分离本身没有任何问题,但我想知道是否有人知道如何保留在myfile.pksmyfile.pkb 中显示myfile.sql 的文件历史记录。

【问题讨论】:

【参考方案1】:

分割文件可以通过hg renamehg copy建模,保留历史记录:

hg copy  myfile.sql myfile.pks
hg rename myfile.sql  myfile.pkb

编辑 *.pks 和 *.pkb 文件以删除不属于那里的一半。

编辑后全部提交。

要查看副本和重命名,您必须使用 git 格式的差异:

hg diff -g

由于这非常有用,因此通常在 .hgrcfile 中通过添加以下内容将其设置为默认值:

[diff]
    git=1

【讨论】:

【参考方案2】:

IDE 让它变得更加简单。例如。在 IntelliJ 中选择文件并执行 Refactor > Copy

【讨论】:

以上是关于在 Mercurial 中拆分文件并保留双方的历史记录的主要内容,如果未能解决你的问题,请参考以下文章

在 Mercurial 存储库历史记录中快速查找已删除的文件?

一种方法hg同步git

创建新的 mercurial 存储库克隆 SINCE 修订版

可以制作 Mercurial 以保留文件权限吗?

清理 Mercurial 存储库

提交后修复Mercurial存储库中的重命名