2009-07-28 13 views
17

जब मेरी टीम ने पहली बार एसवीएन के साथ शुरुआत की, तो हमने रिपोजिटरी में काम करते समय हमारे पहले नामों का उपयोग किया, हालांकि, अब हमारी टीम बढ़ी है, हम मुद्दों में चल रहे हैं क्योंकि हमने अभी दूसरे Mike को किराए पर लिया है।क्या पूरे भंडार इतिहास के माध्यम से एसवीएन उपयोगकर्ता नाम बदलने का कोई तरीका है?

हम क्या करना चाहते हैं, हर किसी के उपयोगकर्ता नाम उनके कंप्यूटर पर उपयोगकर्ता नाम (पहला नाम प्रारंभिक + अंतिम नाम) जैसा ही बदलना है। जो मुद्दा मैं देख रहा हूं वह यह है कि एसवीएन इतिहास अभी भी पुराने उपयोगकर्ता नामों को दिखाएगा।

क्या भंडार के पूरे इतिहास में उपयोगकर्ता नाम बदलने के लिए कोई उपकरण है?

उदाहरण के लिए, मैं हर प्रतिबद्ध है कि वर्तमान में माइक को जिम्मेदार ठहराया है msmith को बदलने के लिए, सभी तरह से वापस संशोधन चाहते हैं 1.

मेरी पहली सोचा कि मैं कुछ पार्स करने और प्रसंस्करण करना होगा है एक डंप फ़ाइल पर, लेकिन एक उपकरण अच्छा होगा।

+2

क्या आपने माइक का नाम बदलने की कोशिश की है? – Draemon

+4

हम वास्तव में, थोड़े समय के लिए हम फिल के रूप में उनका जिक्र कर रहे थे ... –

+1

आपका स्वागत है, अगर यह केवल एक मजाक था ... –

उत्तर

2

इसमें बहुत कुछ देखा गया लेकिन मुझे अंत में एक पर्ल स्क्रिप्ट मिली जो एसवीएन डंप फ़ाइल के खिलाफ काम करता है।

मैंने आज सुबह अपने भंडार के डंप पर यह कोशिश की और यह बेकार ढंग से काम किया।

Here is the direct link

-2

स्मृति से, इतिहास में कुछ भी बदलने के लिए मानक एसवीएन उत्तर डेटाबेस का एक टेक्स्ट डंप करना है, इसके माध्यम से खोज-प्रतिस्थापन करना और उस से डेटाबेस को फिर से बनाना है।

लेकिन मैं सच में इसकी 0.x-दिनों के बाद से SVN के आंतरिक भागों को देखा नहीं किया है, तो मैं बंद हो सकती है ...

11

हाँ है:

svn propset --revprop -r revision_number svn:author new_username 

हालांकि, SVN डिफ़ॉल्ट रूप से संशोधन गुणों को बदलने की अनुमति नहीं देता है। इसके लिए आपको pre-revprop-change hook script सेट अप करने की आवश्यकता है।

exit 0 

कि सेट किया गया है, तो आप अपनी आवश्यकताओं के लिए एक स्क्रिप्ट लिखने के लिए सक्षम होना चाहिए: खिड़कियों पर, यह उस बस एक पंक्ति है अपने भंडार का हुक फ़ोल्डर में एक बैट फ़ाइल डाल करने के लिए पर्याप्त होता है।

संपादित करें: मैं इस के माध्यम से परीक्षण नहीं किया, लेकिन मुझे लगता है कि इस PowerShell में चाल करना चाहिए:

([xml] (svn log --xml)).log.logentry 
    | ? {$_.author -eq "Mike"} 
    | foreach {svn propset --revprop -r $_.revision svn:author msmith} 
+2

svnadmin हुक समस्या के आसपास हो जाता है – Greg

3

Thunder Below में, द्वितीय विश्व युद्ध में यूएसएस बार्ब की कहानी, एक नया अधिकारी सवार आता है। कप्तान ने उन्हें अपना नाम पूछा। "माइक", वह जवाब देता है। कप्तान कहते हैं, "नहीं, हमारे पास पहले से ही एक माइक है"। "हम आपको रॉबर्ट कहते हैं। युद्ध में, जब मैं आदेश बुलाता हूं, तो इस बारे में कोई भ्रम नहीं हो सकता कि मैं किससे बात कर रहा हूं।"

मुझे जो मिल रहा है वह यह है कि आपका नया माइक एक और नाम चुनने के लिए उदाहरण है।

20

आप svndumptool उपयोग कर सकते हैं:

svnadmin डंप path/to/मेरी/रेपो> repo.dump

svndumptool बदलना-revprop SVN: लेखक originalregexp NEWVALUE repo.dump newrepo।डंप

+0

मैं एक निजी से पैकेज ले जा रहा था समुदाय रेपो को रेपो जहां उपयोगकर्ताओं के पास अलग-अलग लेखक नाम थे। मैंने svndumptool का उपयोग किया और यह पूरी तरह से काम किया। – claytron

12

TortoiseSVN इस कार्यशीलता के लिए उत्कृष्ट समर्थन हासिल है: अपने Revision Log Dialog एक वांछित के रूप में (इस सवाल में आम तौर पर सभी की तरह) लेखक (यहां तक ​​कि नियमित अभिव्यक्ति के माध्यम से), चयन संशोधन फ़िल्टर की गई सूची के आधार पर फ़िल्टर से और चयन कर सकते हैं 'संपादन के भीतर संदर्भ मेनू से लेखक '।

जेरोहेन्स answer में उल्लिखित स्थान पर pre-revprop-change hook होने की पूर्व शर्त अभी भी लागू होती है।

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

6

भंडार सर्वर पर, आप कर सकते हैं:

  1. स्टोर नए उपयोगकर्ता नाम कोई नई पंक्ति के साथ एक फ़ाइल में अंत में (गूंज -n)
  2. :

    echo -n "msmith" > msmith.txt 
    svn log /svn -q | grep Mike | cut -f 1 -d' ' | xargs -n1 svnadmin setrevprop /svn svn:author msmith.txt -r 
    

    यहाँ कि क्या कर रहा है

  3. /svn में भंडार के लिए पूर्ण लॉग प्राप्त करें, केवल सारांश जानकारी प्रदर्शित करें (लॉग संदेश नहीं) (svn log -q)
  4. माइक (grep)
  5. के साथ लाइनें खोजें
  6. पहले फ़ील्ड को छोड़कर सब कुछ फ़िल्टर करें (संशोधन #) (कट)
  7. चरण 4 (xargs) में मिले प्रत्येक संशोधन पर svnadmin आदेश चलाएं। केवल आदेश के निष्पादन (-n1) के एक संशोधन को पास करें। वह msmith.txt फ़ाइल की सामग्री के साथ svn: लेखक गुण को प्रतिस्थापित करेगा।
+0

यह सबसे अच्छा जवाब है! – gecco