2009-11-07 14 views
15

मौजूदा svn भंडार के केवल-पढ़ने वाले गिट दर्पण को स्थापित करने का सबसे अच्छा तरीका क्या होगा, और पोस्ट-प्रतिबद्ध हुक सेट अप करें, जब भी कोई भी svn, git दर्पण स्वचालित रूप से अद्यतन किया जाता है? मुख्य रूप से, मैं सर्वर पर बस एक बार गिट-एसवीएन क्लोन चलाने के लिए चाहता हूं, और फिर लोगों को गिट-एसवीएन को पूरे एसवीएन रिपोजिटरी क्लोन किए बिना गिट से बाहर निकलने दें।एक एसवीएन रिपोजिटरी के पढ़ने-केवल गिट दर्पण

उत्तर

4

मैं ऐसा प्रोजेक्ट करता हूं जो एसवीएन का उपयोग करता है (गीथब पर सार्वजनिक भंडार को दबाकर)। मैं एक SVN प्रतिबद्ध हुक, लेकिन यह एक क्रॉन जॉब पर नहीं:

#!/bin/bash 

repo=/path/to/my-mirror.git 
lockfile="$repo/cron-lock" 

if ! lockfile -r1 "$lockfile";then 
     exit 1 
fi 

export GIT_DIR=$repo 
# update refs/remotes/git-svn: 
git svn fetch -q 
# make 'master' match the git-svn branch: 
git fetch "$repo" refs/remotes/git-svn:refs/heads/master 
# publish to github 
git push github master 

rm -f "$lockfile" 

आप एक SVN से गति प्रदान कर एक क्रॉन जॉब के बजाय हुक के लिए प्रतिबद्ध हैं, तो यह काम करना चाहिए।

बेशक, आपको का उपयोग कर github नामक रिमोट सेट अप करने की आवश्यकता है। मैं जिस गीट रिपोजिटरी का उपयोग कर रहा हूं वह एक "नंगे" भंडार है (git init --bare देखें)।

+0

धन्यवाद, गीथब का उपयोग करने से –

2

एक एसवीएन/गिट दर्पण (लिखने योग्य) स्थापित करने का सबसे अच्छा तरीका SubGit का उपयोग करना होगा - यह एक उपकरण विशेष रूप से इस कार्य के लिए विकसित किया गया है। अस्वीकरण: मैं इस उपकरण के डेवलपर हूं।

+0

सुंदर, धन्यवाद –

+1

के अलावा, सबगिट 2.0 को अब सबवर्जन रिपोजिटरी में स्थानीय पहुंच की आवश्यकता नहीं है और रिमोट सबवर्जन रेपॉजिटरी के लिखने योग्य गिट दर्पण भी बना सकता है (http: // देखें subgit.com/eap)। –

+2

@AlexanderKitaev कृपया ध्यान दें कि किसी उत्पाद या किसी अन्य वेबसाइट से लिंक करते समय आपको अपनी संबद्धता का खुलासा करना होगा। मैं [इस पोस्ट] से देखता हूं (http://stackoverflow.com/a/13288270/2057919) कि आपने सबगिट विकसित किया है। मैंने इस जवाब को प्रतिबिंबित करने के लिए संपादित किया है। भविष्य में, यदि आप सबगिट से लिंक करते हैं तो कृपया अपने कनेक्शन का उल्लेख करना सुनिश्चित करें। –