2013-03-06 9 views
9

जब लिनक्स कर्नेल की मेरी नकल पर 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: 

\ \ \   \ \ \ 
///  ///
| _/  |// 
|/  |//
| |   | | 
| |   | | 
+3

एक नहीं बल्कि बड़े ढेर ओ 'शाखाओं है यही कारण है कि ... – twalberg

+0

आप केवल प्रतिपादन के बारे में पूछ रहे हैं? मुझे नहीं लगता कि प्रतिबद्धता इतिहास के साथ कोई समस्या है (यानी बैंगनी शाखा उस बिंदु पर दो में विभाजित होती है।) – gcbenison

+0

@ जीसीबीनिसन: आप उस छवि में कुछ स्थानों को देख सकते हैं जहां एक शाखा दो में विभाजित हो गई है, और वे हैं '| /' (पाइप-स्लैश) के रूप में प्रस्तुत किया गया, नहीं ' _' (पाइप-स्पेस-अंडरस्कोर)।यदि इसका मतलब है, तो मैं जानना चाहता हूं कि इस विभाजन और सामान्य के बीच क्या अंतर है; अगर इसका मतलब कुछ अलग है, तो मैं जानना चाहता हूं कि क्या। –

उत्तर

3

मेरे लिए, यह एक प्रतिपादन शिल्पकृति हो रहा है। सबसे अधिक संभावना, सांत्वना उत्पादन, ऐसा होने से

//
|/

की तरह कुछ को रोकने के लिए के रूप में इस टुकड़ा वास्तव में नहीं दिखाया जाएगा जो जगह में एक शाखा आपरेशन हुआ कुछ तर्क है। इस प्रकार, डिजाइनरों ने शायद

//
| _ 

के बजाय चुना।

लेकिन मैं गलत यहाँ हो सकता है, यह कुछ है कि कोड में जाँच की जानी चाहिए हो रहा है।

+0

मुझे ऐसा नहीं लगता: मैं एक साधारण चार-प्रतिबद्ध उदाहरण भंडार उत्पन्न कर सकता हूं जो ग्राफ को एक दूसरे के ऊपर सीधे '/' के साथ दिखाता है। हमेशा '/' और उसके नीचे वाला एक स्थान होता है, लेकिन यदि आप इस छवि को देखते हैं, तो '_'' के साथ प्रतिस्थापित किया गया था, तो वहां एक खाली चरित्र भी होगा। –

3

ack "'_'" Git सूत्रों ऐसा लगता अंडरस्कोर तरह graph.c, line 1120 में छापा जाता है 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], '/'); 

    } 
} 

लेकिन थोड़ी देर के लिए यह खास मतलब वैसे भी नहीं है के लिए इस बारे में सोच के बाद। अंडरस्कोर बाईं ओर कहीं और शाखा बिंदु तक पहुंचने के लिए, वर्तमान से बाईं ओर एक असंबंधित शाखा को पार करने का प्रतीक है। यह आपके स्क्रीनशॉट के अन्य स्थानों पर देखा जा सकता है, लेकिन यह विशेष अंडरस्कोर वास्तव में खो गया दिखता है।

+0

मैं मानता हूं कि यह अंडरस्कोर खो गया दिखता है। जिस कोड को आप इंगित कर रहे हैं वह प्रतिबद्धता ('v1.6.3-rc1-19-geaf158f') स्क्रीन लाइनों को पार करने वाली ग्राफ़ लाइनों को कॉम्पैक्ट करने के लिए है, और किसी भी तरफ' '' होना चाहिए; यह केवल दाईं ओर एक है। जिसका अर्थ है कि यह एक बग है, या इस विशिष्ट अंडरस्कोर को प्रिंट करने के लिए कुछ और है। –

0

बहुत पुराने सवाल, लेकिन आज मैं जबकि Git ग्राफ उत्पादन के लिए एक पार्सर लेखन इस समस्या का सामना करना पड़ा। सबसे पहले मैंने यह भी सोचा कि यह सीधे _ के बाईं ओर शाखा से जुड़ा हुआ है, लेकिन कुछ बड़े भंडारों को आजमाने के बाद मुझे पता चला है कि | बाईं ओर शाखाओं में से एक है। ऐसा क्यों किया जाता है यह मेरे लिए एक पूर्ण रहस्य है। उदाहरण के लिए नीचे देखें।

git log --graph --date-order --all --pretty=format:"%h %p %s"

git_weirdness

संबंधित मुद्दे