2008-10-15 21 views
15

मेरे पास मेरे पीसी में एक स्थानीय एसवीएन भंडार है, मैं इसे एक शौक परियोजना के लिए उपयोग कर रहा हूं और यह किसी के लिए सुलभ नहीं था, इसलिए मैंने उन फ़ाइलों में पासवर्ड के साथ काम किया।एसवीएन इतिहास से फ़ाइल सामग्री हटाएं

अब, मैं अन्य लोगों के लिए भंडार उपलब्ध कराने की सोच रहा हूं और मैं वहां वह डेटा नहीं चाहता हूं।

क्या भंडार को क्रॉल करने और "xxxxxxxxxx" जैसे टेक्स्ट के साथ सभी पासवर्ड और खाता डेटा को बदलने का कोई तरीका है?

उत्तर

0

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

9

आप एक

svnadmin dump > mysvn 

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

आखिरकार, आप इस डंप को एक नए भंडार में फिर से लोड करेंगे। यह आपके प्रोजेक्ट के इतिहास को सुरक्षित रखेगा।

svnadmin load /path/to/new/repo < mysvn 

इस अभ्यास पर विचार किया जाएगा नहीं-नहीं किसी भी कारपोरेट वातावरण जहां लेखा परीक्षा, आदि से गुजरना है, लेकिन एक शौक परियोजना के लिए यह तुम्हारे लिए चाल बस ऐसा कर सकते में।

संपादित करें: मुझे दो अलग-अलग भंडारों को एक साथ मर्ज करने का प्रयास करने से पहले ऐसा करना पड़ा, इसलिए इसे फ्लैट फ़ाइल को एक नया "निर्देशिका नोड" जोड़ने की आवश्यकता थी। मुझे यकीन नहीं है कि अगर एसवीएन फाइलों या परिवर्तनों को निर्धारित करता है तो यह निर्धारित करने के लिए कि क्या यह छेड़छाड़ की गई है।

+1

वास्तव में यह चेकसम को जांचता है क्योंकि यह डेटा को पुनः लोड करता है। इसी तरह की समस्या के लिए बस इस दृष्टिकोण का प्रयास किया। :) – Iain

+0

यह काम करेगा, लेकिन आपको संपादित की गई किसी भी फाइल (नोड-पथ) के लिए md5sum को अपडेट करने की आवश्यकता होगी। Vim में आप फ़ाइल का प्रतिनिधित्व करने वाले अनुभाग को हाइलाइट करने के लिए ctrl-v का उपयोग कर सकते हैं, फिर नया हैश प्राप्त करने के लिए ":! Md5sum" टाइप करें। फ़ाइल PROPS-END लाइन के बाद शुरू होती है, और अगले "नोड-पथ:" पंक्ति के बाद दो रिक्त रेखाओं के साथ समाप्त होती है। –

13

चेक सबवर्सन पूछे जाने वाले प्रश्न: How do I completely remove a file from the repository's history?

+0

अक्सर पूछे जाने वाले प्रश्न http://subversion.apache.org/faq.html#removal – Witek

+0

धन्यवाद, Witek पर ले जाया गया है। मैंने लिंक अपडेट किया है। –

+1

क्या आप निष्पादित करने के लिए आदेश जोड़ देंगे। मुझे समझ में नहीं आया कि वे मदद में क्या कहते हैं। इसका मतलब क्या है 'svnadmin को अपने भंडार को डंप करने के लिए, फिर svndumpfilter (खराब पथ को छोड़कर) को svnadmin लोड कमांड में डंपफाइल पाइप करें। लिंक में कोई विवरण नहीं दिया गया है। – Hunsu

7

ऐसा लगता है एक गलतफहमी थी। मैं एक फाइल को हटाना नहीं चाहता था। मैं भंडार में संग्रहीत पासवर्ड को हटाना चाहता हूं। मैं फ़ाइलों को खोना नहीं चाहता, न ही संशोधन, संशोधन और इतिहास।

मैंने जो किया वह मैट ने सुझाव दिया, भंडार को डंप करें और इसे संपादित करें।

ऐसा करने के लिए, मैं एक हेक्साडेसिमल संपादक (khexedit) का इस्तेमाल किया और एक ही लंबाई के एक स्ट्रिंग के साथ पासवर्ड स्ट्रिंग बदल दिया। इस तरह, मुझे आकार फ़ील्ड अपडेट करने की आवश्यकता नहीं है।

अगला, मुझे फ़ाइल सामग्री के हैश के साथ md5 फ़ील्ड को अद्यतन करने की आवश्यकता है। इस के लिए, मैं एक स्क्रिप्ट है कि इस्तेमाल किया "svnadmin लोड" उत्पादन एक त्रुटि पैदा करते हैं और उस त्रुटि से पुराने और नए md5 प्राप्त करने के लिए लिखा था। इसके बाद, पुराने हैश को sed के साथ प्रतिस्थापित करें और फिर, तब तक दोहराएं जब तक त्रुटियां न हों।

+2

क्या आप कोड पोस्ट कर सकते हैं? – BCS

+0

'svnadmin डंप रेपो> svn.dump', फिर उस फ़ाइल के संस्करण ढूंढें जिन्हें आपको संपादित करने की आवश्यकता है। उन फ़ाइलों को निर्यात करें ('svn निर्यात फ़ाइल @ r1234 फ़ाइल .1234')। निर्यात की गई फ़ाइलों को फ़ाइल.1234.modified में कॉपी करें। 'X' के साथ पासवर्ड ओवरराइट करें ताकि वे एक ही आकार के हों। नए md5sums और sha1 रकम प्राप्त करें ('md5sum फ़ाइल। *; Sha1sum फ़ाइल। *')। Vim में svn.dump खोलें और पूर्व-संशोधन md5sum के लिए खोजें। पासवर्ड को ओवरराइट करें जैसा कि आपकी संशोधित फ़ाइल में सटीक था, और md5sum और sha1sum को अपडेट करें। फिर 'एमवी repo repo.bak && svnadmin लोड repo dannysauer

4

मुझे एक ही समस्या थी, लेकिन code.google.com की तुलना में: मैंने कुछ फाइलों में चेक किया जो Googlecode पर इतिहास के माध्यम से सुलभ नहीं होना चाहिए, लेकिन कुछ गूंजने, कोशिश करने, पुनः प्रयास करने और बाद में मैं सभी इतिहास को मिटाना नहीं चाहता था। मैं पुनः प्रयास कर रहा था। नुस्खा जो मेरी छोटी परियोजना (6.5 एमबी, 90 संशोधन) के लिए काम के नीचे।अधिकांश ज्ञान, बाकी ज्यादातर svn redbook

से googlecode से आया सबसे पहले एक स्थानीय रेपो जहां को GoogleCode के रेपो डाउनलोड करेंगे बनाने:/isd_gc/हुक/पूर्व revprop-

svnadmin create /tmp/your_local_repo 

फ़ाइल बनाने/tmp सामग्री के साथ बदल

#!/bin/bash 
exit 0 

यह निष्पादन योग्य बनाने:

chmod +x /tmp/isd_gc/hooks/pre-revprop-change 

यदि आप इस खंड में विफल रहते हैं तो आपको सबसे अधिक संभावना दिखाई देगी: पूर्व-सुधार-परिवर्तन हुक (निकास कोड 255) द्वारा कोई आउटपुट के साथ अवरुद्ध परिवर्तन अवरुद्ध।

अब आप code.google.com

svnsync init --username [email protected] file:///tmp/your_local_repo https://yourproject.googlecode.com/svn 

से SVN सिंक init और सभी इतिहास डाउनलोड करना शुरू कर सकते हैं: संशोधन 1 के लिए

svnsync sync --username [email protected] file:///tmp/your_local_repo 

प्रतिबद्ध संशोधन 1.

कॉपी किए गए गुण

फ़ाइल डेटा प्रेषित .......................

संशोधन 87.

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

svnadmin dump . > /tmp/tst_dump_gc.dmp 

इससे पहले अनचाहे फ़ाइल को हटाने के लिए svndumpfilter का उपयोग करें।

svndumpfilter exclude /trunk/unwanted file_1.jsvg </tmp/tst_dump_gc.dmp> /tmp/tst_dump_clean1.dmp 

छोड़ा 1 नोड:

'/ ट्रंक/अवांछित file_new.jsvg'

दूसरी अवांछित फ़ाइल निकालें:

svndumpfilter exclude /trunk/unwanted file_2.jsvg </tmp/tst_dump_clean1.dmp> /tmp/tst_dump_clean2.dmp 

विश्राम "पुराने अस्थायी रेपो"

rm -rf /tmp/your_local_repo 

svnadmin create /tmp/your_local_repo 

लोड फ़िल्टर किए गए डम रेपो में पी

[/tmp]$svnadmin load --ignore-uuid your_local_repo < /tmp/tst_dump_clean2.dmp 

चेक कि सब कुछ एक SVN ग्राहक में ठीक है (ट्रंक पर एक इतिहास की जांच कर रही है केवल पता चलता मेरी SVN ग्राहक में 25 पहला परिणाम)।

svnsync sync --username [email protected] https://yourproject.googlecode.com/svn 
संबंधित मुद्दे