有没有办法合并来自几个不同的Mercurial存储库的更改日志?通过“合并”这里我只是意味着集成到一个显示器;这与源控制意义上的合并无关。
换句话说,我想一次在几个不同的存储库上运行if ($result = $conn->query($query)) {
/* fetch object array */
while ($row = $result->fetch_row()) {
echo "<p class='lead'>" . $row[0] . "</p>";
}
/* free result set */
$result->close();
}
。这些条目应按日期排序,无论它们来自哪个存储库,但仅限于最后 n 天(可配置),并且应包括来自所有存储库的所有分支的条目。按作者过滤并在像TortoiseHg这样的图形客户端中执行此操作也会很不错。有谁知道现有的工具或脚本会这样做?或者,如果不这样,一个以程序方式访问日志条目的好方法? (Mercurial是用Python编写的,这是理想的,但是我找不到关于这个简单API的任何信息。)
背景:我们逐渐开始从SVN过渡到Mercurial。从一台服务器的角度来看,旧的存储库不仅仅是单一的,而且在某种意义上说,所有项目都有一个巨大的存储库(尽管有一个合理的目录结构)。我们新的Mercurial存储库更专注!一般来说,这样做效果要好得多,但我们错过了SVN的一个有用功能:能够在存储库的根目录下使用svn log来查看我们最近一直在处理的所有。它对于填写时间表,给自己一种目的感等非常有用。
答案 0 :(得分:1)
我想出了一种自己做的方法。简而言之,我将所有修订合并为一个mega-repo,然后我可以在TortoiseHG中查看它。当然,它总是一团糟,但它足以得到最近发生的事情的总结。
我分三步完成:
hg convert
,将每个分支从original
重命名为reponame/original
。这使得以后更容易识别哪个修订来自哪个源存储库。 (更忠实于SVN将改为使用filemap功能。)hg pull -f
以强制从单个存储库拉入一个大存储库。这会在一个地方获得所有修订,但它们会以错误的顺序出现。这一切都是从Python脚本完成的,但是虽然Mercurial是用Python编写的,但我只是使用命令行界面使用subprocess
模块。运行这三个步骤只会复制新修订版,而无需从头开始重建所有内容,除非您添加新的仓库。