तोड़फोड़: आने वाले परिवर्तनों के बीच अंतर की तुलना कैसे करें?


19

मैं आने वाले परिवर्तनों को स्वीकार करने से पहले अपने सहकर्मियों द्वारा किए गए परिवर्तनों को देखना चाहूंगा।

तो मैं स्टेटस पाकर शुरू करता हूं

svn st -u

... जो मुझे बताता है कि मुझे एक आने वाला बदलाव मिला है

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

मैं देख सकता हूं कि मैंने क्या बदला है

svn diff localChanges.html

... लेकिन मैं कैसे localAndIncoming.htmlदिखा सकता हूं कि क्या बदल गया है, और यह मेरी काम करने की नकल से कैसे अलग है?


आपकी कमांड लाइन के प्रश्न का उत्तर नहीं है, लेकिन: अंत में, एक बार जब आप जानते हैं कि आपकी कार्य प्रतिलिपि से अलग क्या है, तो आप शायद अपने स्वयं के परिवर्तनों के साथ रिपॉजिटरी परिवर्तनों को मर्ज करना चाहते हैं। जब ऐसा करने के लिए कुछ GUI का उपयोग किया जाता है, तो प्रारंभिक रूप में अच्छी तरह से करने में आपकी सहायता करने के लिए GUI का उपयोग क्यों नहीं किया जाता है? TortoiseSVN जैसे उपकरण इस तरह की तुलना करते हैं। इसके अलावा, ग्रहण की तरह आईडीई आने वाले परिवर्तनों की समीक्षा कर सकते हैं (तब भी जब विलय करने के लिए कुछ भी नहीं है - अपने सहकर्मियों के लिए क्या विचार है, यह जानने के लिए अच्छा है) बहुत आसान है , स्वचालित विलय से बचना।
अर्जन

1
क्या TortoiseSVN का उपयोग करके आने वाले परिवर्तनों को देखने का एक GUI तरीका है?
क्रिश्चियन

आप इनकमिंग चेंजेस.html को भी फैलाना चाहेंगे।
रफी खाचदौरीयन 20

जवाबों:


21

मेरा मानना ​​है कि आपको क्या चाहिए:

svn diff -rBASE:HEAD

2

FYI svn diffकरना .svnडायरेक्टरी में संग्रहित अनमॉडिफाइड फाइल के आधार पर एक भिन्नता प्रदान करता है , न कि लाइव रेपो संस्करण पर आधारित।

आप svn updateएक अद्यतन (और संभवतः मर्ज) का प्रयास करने के लिए तोड़फोड़ प्राप्त करने के लिए दौड़ सकते हैं और फिर एक कर सकते हैं svn diff, लेकिन यह उतना साफ नहीं है जितना मुझे लगता है कि मैं चाहता हूं।

अंत svn diffमें समर्थन केवल रेपो पर अलग है। उदाहरण:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

पारित संशोधन के साथ HEAD की तुलना करने के लिए कौन सी चूक है।


2

कछुआ के साथ (यदि आप खिड़कियों का उपयोग करते हैं)

  • लॉग स्क्रीन का आह्वान करें

  • हेड रिविजन का चयन करें

  • LocalAndIncoming.html पर राइट क्लिक करें

  • काम की प्रति के साथ तुलना चुनें


0

आप वास्तव में तब तक नहीं कर सकते जब तक आप वास्तव में नया संस्करण डाउनलोड नहीं करते। इस तरह की सीमाएं बड़े कारणों में से एक थीं कि एक नए प्रकार का स्रोत नियंत्रण हाल ही में लोकप्रिय क्यों हो गया है। इसे विकेंद्रीकृत स्रोत नियंत्रण कहा जाता है।
इस नए फॉर्म के साथ आपका अपना स्थानीय रिपॉजिटरी है, और फिर आप मुख्य रिपॉजिटरी से परिवर्तन ले सकते हैं और उस पर एक परिवर्तन चला सकते हैं, अगर आपको ऐसे बदलाव पसंद नहीं हैं, तो आप अपने स्वयं के रिपॉजिटरी को वापस कर सकते हैं और वहां से जा सकते हैं।

http://mercurial.selenic.com/

और हाँ, मुझे पता है कि आपको उत्पादों को स्विच करने का सुझाव एक इष्टतम समाधान नहीं है, लेकिन यह एक समाधान है जो कम नहीं है।


0

एक और फ़ोल्डर में एक और चेकआउट करें।

cd ..
svn checkout  /path/to/repo clean_working_copy

यदि आप clean_working_copy का पुन: उपयोग करते हैं तो पहले अपडेट करना न भूलें

svn update clean_working_copy

फिर clean_working_copy से अपनी फ़ाइल की तुलना करें

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

या आपके पसंदीदा 3-तरफ़ा अंतर के साथ (मेरा kdiff3 है)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html

यह काम है, लेकिन एक scm को अधिक एकीकृत तरीका प्रदान करना चाहिए।
आरडीएस

0

मुझे लगता है

svn diff -r HEAD

लगभग वही देता है जो आप चाहते हैं। केवल एक चीज यह है कि जो आप अपेक्षा करते हैं उसके सापेक्ष + और - उलट होते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.