2016-11-08 48 views
0

有没有合并来自几个不同Mercurial存储库的更改日志的方法?通过“合并”,我只是将其整合到一个显示器中;这与源代码控制意义上的合并无关。如何合并来自多个Mercurial存储库的日志显示

换句话说,我想一次在几个不同的存储库上运行hg log。条目应按日期排序,无论它们来自哪个存储库,但限于最后的n天(可配置),并应包含所有存储库的所有分支中的条目。按照作者进行过滤并且在TortoiseHg这样的图形客户端中执行此操作也不错。有谁知道现有的工具或脚本会这样做?或者,如果失败了,是一种以编程方式访问日志条目的好方法? (Mercurial是用Python编写的,这很理想,但我找不到任何关于这个简单API的信息。)

背景:我们正在逐渐开始从SVN转换到Mercurial。从一个服务器的角度来看,旧的存储库不仅仅是单一的,而且在所有项目中都有一个巨大的存储库(尽管存在明智的目录结构)。我们新的Mercurial存储库更加专注!总的来说,这样做效果更好,但是我们错过了SVN的一个有用功能:能够在存储库的根目录下使用svn日志来查看我们近期一直在努力的。这对于填写时间表非常有用,给你一个目的感,等等。

+0

为什么downvote?我只问如何在一个地方总结这些信息以便显示*,而不是回到基本的类似于SVN的工作方式。 –

回答

1

我想出了一个方法来做到这一点。简而言之,我将所有修订合并为一个超级回购,然后我可以在TortoiseHG中查看。当然,这是一团糟,但最好能够总结最近发生的事情。

我做这三个步骤:

  1. (可选)执行关于使用branchmap功能,每个分支重新命名originalreponame/original每个源库hg convert。这使得稍后可以更容易地识别哪个修订来自哪个源存储库。 (更忠实于SVN的是使用文件映射功能。)
  2. 在新的存储库上,运行hg pull -f以从单个存储库强制拉入一个较大的存储库。这可以在一个地方得到所有的修改,但它们以错误的顺序显示。
  3. 使用this answer中描述的方法创建另一个存储库,该存储库包含来自步骤2中创建的所有更改但按正确顺序排序的存储库。 (其实我用微不足道的变种:我得到的散列和比较反对目的地的哈希值,检查目标具有源的前缀,只有跨越复制新的。)

这是所有从Python脚本完成,但尽管Mercurial是用Python编写的,但我只是使用命令行界面使用subprocess模块。运行这三个步骤只会复制新的修订版本,而不会从头开始重新构建所有内容,除非您添加新的修订版。

相关问题