6

ブランチのトポロジを、理想的にはきれいな方法で (グラフログのように) 表示することに興味があります。たとえば、(開いている)ブランチがいくつあるか、いつ分割されたか、最後にマージされた日時などを確認したいのですが、それらの間のすべてのマージにも、各ブランチの直線展開にも興味がありません.

これは、たとえば bitbucket のフォークを見るときに役立ちます。Github のネットワーク グラフは役に立ちますが、多くの場合、直線的な開発や頻繁なマージによってブランチ構造がかき消されます。

おそらく次のようなrevsetを使用できると思いました

hg glog --rev "head() or merge() or branch_points()"

ただし、glogbranch_points() を指定する方法、つまり複数の子を持つリビジョンを特定できなかったという事実は言うまでもなく、その間のすべてのリビジョンを表示します。

私の欲求を近似できるマーキュリアル(または別のDVCS)の拡張機能はありますか?そうでない場合、この情報を取得するためのより良い方法はありますか?

4

2 に答える 2

2

次のパッチは、ブランチポイント revset を Mercurial に追加します。現在、Mercurial 2.2 にのみ適用されますが、うまく機能します。

すぐにインクルージョンを推進する時間があるかどうかはわかりません。メーリング リストに行って、含める準備をすることを申し出ることができます (そうすれば、その手間が省けます)。

リビジョンはhttps://bitbucket.org/ArneBab/hg-stableにもあります

# HG changeset patch
# User bab@draketo.de
# Date 1343931127 -7200
# Branch stable
# Node ID f5e211663739e31f2e476c43992ee5335f9d8146
# Parent  00182b3d087909e3c3ae44761efecdde8f319ef3
revsets: added branchpoint() for revisions with more than one child.

Reason: Get very terse information via

    hg glog --rev "head() or merge() or branchpoint()"

diff -r 00182b3d0879 -r f5e211663739 mercurial/revset.py
--- a/mercurial/revset.py       Tue May 01 19:09:15 2012 +0900
+++ b/mercurial/revset.py       Thu Aug 02 20:12:07 2012 +0200
@@ -710,6 +710,15 @@
     cl = repo.changelog
     return [r for r in subset if cl.parentrevs(r)[1] != -1]

+def branchpoint(repo, subset, x):
+    """``branchpoint()``
+    Changeset has more than one child.
+    """
+    # i18n: "merge" is a keyword
+    getargs(x, 0, 0, _("branchpoint takes no arguments"))
+    cl = repo.changelog
+    return [r for r in subset if cl.children(repo[r].node())[1:]]
+
 def minrev(repo, subset, x):
     """``min(set)``
     Changeset with lowest revision number in set.
@@ -1137,6 +1146,7 @@
     "bisected": bisected,
     "bookmark": bookmark,
     "branch": branch,
+    "branchpoint": branchpoint,
     "children": children,
     "closed": closed,
     "contains": contains,
于 2012-08-03T12:25:45.233 に答える
2
  $ hg log -Gr "merge() + head()"
于 2012-12-01T21:05:03.777 に答える