एक प्रश्न के हिस्से के रूप में मैंने पहले finding the best match between two sources पर देखा, जहां एक सक्रिय गिट रेपो है और दूसरे के पास कोई गिट इतिहास नहीं है, मैंने a perl script to find the closest git commit लिखा था।बड़े स्रोत पेड़ों में "निकटता" मापना
मैं स्क्रिप्ट को फिर से लिखने की प्रक्रिया में हूं ताकि आपको अनुमान लगाने की आवश्यकता न हो कि किस शाखा का उपयोग करना है, लेकिन यह सभी शाखाओं में सबसे नज़दीकी मैच चलाएगा और फिर आपको सबसे अच्छा प्रतिबद्धता बताएगा सबसे अच्छी शाखा दुर्भाग्य से, मुझे लगता है कि मैं जिस माप का उपयोग कर रहा हूं वह "निकटता" का सबसे अच्छा न्यायाधीश नहीं हो सकता है।
वर्तमान में, मैं कोड पेड़ कितने करीब हैं यह निर्धारित करने के लिए diff -burN -x.git my_git_subtree my_src_subtree | wc -l
का उपयोग करता हूं। ऐसा लगता है कि यह कम या ज्यादा काम करता है लेकिन मैं उन मामलों में चलाता हूं जहां पूरे फ़ोल्डर्स जोड़े जाते हैं या गायब होते हैं, जो संभवतः मौजूद है या किसी अन्य शाखा में मौजूद नहीं है।
क्या यह निर्धारित करने का एक बेहतर तरीका है कि स्रोत कितने करीब हैं? मैं ऐसी चीज की कल्पना कर रहा हूं जो निर्देशिका संरचनाओं की तुलना करता है, संभवतः साथ ही साथ कितनी लाइनें अलग-अलग हैं। यह diff
पर अलग-अलग पैरा को पारित करने का मामला हो सकता है, या हो सकता है कि वहां ऐसा कोई अन्य टूल है जो ऐसा कुछ करता है।
कार्यक्रमों के "निकटता" को मापने पर जीतने का कोई तरीका नहीं है। "अगर (~ x) विस्फोट" अगर एक (x) विस्फोट "(एक चरित्र) से थोड़ा अलग है, लेकिन इन दो कार्यक्रमों के परिणाम मूल रूप से अलग हैं। आपके द्वारा प्रस्तावित किसी भी उपायों पर हर कोई ऑब्जेक्ट करेगा; मेरा सुझाव है कि आप एक सेट उठाएं और फ्लेक के साथ रहें। जो नापसंद करते हैं, आप एक बेहतर उत्तर को लागू करने के लिए स्वागत कर सकते हैं। –