सामान्य मामले में, आपको वास्तव में प्रत्येक प्रतिबद्धता की जांच करनी होगी, क्योंकि आपके पास यह जानने का कोई तरीका नहीं है कि क्या आपके पास एक बड़ा अंतर हो सकता है, अगले में छोटा अंतर हो सकता है, फिर दूसरा बड़ा अंतर, फिर एक माध्यम diff ...
आपकी सबसे अच्छी शर्त शायद विशिष्ट फ़ाइलों को सीमित करने जा रही है। यदि आप केवल एक फ़ाइल पर विचार करते हैं, तो उस फ़ाइल के सभी संस्करणों के माध्यम से इसे फिर से शुरू नहीं करना चाहिए (सूची पाने के लिए git rev-list <path>
का उपयोग करें, इसलिए आपको प्रत्येक प्रतिबद्धता का परीक्षण करने की आवश्यकता नहीं है)। प्रत्येक प्रतिबद्धता के लिए जो फ़ाइल को संशोधित करता है, आप diff के आकार की जांच कर सकते हैं, और काफी जल्दी से न्यूनतम खोज सकते हैं। कुछ हद तक फाइलों के लिए ऐसा करें, उम्मीद है कि वे सहमत होंगे!
अंतरण के लिए स्वयं को सेट करने का सबसे अच्छा तरीका है अपने टैरबॉल में बस कॉपी करके अस्थायी प्रतिबद्धता बनाना, ताकि आप की तुलना करने के लिए tarball
नामक एक शाखा हो। इस तरह, आप ऐसा कर सकता है:
git rev-list path/to/file | while read hash; do echo -n "$hash "; git diff --numstat tarball $hash path/to/file; done
उनके diff आकारों के साथ सभी प्रतिबद्ध का एक अच्छा सूची प्राप्त करने के (पहले तीन स्तंभों SHA1 हो जाएगा, लाइनों की संख्या को जोड़ा, और लाइनों की संख्या हटा दिए गए)।फिर आप इसे awk '{print $1,$2+$3}' | sort -n -k 2
पर पाइप कर सकते हैं, और आपके पास कामों और उनके diff आकारों की एक क्रमबद्ध सूची होगी!
यदि आप परीक्षण करने के लिए स्वयं को एक छोटी सी मुट्ठी भर फाइलों तक सीमित नहीं कर सकते हैं, तो शायद मुझे git-bisect
जैसा कुछ भी लागू करने का लुत्फ उठाया जा सकता है - बस एक छोटे से अंतर को कम करने की कोशिश करें, इस धारणा को ध्यान में रखें कि सभी संभावनाएं, आपके सर्वोत्तम मामले के पास आने के लिए छोटे अंतर भी होंगे, और इससे दूर तक बहुत बड़ा अंतर होगा। (कहीं न्यूटन की विधि और बाइनरी/ग्रिड खोज पर एक पूर्ण, शायद के बीच?)
संपादित करें: एक और संभावना है, Douglas' answer में सुझाव दिया, अगर आपको लगता है कि कुछ फ़ाइलें में कुछ करने के समान हो सकता है हैश करने के लिए है उन्हें git-hash-object
का उपयोग करके, और फिर देखें कि आपके इतिहास में क्या काम करता है वह ब्लॉब है। ऐसा करने के तरीके के बारे में question with some excellent answers है। यदि आप इसे कुछ हद तक फाइलों के साथ करते हैं - अधिमानतः जो अक्सर बदलते हैं - आप लक्ष्य प्रतिबद्धता को बहुत तेज़ी से कम करने में सक्षम हो सकते हैं।
मैं ध्यान दें कि कि राल में सबसे पुराना फ़ाइलों 31/10/2006 12 पर संशोधित किया गया: 57। मैं वहां अपनी खोज शुरू करूंगा। – Douglas
जैसा कि मूल पोस्ट में बताया गया है, मुझे लगभग पता है कि उन्होंने 2004/2005 में कहीं भी फोर्क किया था, लेकिन यह अभी भी मैन्युअल रूप से जांच करने के लिए बहुत अधिक है। –