以直线发展的方式查看多变的历史

Iva*_*rus 6 mercurial

我有兴趣查看我的分支的拓扑结构,理想情况是以一种漂亮的方式(la graphlog).例如,我想看看有多少(开放)分支,何时分割,最后一次合并到彼此等等.我对它们之间的所有合并不感兴趣,也不对每个分支上的直线开发感兴趣.

例如,当查看bitbucket上的分叉时,这很有用.Github的网络图有所帮助,但分支结构常常被直线开发和/或频繁合并所淹没.

我想也许我可以使用像

hg glog --rev "head() or merge() or branch_points()"
Run Code Online (Sandbox Code Playgroud)

但随后会glog显示介于两者之间的所有修订,更不用说我无法弄清楚如何指定branch_points()即具有多个子项的修订版本.

是否存在可以近似于我的欲望的mercurial(或其他DVCS)的扩展?如果没有,是否有更好的方法来获取此信息?

Arn*_*ide 2

以下补丁将分支点修订集添加到 Mercurial。它目前仅适用于 Mercurial 2.2,但它运行得很好。

\n\n

我不知道我是否有时间快速推动纳入。您可以转到邮件列表并主动提出将其准备好以供包含(这将节省我的工作)。

\n\n

修订版也在https://bitbucket.org/ArneBab/hg-stable

\n\n
# HG changeset patch\n# User bab@draketo.de\n# Date 1343931127 -7200\n# Branch stable\n# Node ID f5e211663739e31f2e476c43992ee5335f9d8146\n# Parent  00182b3d087909e3c3ae44761efecdde8f319ef3\nrevsets: added branchpoint() for revisions with more than one child.\n\nReason: Get very terse information via\n\n    hg glog --rev "head() or merge() or branchpoint()"\n\ndiff -r 00182b3d0879 -r f5e211663739 mercurial/revset.py\n--- a/mercurial/revset.py       Tue May 01 19:09:15 2012 +0900\n+++ b/mercurial/revset.py       Thu Aug 02 20:12:07 2012 +0200\n@@ -710,6 +710,15 @@\n     cl = repo.changelog\n     return [r for r in subset if cl.parentrevs(r)[1] != -1]\n\n+def branchpoint(repo, subset, x):\n+    """``branchpoint()``\n+    Changeset has more than one child.\n+    """\n+    # i18n: "merge" is a keyword\n+    getargs(x, 0, 0, _("branchpoint takes no arguments"))\n+    cl = repo.changelog\n+    return [r for r in subset if cl.children(repo[r].node())[1:]]\n+\n def minrev(repo, subset, x):\n     """``min(set)``\n     Changeset with lowest revision number in set.\n@@ -1137,6 +1146,7 @@\n     "bisected": bisected,\n     "bookmark": bookmark,\n     "branch": branch,\n+    "branchpoint": branchpoint,\n     "children": children,\n     "closed": closed,\n     "contains": contains,\n
Run Code Online (Sandbox Code Playgroud)\n

  • 是的,它在档案馆里。线程开始于http://www.selenic.com/pipermail/mercurial-devel/2012-August/043486.html (2认同)
  • 这使得它进入了 Mercurial 2.4(经过开发人员的改进)。 (2认同)