2011-05-19 15 views
7

में सभी प्रतिभा शाखाओं को आयात करने में समस्या मैं अपनी कंपनी के पर्सफोर्स डिपो से एक गिट भंडार में एक परियोजना आयात करने की कोशिश कर रहा हूं। मैं एक सिंगल शाखा को एक सिंगल गिट रेपो में सफल रहा हूं, लेकिन मैं जो करना चाहता हूं वह पूरी परियोजना और सभी शाखाओं को खींचना है, लेकिन मैं इसे सही तरीके से काम नहीं कर सकता।गिट रेपो

P4PORT=perforce-server.local:1666 
P4USER=my.username 
P4CLIENT=my.clientspec.name 

Clientspec काफी सरल है:

//project/... //my.clientspec.name/project/... 
-//project/External/... //my.clientspec.name/project/External/... 

दूसरी पंक्ति चेकआउट से बाहरी पुस्तकालय बाइनरी बाहर करने के लिए है

मैं अपने .p4settings फ़ाइल है।

मैं Git-पी 4 आयात शुरू करने के लिए निम्न आदेश पंक्ति का उपयोग करें:

git p4 clone --verbose --detect-branches --max-changes=100 //project/[email protected] 

इस के माध्यम से और चेक सभी शाखा के नाम, आदि हो जाता है, और प्रयास करता है पहले प्रतिबद्ध (यह विशेष रूप से परियोजनाओं पर शुरू आयात करने के लिए शुरू होता है परिवर्तन सूची 771)

Importing from //project/[email protected] into project 
Initialized empty Git repository in /Users/grant/Development/git_test/project/.git/ 
Reading pipe: git config git-p4.useclientspec 
Reading pipe: git config git-p4.user 
Reading pipe: git config git-p4.password 
Reading pipe: git config git-p4.port 
Reading pipe: git config git-p4.host 
Reading pipe: git config git-p4.client 
p4 -G branches 
Opening pipe: p4 -G branches 
p4 -G branch -o branch-1 
Opening pipe: p4 -G branch -o branch-1 
Reading pipe: git config --bool core.ignorecase 
p4 -G branch -o branch-2 
... 
Opening pipe: p4 -G branch -o branch-n 
p4-git branches: [] 
initial parents: {} 

पर मुझे यकीन है कि अगर p4-Git शाखाओं, और प्रारंभिक माता-पिता यहां खाली होना चाहिए रहे हैं नहीं कर रहा हूँ, लेकिन वे कर रहे हैं।

अंत में हम जहां यह Git में changelists आयात करना प्रारंभ करने के बारे में है के लिए मिलता है और निम्न होता है:

Getting p4 changes for //project/... 
p4 changes //project/... 
Reading pipe: p4 changes //project/... 
p4 -G describe 771 
Opening pipe: p4 -G describe 771 
Importing revision 771 (1%)branch is MAIN 

    Importing new branch RCMerge/MAIN 
p4 changes //RCMerge/MAIN/[email protected],770 
Reading pipe: p4 changes //RCMerge/MAIN/[email protected],770 

    Resuming with change 771 
parent determined through known branches: Branch-foo 
looking for initial parent for refs/remotes/p4/project/MAIN; current parent is refs/remotes/p4/project/Branch-foo 
commit into refs/remotes/p4/project/MAIN 
parent refs/remotes/p4/project/Branch-foo 
p4 -G -x - print 
Opening pipe: p4 -G -x - print 
Glue/source/.empty 
fatal: Invalid ref name or SHA1 expression: refs/remotes/p4/project/Branch-foo 
fast-import: dumping crash report to .git/fast_import_crash_26002 

यहाँ ऊपर संदर्भित फ़ाइल है:

fast-import crash report: 
    fast-import process: 26002 
    parent process  : 26000 
    at Thu May 19 11:51:54 2011 

fatal: Invalid ref name or SHA1 expression: refs/remotes/p4/project/Branch-foo 

Most Recent Commands Before Crash 
--------------------------------- 
    checkpoint 
    commit refs/remotes/p4/project/MAIN 
    committer Some User <[email protected]> 1253574589 -0800 
    data <<EOT 
* from refs/remotes/p4/project/Branch-foo 

Active Branch LRU 
----------------- 
    active_branches = 0 cur, 5 max 

    pos clock name 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

Inactive Branches 
----------------- 
refs/remotes/p4/project/MAIN: 
    status  : dirty 
    tip commit : 0000000000000000000000000000000000000000 
    old tree : 0000000000000000000000000000000000000000 
    cur tree : 0000000000000000000000000000000000000000 
    commit clock: 0 
    last pack : 


Marks 
----- 

------------------- 
END OF CRASH REPORT 

अब, एक जबरदस्ती नौसिखिया जा रहा है , मुझे नहीं पता कि इसका क्या अर्थ है और इस मुद्दे को हल करने का तरीका नहीं है, या यदि यह भी संभव है। क्या किसी ने पहले एक समान मुद्दे में भाग लिया है? यदि हां, तो आपने इसे कैसे हल किया?

उत्तर

4

मुझे अंततः इस समस्या का समाधान पता चला है। यह पता चला है कि एक पेर्सफोर्स शाखा मैपिंग रिवर्स में किया गया था और यह इस समस्या का स्रोत था।

शाखा-foo मुख्य के बंद branched किया गया था, जो इतनी तरह एक शाखा मानचित्रण होना चाहिए:

//project/MAIN/... //project/Branch-foo/... 

हालांकि, व्यक्ति जो शाखा बनाई, मानचित्रण उलट, इस प्रकार इस में जिसके परिणामस्वरूप:

//project/Branch-foo/... //project/MAIN/... 

इस भ्रमित गिट-पी 4 के रूप में मुख्य रूप से # 771 से शुरू होने वाले पहले परिवर्तक थे और शाखा-फू में # 7652 से चेंजलिस्ट शुरू हो गए थे, इस प्रकार यह शाखा-फू में किसी भी माता-पिता को नहीं मिला और क्रैश हो गया। उपरोक्त सूचीबद्ध पहले में शाखा स्पेक को बदलने से समस्या ठीक हो गई है।