आसान इतिहास नेविगेशन के लिए पूर्व-पेड़ के साथ मैगिट का संयोजन


16

मैं प्यार करता हूँ undo-tree(नीचे स्क्रीनशॉट)। यह इस तरह के रूप में सरल कुंजी के साथ एक अलग विंडो (नीचे खिड़की) में फ़ाइल के इतिहास पेड़ के चारों ओर उपयोगकर्ता इस कदम की अनुमति से एक फ़ाइल (ऊपर विंडो) के विभिन्न संस्करणों के माध्यम से नेविगेट करने के लिए एक आसान तरीका प्रदान n, pऔर C-bऔर C-fएक ही के वंशज भर में स्विच करने के लिए माता-पिता।

सबसे विशेष रूप से undo-tree, स्वचालित रूप से ट्री व्यू में चयन के आधार पर फ़ाइल को पकड़े हुए बफर को अपडेट किया जाता है।

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

क्या magitआज के साथ यह सब संभव है?

यहाँ छवि विवरण दर्ज करें


अगर यह MAGIT साथ संभव है पता नहीं है, लेकिन कम से एक lookt है github.com/pidu/git-timemachine
clemera

मुझे यकीन नहीं है, लेकिन मुझे लगता है कि undo-treeएक पेड़ का उपयोग करता है (यह नाम :-p में है), जबकि गिट इतिहास एक निर्देशित चक्रीय ग्राफ है । यह गैर-तुच्छ हो सकता है।
सुवायु १२'१५

2
मैगिट कुछ इस तरह का समर्थन करता है, लेकिन मैं वर्तमान में बदल रहा हूं कि फीचर कैसे चालू होता है। जब मैं उसके साथ करूँगा तो एक उत्तर दूंगा।
तारसियस

जवाबों:


7

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


एक समान सुविधा लंबे समय से अस्तित्व में है - जब आप लॉग बफर में एक कमिट से दूसरे में जाते हैं, और उसी फ्रेम में एक और विंडो रिपॉजिटरी का रिवीजन बफर होता है, तो उस बफर को रिफ्रेश करने के लिए यह दिखाने की बजाय कि वह जो भी कमिट करता है। पहले दिखा रहा था।

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

इसलिए अब आपको SPCरिवीजन बफर को प्रदर्शित करने के लिए एक बार प्रेस करना होगा। जब आप लॉग बफ़र के चारों ओर चलते हैं, तभी इसे अपडेट किया जाना शुरू हो जाएगा।

यदि आप नहीं चाहते कि संशोधन बफर अपडेट किया जाए, तो यह करें:

(remove-hook 'magit-section-movement-hook
             'magit-log-maybe-update-revision-buffer)

यदि दूसरी ओर आप यह भी चाहते हैं कि स्टेटस बफर में घूमते समय रिवीजन बफर को अपडेट किया जाए, तो इस का उपयोग करें:

(add-hook 'magit-section-movement-hook
          'magit-status-maybe-update-revision-buffer)

एक बूँद बफर के लिए अब स्वचालित रूप से एक समान तरीके से अपडेट किया जाना संभव है। पहले इसे जोड़ें:

(add-hook 'magit-section-movement-hook
          'magit-log-maybe-update-blob-buffer)

और शायद:

(add-hook 'magit-section-movement-hook
          'magit-status-maybe-update-blob-buffer)

फिर, एक लॉग (या स्थिति) बफर प्रेस के अंदर RETसंशोधन बफर को प्रदर्शित करने या अपडेट करने के लिए, और उस बफर पर स्विच करने के लिए भी। जिस फ़ाइल में आप रुचि रखते हैं उस पर जाएं और RETफिर से दबाएं । अब आप एक "ब्लॉब-विजिटिंग" बफर में हैं, जो एक फाइल-विजिटिंग बफर के समान है, सिवाय इसके कि यह वर्किंग ट्री में फाइल को विजिट नहीं करता है लेकिन फाइल कुछ कमिट में है।

लॉग (या स्थिति) बफ़र पर वापस जाएँ और किसी अन्य कमिट पर जाएँ। बूँद बफर अद्यतन किया जा रहा है।


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

साथ ही इसे प्रयोग बफर एक ब्लॉब के भीतर से अगले या पिछले ब्लॉब नेविगेट करने के लिए संभव है pऔर n। मुझे लगता है कि ज्यादातर मामलों में आप हाल ही में एक बूँद के साथ शुरू करते हैं और फिर पीछे की ओर पुराने बूब्स का उपयोग करते हैं p। यदि आप ऐसा करते हैं और फिर दूसरी दिशा में जाना चाहते हैं, तो मैं आपको qवर्तमान बफर को मारने के लिए उपयोग करने की सलाह देता हूं और इस तरह पिछले बफर यानी अगले ब्लॉब पर चला जाता हूं ।

यह भी ध्यान दें कि आपको पहले किसी संशोधन पर जाने की ज़रूरत नहीं है, ताकि एक बूँद का दौरा कर सकें। आप M-x magit-find-file RET <revision> RET <file> RETसीधे भी उपयोग कर सकते हैं, लेकिन मुझे लगता है कि कम सुविधाजनक है।


शुक्रिया तारियस। मैं मैजिट के साथ काम कर रहा हूं 20151014.231(नवीनतम जहां तक ​​मैं बता सकता हूं)। मैंने ऊपर वर्णित चरणों का अनुसरण करने का प्रयास किया। मैं चला गया करने के लिए magit-log-buffer-fileजो मुझे और साथ नीचे प्रतिबद्ध नेविगेट करने के लिए अनुमति देता है nऔर pलेकिन जब मैं प्रेस SPCया RETउनमें से एक पर मैं मिलता है:Symbol's value as variable is void: magit-blame-mode
Amelio वेज़क्वेज़-रीना

आप शायद गलती magit-blame-maybe-update-revision-bufferसे जुड़ magit-section-movement-hookगए।
तारसियस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.