2009-04-24 11 views
12

मैं एक previous question में उल्लेख किया है, मैं लाज़िमी से हमारे स्रोत नियंत्रण git की ओर पलायन में देख रहा हूँ के साथ सारी फ़ाइलें इतिहास हो रही है।
चारों ओर देखते हुए, मैंने git-p4 पाया है (यदि आप किसी थोड़ा और अधिक खुदाई करने के लिए तो यह और भी भंडार लिंक द्वारा बताया पर नहीं है के बाद से की है। वास्तविक git-p4 script ढूंढने में कठिन)।Git-पी 4

मैं अब इस स्क्रिप्ट चल रहा हूँ, और यह एक नया Git भंडार में फ़ाइलों के वर्तमान संस्करण का आयात करता है, लेकिन मैं इतिहास पाने के लिए, कोई फर्क नहीं पड़ता कि मुझे क्या करना प्रबंधित नहीं कर सकते।

यहाँ वर्तमान कमांड लाइन का उपयोग मैं है:

P4CLIENT=my-p4-clientspec git-p4 clone --max-changes=1000 --use-client-spec //p4/path/to/be/imported/...

तो, असली सवाल यह है: अगर कोई इतिहास सहित एक पी 4 डिपो, आयात में कामयाब रहा है, मुझे पता है कि कैसे करना चाहते हैं तुमने यह किया।

धन्यवाद!

जोस।

उत्तर

19

फ़ाइल पथ पर "@all" जोड़ने का प्रयास करें। उदाहरण के लिए, यह मेरे लिए एक एकल संशोधन रेपो पैदा करता है:

python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \ 
    //depot/services/master-pom/trunk/... 

यह आदेश पूर्ण इतिहास आयात:

python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \ 
    //depot/services/master-pom/trunk/[email protected] 

मैं उदाहरण Git-पी 4 उपयोग करने की कोशिश, लेकिन कई कारणों से छोड़ दिया और लिखा था मेरा अपना फास्ट-आयात पंप। यह थोड़ी देर पहले था, इसलिए कुछ समस्याएं अब तय हो सकती हैं: लेकिन गिट-पी 4 में बड़ी चेंजलिस्ट (जैसे शाखा की प्रारंभिक रचना) के साथ परेशानी थी (हालांकि क्लाइंट स्पेक का उपयोग करने में मदद मिली है, मैं नहीं करता मुझे लगता है कि मैंने कोशिश की) और "+ एस" फ़ाइल प्रकार संशोधक के साथ फाइलें (जो खराब और बुरा है, लेकिन हम इसका इस्तेमाल करते थे)। और मेरा पायथन-फू मेरे मुद्दों को ठीक करने के लिए तैयार नहीं था।

संपादित करें: के बाद से किसी को इसके लिए पूछा, ये रहा।

https://github.com/araqnid/p4utils में कई पी 4 चीजें हैं, जिनमें से पी 4-गीट-एक्सफर पी 4-> गिट (एक तरफा) प्रतिकृतिक है। हालांकि, बुनियादी ढांचे के वास्तविक टुकड़े की बजाय मुख्य रूप से एक व्यक्तिगत आसान उपकरण होने के कारण इसमें कुछ समस्याएं हैं।

प्रारंभ करें:

p4-git-xfer clone -d $PWD/dictionary.git -n //depot/services/midoffice/dictionary/... \ 
    trunk 'release/*' 'branch/*' \ 
    trunk=master release/*=r* branch/*=dev/* 

एक नंगे "dictionary.git" करने के लिए है कि जबरदस्ती पथ क्लोन होगा। आधार पथ के बाद पहला तर्क "शाखा चश्मा" है जो प्रतिकृति को बताता है कि आधार के नीचे शाखाएं कहां मिलें। बाद वाले ('=' प्रतीकों के साथ) "दर्पण चश्मा" हैं जो प्रतिकृतिकर्ता को बताते हैं कि आयातित लोगों से स्थानीय शाखाएं कैसे बनाएं। शाखा चश्मा बनाने के लिए "refs/remotes/p4/trunk", "refs/remotes/p4/release/1.0" इत्यादि का कारण बनता है। दर्पण चश्मा "रेफरी/रिमोट्स/पी 4/ट्रंक", "रेफर्स/रीमोट्स/पी 4/रिलीज/1.0" इत्यादि के लिए "रेफर्स/रीमोट्स/पी 4/ट्रंक", "रेफर्स/हेड/आर 1.0" दर्पण के लिए "रेफर्स/हेड/मास्टर" को बल देते हैं। इसका इरादा था मुझे क्लोनों के प्रचार के लिए दोहराए गए लोगों से केवल विशेष शाखाओं का चयन करने की अनुमति देने का एक तरीका है।

यह पता लगाने के लिए कैसे एक शाखा बनाई गई है का प्रयास करेंगे, लेकिन वह ख़ामख़ाह के साथ वैसे भी एक अनुमान का एक सा है। इसके अलावा, यह किसी भी शाखा ट्रैकिंग को करने की कोशिश नहीं करता है: यहां तक ​​कि पूरे शाखा विलय भी इस तरह के बारे में नहीं लिखा जाएगा, क्षमा करें।

प्रारंभिक क्लोन के बाद, p4-git-xfer fetch को गिट प्रतिकृति के अंदर से चलाना एक वृद्धिशील अद्यतन करेगा। हाई-वॉटर-मार्क चेंजलिस्ट को गिट रेपो के भीतर marks/p4 से लिया गया है। यह एक अंक फ़ाइल है जो तेजी से आयात लोड करता है, इसलिए यदि आप चीजों को फिर से लिखने के लिए फ़िल्टर-शाखा का उपयोग करने जैसी कोई फैंसी फुटवर्क करते हैं, तो सावधान रहें कि आपको इसे भी अपडेट करना पड़ सकता है।

यह सुंदर नहीं है, और इसमें कुछ मध्यम-गंभीर समस्याएं हैं; मैं इसे मुख्य रूप से अपनी सुविधा के लिए उपयोग करता हूं, खुद को पर्सफोर्स की समस्याओं से अलग करने के लिए, दिन-प्रतिदिन के आलोचनात्मक बुनियादी ढांचे घटक के रूप में नहीं। यह एक तरफा है: मैं आमतौर पर git format-patch द्वारा बनाए गए पैच लागू करने के लिए पी 4-एम स्क्रिप्ट का उपयोग करता हूं। खुद यह केवल सामान्य पार्स मलिनता, अंत फ़ाइल नई-पंक्तियों के साथ समस्याओं, द्विआधारी परिवर्तन आदि के साथ ज्यादातर काम करता है,

+0

के साथ jocelynlegault पर मेरे पास पहुंच सकते हैं क्या आपकी पी 4 आयात स्क्रिप्ट सार्वजनिक है? यदि हां, तो क्या आप इसे साझा करना चाहते हैं? – joce

0

मैं भी Git-पी 4 यह पता लगाने की कोशिश कर रहा हूँ। दुर्भाग्यवश, वहां बहुत अधिक दस्तावेज़ीकरण नहीं है। मैं आपके साथ संपर्क में रहना चाहता हूं क्योंकि हम शायद एक-दूसरे की मदद कर सकते हैं।

+0

कार्ल। आप gmail.com – joce

-1

Git-पी 4 मदद वास्तव में बहुत अच्छी है:

man git-p4 

Ubuntu 12.04 पर यह है git-man पैकेज में शामिल करें।

0
  1. Git पार्टी (CLI)
  2. स्थापित p4 CLI
  3. स्थापित अजगर स्थापित 2.7
  4. प्राप्त Git-पी 4 स्क्रिप्ट >>http://git.kernel.org/cgit/git/git.git/plain/git-p4.py
  5. सी/कार्यक्रम/फ़ाइलें/Git में इस स्क्रिप्ट को/बिन/
  6. अब पाइथन पूर्ण, पी 4 किया गया, गिट किया गया, गिट पी 4,
  7. टाइपिंग क्लाइंट वर्कस्पेस गिट नामक गिट बैश या cmd चेक खोलें।
  8. Git p4 क्लोन डिपो/path/@ सभी रेपो/पथ

मामले does not काम अजगर के लिए निर्धारित वातावरण चर में पथ बस में अगर अजगर समस्या सेट P4CLIENT बनाता = Git अरे वहाँ