9

Linuxカーネルのコピーで実行git log --graphすると、グラフにアンダースコアが表示されますが、そこにあるはずではないように見えます。

そのアンダースコアはどういう意味ですか?

したがって、私が使用している特定のコマンドは次のとおりです。

git log --graph --decorate --pretty=oneline --abbrev-commit --all --date-order

そして、出力は次のようになります。

git log --graph output

gitkのグラフでこの領域を見てみましたが、異常なことは何もないようです。

左側ではなく右側にレンダリングされると予想されるため、これは分岐点を示しているだけではないと思います(左側は上の画像と一致する必要があります)。

I see:        I'd expect for
              normal branching:

 \ \ \         \ \ \
 / / /         / / /
| _ /         | / /
|  /          |/ /
| |           | |
| |           | |
4

3 に答える 3

4

ack "'_'"Git ソースからは、関数内のgraph.c1120 行目にアンダースコアが出力されているように見えます。graph_output_collapsing_line

/*
 * Output out a line based on the new mapping info
 */
for (i = 0; i < graph->mapping_size; i++) {
    int target = graph->new_mapping[i];
    if (target < 0)
        strbuf_addch(sb, ' ');
    else if (target * 2 == i)
        strbuf_write_column(sb, &graph->new_columns[target], '|');
    else if (target == horizontal_edge_target &&
         i != horizontal_edge - 1) {
            /*
             * Set the mappings for all but the
             * first segment to -1 so that they
             * won't continue into the next line.
             */
            if (i != (target * 2)+3)
                graph->new_mapping[i] = -1;
            used_horizontal = 1;
        strbuf_write_column(sb, &graph->new_columns[target], '_');
    } else {
        if (used_horizontal && i < horizontal_edge)
            graph->new_mapping[i] = -1;
        strbuf_write_column(sb, &graph->new_columns[target], '/');

    }
}

しかし、しばらく考えてみると、あまり意味がありません。アンダースコアは、現在の分岐から左に無関係な分岐を渡って、さらに左の分岐点に到達するための記号です。これはスクリーンショットの他の場所にも見られますが、この特定のアンダースコアは実際には失われているように見えます。

于 2013-03-06T15:40:27.417 に答える
3

私には、これはレンダリング アーティファクトのようです。ほとんどの場合、コンソール出力には、このようなことを防ぐためのロジックがあります

/ /
| /

このスニペットは、分岐操作が発生した場所を正確に示していないためです。したがって、設計者はおそらく

/ /
| _

代わりは。

しかし、ここで間違っている可能性があります。コードでチェックアウトする必要があるようです。

于 2013-03-06T15:03:18.420 に答える