मैंने काफी बड़े एसवीएन भंडार को माइग्रेट करने के लिए एक साधारण स्क्रिप्ट बनाई है। git svn clone
का उपयोग करने के बजाय, मैं git svn init
और git svn fetch
का उपयोग कर रहा हूं ताकि मैं संशोधन निर्दिष्ट कर सकूं और इसे खंड द्वारा खंडित कर सकूं।गिट-एसवीएन लाने और खाली निर्देशिका को कैसे बनाए रखें?
while [ "$CURRENT_REVISION" -lt "$MAX_REVISION" ]; do
END_REVISION=$((CURRENT_REVISION + 100))
if [ "$END_REVISION" -ge "$MAX_REVISION" ]
then
END_REVISION=$MAX_REVISION
fi
git svn fetch -r "$CURRENT_REVISION":"$END_REVISION" --authors-file="$AUTHORS_FILE"
#increasing the current and end revision
CURRENT_REVISION=$END_REVISION
END_REVISION=$((CURRENT_REVISION + 100))
done
हालांकि, मैं समझता हूँ कि डिफ़ॉल्ट रूप से लाने/क्लोन के व्यवहार खाली निर्देशिका नहीं रह जाएगी: कम या ज्यादा, यह कुछ इस तरह है। इस प्रकार, मुझे उन खाली निर्देशिकाओं में मैन्युअल रूप से जांच करने की आवश्यकता हो सकती है (* जिन्हें मैं टालने का प्रयास कर रहा हूं)।
में --preserve-empty-dirs
पैरामीटर है लेकिन git svn fetch
में नहीं है।
क्या यह चाल करने के लिए कोई कामकाज है?
अद्यतन
भले ही यह आधिकारिक दस्तावेज है कि हम के लिए config कुंजी का उपयोग कर सकते हैं लाने में उल्लेख नहीं है, यह वास्तव में काम करता है
इस से संबंधित @Vampire द्वारा विस्तृत विवरण नहीं है सवाल। तो मैं इसे सरल बना दूंगा।
init भंडार करने के बाद, मैं अपने दूरस्थ शाखा के विन्यास बदलना पड़ा:
git config svn-remote.<remote name>.preserve-empty-dirs "true"
git config svn-remote.<remote name>.placeholder-filename ".gitkeep"
आप /.git/config को देखकर विन्यास को सत्यापित कर सकते हैं। बस सामान्य fetch करें और आपकी निर्देशिका संरक्षित किया जाएगा।
क्या आप इसे एक बार रूपांतरण के लिए उपयोग करते हैं, या आप गिट-एसवीएन का उपयोग सबवर्सन रिपोजिटरी के सामने के रूप में करने के लिए करना चाहते हैं जो अभी भी आपके कोड के लिए कैनोलिक स्रोत होगा? – Vampire
हां, मैं कह सकता हूं कि यह एक बार रूपांतरण है। – alfonzjanfrithz