1

我将 GraphViz 与以下点文件一起使用:

digraph "Fast-forward"
{
    rankdir=LR;
    subgraph master
    {
        "5c071a6b2c" -> "968bda3251";
    }
    subgraph branch
    {
        "35ee8ce6b6" [color="blue"] [style="filled"];
        "968bda3251" -> "9754d40473" [weight=0];
        "9754d40473" -> "9e59700d33" -> "35ee8ce6b6";
    }
    subgraph c1
    {
        rankdir=LR;
        rank="same";
        "remote/master/HEAD" [shape=box];
        "remote/master/HEAD" -> "35ee8ce6b6" [weight=0];
        oldmh [label="master/HEAD"] [shape=box] [color="red"] [style="filled"];
        newmh [label="master/HEAD"] [shape=box] [color="blue"] [style="filled"];
        oldmh -> "968bda3251" [weight=0];
        newmh -> "35ee8ce6b6" [weight=0];
    }
}

它给了我类似的东西: 包东西

但我想要这样的东西:

                                                     white
                                                        |
                                                       \/
                     "9754d40473" -> "9e59700d33" -> "35ee8ce6b6";
                     /                                  /\

5c071a6b2c -> 968bda3251

             /\                                         |
              |
            red                                       blue

我怎样才能做到这一点?

为了您的帮助,在此先感谢。

4

2 回答 2

3

我倾向于先定义所有具有特殊需求的节点(例如处于同一等级或具有特殊形状/颜色),然后定义链接。这样,您就可以确保rank=same节点被正确分组,并以正确的顺序定义。

没有weight=0,所有的侧链接最终都在顶部。添加weight=0到您想要的底部。

digraph "Fast-forward"
{
    rankdir=LR;
    subgraph c1 {
        rank="same";
        "968bda3251";
        oldmh [label="master/HEAD"] [shape=box] [color="red"] [style="filled"];
    }
    subgraph c2
    {
        rank="same";
        "remote/master/HEAD" [shape=box];
        "35ee8ce6b6" [color="blue"] [style="filled"];
        newmh [label="master/HEAD"] [shape=box] [color="blue"] [style="filled"];
    }
    "5c071a6b2c" -> "968bda3251" -> "9754d40473" -> "9e59700d33" -> "35ee8ce6b6";
    oldmh -> "968bda3251" [weight=0];
    "remote/master/HEAD" -> "35ee8ce6b6";
    newmh -> "35ee8ce6b6" [weight=0];
}

点的结果

如果你真的想要在 96 和 97 之间慢跑,你可以这样做:

digraph "Fast-forward"
{
    rankdir=LR;
    subgraph c1 {
        rank=same;
        "968bda3251";
        oldmh [label="master/HEAD"] [shape=box] [color="red"] [style="filled"];
    }
    subgraph c1p5 {
        rank=same;
        "9754d40473";
        inviso [style="invis"];
    }
    subgraph c2
    {
        rank="same";
        "remote/master/HEAD" [shape=box];
        "35ee8ce6b6" [color="blue"] [style="filled"];
        newmh [label="master/HEAD"] [shape=box] [color="blue"] [style="filled"];
    }
    "5c071a6b2c" -> "968bda3251";
    "968bda3251" -> "9754d40473" [weight=0];
    "9754d40473" -> "9e59700d33" -> "35ee8ce6b6";
    oldmh -> "968bda3251" [weight=0];
    "remote/master/HEAD" -> "35ee8ce6b6";
    newmh -> "35ee8ce6b6" [weight=0];
    "968bda3251" -> inviso [style="invis"];
    "9754d40473" -> inviso [style="invis"];
}

在此处输入图像描述

于 2013-01-15T22:39:10.027 回答
0

rank="same"影响子图的所有节点,因此您必须将标签子图分成两部分:

digraph "Fast-forward"
{
    rankdir=LR;
    subgraph master
    {
        "5c071a6b2c" -> "968bda3251";
    }
    subgraph branch
    {
        "968bda3251" -> "9754d40473" [weight=0];
        "9754d40473" -> "9e59700d33" -> "35ee8ce6b6";
        "35ee8ce6b6" [color="blue"] [style="filled"];
    }
    subgraph c1
    {
        rank="same";
        "remote/master/HEAD" [shape=box];
        "remote/master/HEAD" -> "35ee8ce6b6" [weight=0];
        newmh [label="master/HEAD"] [shape=box] [color="blue"] [style="filled"];
        newmh -> "35ee8ce6b6" [weight=0];
    }
    subgraph c2
    {
        rank="same";
        oldmh [label="master/HEAD"] [shape=box] [color="red"] [style="filled"];
        oldmh -> "968bda3251" [weight=0];
    }
}

这会给你: 在此处输入图像描述

于 2013-01-10T10:55:10.763 回答