svn - सबवर्सन में पहले से किए गए लॉग संदेश को कैसे संपादित करें?




commit (6)

अनिवार्य रूप से आपको ऐसा करने के लिए भंडार में व्यवस्थापक अधिकार (प्रत्यक्ष या परोक्ष रूप से) होना चाहिए। आप या तो सभी उपयोगकर्ताओं को ऐसा करने की अनुमति देने के लिए संग्रह को कॉन्फ़िगर कर सकते हैं, या आप सीधे सर्वर पर लॉग संदेश को संशोधित कर सकते हैं।

सबवर्जन एफएक्यू (जोर मेरा) का यह हिस्सा देखें:

प्रत्येक संदेश से जुड़े गुणों के रूप में लॉग संदेशों को भंडार में रखा जाता है। डिफ़ॉल्ट रूप से, लॉग संदेश प्रॉपर्टी (svn: log) इसे लागू होने के बाद संपादित नहीं किया जा सकता है । इसका कारण यह है कि संशोधन गुणों में परिवर्तन (जिनमें से svn: log एक है) संपत्ति के पिछले मान को स्थायी रूप से त्यागने का कारण बनता है, और सबवर्सन आपको यह गलती से करने से रोकने की कोशिश करता है। हालांकि, एक संशोधन संपत्ति बदलने के लिए सबवर्जन प्राप्त करने के कुछ तरीके हैं।

पहला तरीका रिपोजिटरी व्यवस्थापक के लिए संशोधन संपत्ति संशोधनों को सक्षम करने के लिए है। यह "प्री-रिप्रप्रॉप-चेंज" नामक एक हुक बनाकर किया जाता है (इस अनुभाग को सबवर्सन बुक में देखें, यह कैसे करें इसके बारे में अधिक जानकारी के लिए)। "प्री-रेप्रप्रॉप-चेंज" हुक में पुराने लॉग संदेश तक पहुंचने से पहले इसका उपयोग होता है, इसलिए यह इसे किसी भी तरीके से संरक्षित कर सकता है (उदाहरण के लिए, ईमेल भेजकर)। संशोधन संशोधन संशोधनों को एक बार सक्षम करने के बाद, आप इनमें से किसी एक की तरह, svn propedit या svn propset पर --revprop स्विच को पास करके एक संशोधन का लॉग संदेश बदल सकते हैं:

$svn propedit -r N --revprop svn:log URL 
$svn propset -r N --revprop svn:log "new log message" URL 

जहां एन संशोधन संख्या है जिसका लॉग संदेश आप बदलना चाहते हैं, और यूआरएल भंडार का स्थान है। यदि आप इस कमांड को एक कार्यशील प्रतिलिपि से चलाते हैं, तो आप यूआरएल छोड़ सकते हैं।

लॉग संदेश बदलने का दूसरा तरीका svnadmin setlog का उपयोग करना है। यह फाइल सिस्टम पर भंडार के स्थान का जिक्र करके किया जाना चाहिए। आप इस कमांड का उपयोग कर रिमोट रिपोजिटरी को संशोधित नहीं कर सकते हैं।

$ svnadmin setlog REPOS_PATH -r N FILE

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

सबवर्सन में एक निश्चित संशोधन के लॉग संदेश को संपादित करने का कोई तरीका है? मैंने गलती से मेरे प्रतिबद्ध संदेश में गलत फ़ाइल नाम लिखा जो बाद में भ्रमित हो सकता है।

मैंने देखा है कि मैं गिट में एक गलत प्रतिबद्ध संदेश कैसे संपादित करूं? , लेकिन उस प्रश्न का समाधान सबवर्जन के लिए समान नहीं लगता है ( svn help commit अनुसार)।


जब आप यह आदेश चलाते हैं,

svn propedit svn:log --revprop -r NNN 

और अगर आपको यह संदेश दिखाई देता है:

डीएवी अनुरोध विफल रहा; यह संभव है कि रिपोजिटरी का प्री-रेप्रप्रॉप-चेंज हुक या तो असफल हो या अस्तित्व में न हो

इसका कारण यह है कि सबवर्सन आपको लॉग संदेशों को संशोधित करने की अनुमति नहीं देता है क्योंकि वे अपरिवर्तित हैं और स्थायी रूप से खो जाएंगे।

अपने सबवर्जन सर्वर पर हुक निर्देशिका पर जाएं (अपनी रिपोजिटरी की निर्देशिका के साथ ~ / svn / reponame को प्रतिस्थापित करें)

cd ~/svn/reponame/hooks

एक्सटेंशन निकालें

mv pre-revprop-change.tmpl pre-revprop-change

इसे निष्पादन योग्य बनाएं (chmod + x नहीं कर सकता!)

chmod 755 pre-revprop-change

Source


यदि आप ग्रहण जैसे आईडीई का उपयोग कर रहे हैं, तो आप इस आसान तरीके का उपयोग कर सकते हैं।

Right click on the project -> Team - Show history

उस right click on the revision id for your commit and select 'Set commit properties'

आप जिस संदेश से यहां चाहते हैं उसे संशोधित कर सकते हैं।


यदि आपकी रिपॉजिटरी प्री-रेप्रप्रॉप-चेंज हुक के माध्यम से संशोधन गुणों को सेट करने में सक्षम बनाता है तो आप लॉग संदेशों को अधिक आसान बदल सकते हैं।

svn propedit --revprop -r 1234 url://to/repository

या टोर्टोइज एसवीएन, अंखएसवीएन और शायद कई अन्य विवर्तन क्लाइंट्स में लॉग एंट्री पर राइट क्लिक करके और फिर 'लॉग संदेश बदलें'।


विंडोज़ पर, टोर्टोइज एसवीएन क्लाइंट का उपयोग करके:

  1. अपने प्रोजेक्ट फ़ोल्डर में राइट क्लिक करें और "लॉग दिखाएं" चुनें
  2. लॉग संदेश विंडो में, एक संशोधन पर राइट क्लिक करें और "लॉग संदेश संपादित करें" चुनें

यदि यह काम नहीं करता है तो सर्वर पर एसवीएन सेट होने के कारण, यहां अन्य प्रतिक्रियाएं पढ़ी जा सकती हैं।


सबवर्जन एफएक्यू इसमें शामिल है, लेकिन किसी भी वास्तविक उदाहरण दिए बिना REPOS_PATH जैसे भ्रमित अपरिभाषित शब्दों का एक समूह का उपयोग करता है।

इसे काम करने में कुछ प्रयास लग सकते हैं, इसलिए फ़ाइल में अपना अपडेट किया गया प्रतिबद्ध संदेश सहेजें। svn-commit.tmp फ़ाइलों के विपरीत, यदि समस्या हो तो सबवर्सन आपके टाइपिंग को सुरक्षित नहीं रखेगा।

अपनी कामकाजी निर्देशिका में, चलाएं

svn propedit -r N --revprop svn:log

प्रतिबद्ध संदेश को संपादित करने के लिए। अगर यह काम करता है, तो बढ़िया! लेकिन शायद यह नहीं होगा, क्योंकि svn:log संशोधन संपत्ति अनवरोधित है और डिफ़ॉल्ट रूप से सबवर्जन आपको हुक स्क्रिप्ट pre-revprop-change , या एक त्रुटि संदेश के साथ रोक देगा जो आपके पास ऐसा नहीं है हुक।

हुक बदलने के लिए, आपको उस फाइल सिस्टम तक पहुंच की आवश्यकता है जिस पर भंडार होस्ट किया गया है। svn info आपको रिपोजिटरी रूट बताएगी। मान लीजिए कि यह ~/svnrepo

  1. cd से ~/svnrepo/hooks
  2. क्या कोई pre-revprop-change या pre-revprop-change.bat स्क्रिप्ट है? यदि ऐसा है, तो अस्थायी रूप से उस हिस्से के बारे में टिप्पणी करें जो आपके द्वारा svn:log को बदलने का प्रयास करता है।
  3. अन्यथा, विंडोज़ पर, pre-revprop-change.bat नामक एक खाली फ़ाइल pre-revprop-change.bat । ऐसा करने का एक तरीका यहां दिया गया है:

    copy con pre-revprop-change.bat
    ^Z
    
  4. अन्यथा, यूनिक्स पर, चलाएं

    echo '#!/bin/sh' > pre-revprop-change
    chmod +x pre-revprop-change
    
  5. काम करने की प्रतिलिपि में, svn propedit -r N --revprop svn:log फिर से svn propedit -r N --revprop svn:log करें

  6. ~/svnrepo/hooks/svn-revprop-change ( .bat ) में अपने परिवर्तन पूर्ववत करें




commit