2012-10-04 9 views
6

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

मुझे लगता है कि गिट ने नामों को ट्रैक किया है और मैं नाम के माध्यम से इतिहास का पालन करने के लिए git log --follow का उपयोग कर सकता हूं, लेकिन गिट ने नामों को ट्रैक नहीं किया।

मैंने ग्रहण में छोटे रिफैक्टर ऑपरेशन किए हैं जहां नाम प्रतिबद्ध हैं। एकमात्र अंतर प्रतिबद्धता का आकार प्रतीत होता है।

कोई विचार?

+0

इसमें जोड़ने के लिए, ऐसा लगता है कि ईजीआईटी ग्रहण प्लगइन के पास गिट लॉग के लिए -एम या -एल मान निर्दिष्ट करने का कोई तरीका नहीं है (जैसा कि cdhowie द्वारा उल्लिखित है)। इसलिए, यदि आप उन झंडे का उपयोग करना चाहते हैं तो आपको सीएलआई को हिट करना होगा। – Jonathan

+2

ईजीआईटी (ठीक है, जेजीआईटी सटीक होना) 'diff.renameLimit' सेटिंग का सम्मान करता है। डिफ़ॉल्ट 200 है, लेकिन आप इसे अपने वैश्विक या प्रति-भंडार गिट कॉन्फ़िगरेशन में उच्च मान पर कॉन्फ़िगर कर सकते हैं। – robinst

उत्तर

7

गिट इतिहास में नामों को ट्रैक नहीं करता है, लेकिन git log प्रतिबद्ध सामग्री के आधार पर नामों का नाम बदल सकता है।

  • आप renames पता लगाया जा सकें, इसके लिए git log करने के लिए एक कम -M प्रतिशत निर्दिष्ट करने की आवश्यकता हो सकती है। यदि फ़ाइल के कुछ प्रतिशत से अधिक बदल गया है, git log (और git diff) एक नाम बदलने के लिए एक जोड़/हटाए गए जोड़े पर विचार नहीं करेगा। यदि स्थानांतरित की गई फ़ाइलें बहुत छोटी थीं और आवश्यक सामग्री में परिवर्तन (उदाहरण के लिए पैकेज नामों के लिए) तो वे इस सीमा से अधिक हो सकते हैं।
  • आपको -l के लिए भी एक मान निर्दिष्ट करने की आवश्यकता हो सकती है, जो मूल्यांकन के लिए संभावित नामों की अधिकतम संख्या निर्दिष्ट करता है। बड़े कामों में, आप बहुत अधिक हो सकते हैं, और इसलिए गिट लॉग ऑपरेशन को बहुत लंबा लेने से रोकने के लिए नामों का मूल्यांकन नहीं करता है। (नामों का पता लगाना एक ओ (एन^2) ऑपरेशन है, जहां एन उन जोड़ों को जोड़ने/हटाने की संख्या है जिन्हें विचार करने की आवश्यकता है, इसलिए नामों की तलाश में लॉग ऑपरेशन में प्रत्येक प्रतिबद्धता को संसाधित करने के लिए लिया गया समय तेजी से बढ़ता है क्रमपरिवर्तन जोड़ें/हटाएं।)

इन विकल्पों के अधिक विस्तृत विवरण के लिए गिट-लॉग मैनपेज देखें।

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