2009-12-11 9 views
13

में स्थानांतरित फ़ाइलों को एकीकृत करना कहें कि मैंने अपने कोडबेस के बल में एक शाखा बनाई है। यहाँ शाखा कल्पना है:प्रतिस्थापित

//depot/code/main/... //depot/code/branch/... 

फिर, शाखा में, मैं शाखायुक्त फ़ाइल a.txt ले जाने का कहना है कि ->

p4 integrate //depot/code/branch/a.txt //depot/code/branch/b.txt 
p4 delete //depot/code/branch/a.txt 

का उपयोग कर अब b.txt, मान लें कि कुछ परिवर्तन करने के लिए बना रहे हैं चलो मुख्य रूप से a.txt जिसमें मैं

में b.txt में एकीकृत करना चाहता हूं, जब मैं मूल शाखा spec का उपयोग करके एकीकृत करने का प्रयास करता हूं, तो यह मुख्य रूप से b.txt में किए गए परिवर्तनों को प्रतिबिंबित नहीं करता है। .txt - क्या नामित फ़ाइल में मुख्य शो में किए गए परिवर्तनों का कोई तरीका है?

शाखा का नमूना बड़ा (सैकड़ों परिवर्तन) है और शाखा में कुछ फाइलों का नाम बदल दिया गया है, इसलिए मैं ऐसा करने का एक स्वचालित तरीका चाहता हूं। अगर मैं यहां कुछ भी स्पष्टीकरण दे सकता हूं तो मुझे बताएं - यह एक व्हाइटबोर्ड रखने में मदद करेगा;)

धन्यवाद! सैम

उत्तर

3

पर्सफोर्स 200.1 में उचित नाम हैं, जो इससे संभवतः, और किसी भी मामले में केवल भविष्य के नामों के लिए मदद कर सकते हैं। , Perforce 2009.1 release notes देखें विशेष रूप से:

#177023 * ** 
    The new 'p4 move' command allows for better support for 
    renaming files. A file must be already opened for 'edit' 
    or 'add' in order to be moved. Moved files can be synced, 
    resolved and diffed against the repository just like files 
    opened for 'edit'. See 'p4 help move' for more info. 

आप शाखा कल्पना में नाम बदलने जोड़ सकते हैं। फिर कम से कम एकीकरण स्वचालित हो जाएगा - भले ही शाखा का नमूना लंबा और अधिक जटिल हो।

+3

के साथ मदद नहीं करता है, जहां तक ​​मैं इसे समझता हूं, * केवल * पी 4 चाल के लाभ ही हैं कि आप एक परमाणु परिवर्तनीय में फ़ाइल को साफ़ और संपादित कर सकते हैं, और जब तक आप उस परिवर्तनीय जांच में आगे सिंक स्रोत से लक्ष्य तक परिवर्तन प्रसारित करेंगे। * * के बाद * आपने इसे चेक किया है, यह एक शाखा, एक संपादन और एक हटाने की क्रिया के समान व्यवहार करता है सिवाय इसके कि वे अविभाज्य हैं। यह एक शाखा से दूसरी शाखा में कदमों को एकीकृत करने में मदद नहीं करता है। यह अन्य स्रोत नियंत्रण प्रणालियों में "प्रथम श्रेणी के नाम" नहीं कहा जाता है। – Weeble

+0

मुझे लगता है कि आप सही हो सकते हैं - ऐसा लगता है - हालांकि, डेटाबेस में दर्ज मेटा-डेटा के साथ, पर्सफोर्स भविष्य में उचित प्रबंधन जोड़ सकता है? पहले नाम बदलने से शाखा को अलग करना असंभव था। –

+0

नहीं, उचित 'पी 4 चाल' के साथ भी, एकीकरण काम नहीं करेगा जैसा कि इसे करना चाहिए। –

1

मुझे विश्वास नहीं है। चूंकि कोई प्रत्यक्ष p4 rename नहीं है, इसलिए आपको इसे एकीकृत और हटाना होगा - एक बार जब आप ऐसा कर लेंगे, तो दूसरी शाखा से एकीकृत नहीं होगा, सही फ़ाइल पर नहीं जाएंगे। कम से कम यह मेरा अनुभव रहा है।

+0

धन्यवाद - यह दिखाने के लिए अपडेट किया गया कि वास्तव में कौन से आदेश जारी किए गए थे - वास्तव में मैंने इसे करने के लिए p4v का उपयोग किया था। – SamBeran

+0

मेरा मानना ​​है कि 200 9 में उचित नाम शामिल हैं - जो इतिहास –

3

पर्सफोर्स को आपके लिए यह संभालने का एकमात्र तरीका शाखा के स्पेस का उपयोग मूल रूप से पुरानी फ़ाइल को शाखा में नई फ़ाइल में मैप करने के लिए करना है। शायद हाल के पर्सफोर्स संस्करणों में नए कदम कमांड के साथ बदल गया है, लेकिन ऐसा नहीं है कि मैंने अनुभव किया है।

+0

लेकिन क्या यह काम करता है जब आप दोबारा नाम बदलकर और पूरी निर्देशिका करते हैं? क्या मुझे सभी फाइलों के लिए एक शाखा स्पेक बनाने की ज़रूरत है? निर्देशिका में एक शाखा spec बनाने के लिए काम नहीं करता है। – Calmarius

+0

@ कलमियस, यदि आप निर्देशिका का नाम बदलते हैं, और निर्देशिका में फाइलें हैं, तो आपको दोनों की आवश्यकता है। अगर केवल निर्देशिका बदल जाती है, तो आप इसे केवल निर्देशिका के साथ कर सकते हैं। यदि नाम लगातार तरीके से बदल जाते हैं, तो आप spec को सरल बनाने के लिए वाइल्डकार्ड का उपयोग करने में सक्षम हो सकते हैं। –

2

आप पी 4 fstat के आउटपुट का उपयोग कर स्थानांतरित फ़ाइलों को संभालने के लिए एक शाखा spec के निर्माण स्क्रिप्ट कर सकते हैं।

उपयोग एक प्रारंभिक बिंदु के रूप में निम्नलिखित:

ROOT_PATH="//depot/books/..." 
FIRST_CHANGE=91212 

p4 fstat -Os -T headChange -F "headAction=move/* headChange>$FIRST_CHANGE" $ROOT_PATH|grep headChange | sort -u|while read DUMMY1 DUMMY2 change; do p4 describe $change; done|grep "moved from"|sed 's/\.\.\./\t/g; s/\#[0-9]*//g; s/ moved from//g;' 

इस // depot/पुस्तकों में सभी फाइलों को मिलेगा/... परिवर्तन में ले जाया गया था कि 91,212 या बाद में

हमारे लिए, इस के उत्पादन में लगता है कि

//depot/books/bar.txt //depot/books/foo.txt

एक शाखा कल्पना क्राफ्टिंग के लिए इसका उपयोग करें।

10

आप एकीकरण के लिए एक नए इंजन का उपयोग करने के लिए '-3' स्विच जोड़ सकते हैं, जो पहले से ही 'पी 4 चाल' के साथ स्थानांतरित की गई लक्षित फ़ाइलों का पता लगाएगा, और स्वचालित रूप से उन चालान संचालनों का पालन करने के लिए स्वचालित रूप से 'पुनः लक्षित करें'।

p4 integrate -3 //depot/code/main/... //depot/code/branch/... 

//depot/code/main/a.txt //depot/code/branch/b.txt करने में अपने परिवर्तन एकीकरण करेगा।

यह वर्तमान 2010.2 रिलीज में 'अंडोक' सुविधा है, लेकिन आगामी 2011.1 में डिफ़ॉल्ट व्यवहार होगा।

+0

+1 अच्छी तरह से देखा गया! वह चाल है। –