2013-02-19 24 views
5

के लिए डिपो में नवीनतम पर्सफोर्स चेंजलिस्ट कैसे प्राप्त करें मैं अपने वर्तमान क्लाइंट स्पेक के लिए डिपो में नवीनतम चेंजलिस्ट प्राप्त करना चाहता हूं। यह प्रभावी रूप से वह परिवर्तन होगा जो सिंक्रनाइज़ होगा यदि मैंने अपने वर्कस्पेस में p4 sync किया था।वर्तमान क्लाइंट spec

मैंने p4 changes -s submitted -m1 -c [client-name] करने का प्रयास किया, लेकिन यह मेरे क्लाइंट के माध्यम से सबमिट किया गया सबसे हालिया परिवर्तन देता है।

p4 changes -s submitted -m1 //depot/path/... करना काम करेगा, लेकिन मैं यह समझने के लिए क्लाइंट स्पेक से पूछना नहीं चाहता कि डिपो पथ क्या है। इसके अलावा यदि एक से अधिक मैपिंग थे तो मुझे नहीं पता कि इसका अर्थ कैसे बनाया जाए।

ऐसा लगता है कि ऐसा करने का एक आसान तरीका होना चाहिए जो मुझे याद आ रही है।

संपादित

मैं ग्राहक कल्पना क्वेरी करने के लिए किया है, लेकिन के रूप में स्वीकार जवाब में बताया, मैं फ़ाइल पथ के रूप में ग्राहक कल्पना जड़ इस्तेमाल कर सकते हैं और देखने को देखने की जरूरत नहीं थी मैपिंग।

अंतिम समाधान P4Python का उपयोग कर:

# Get client 
clientspec = p4.fetch_client() 
root = clientspec["Root"] 

# Get latest changenum in client mapping 
changes = p4.run("changes", "-s", "submitted", "-m1", root + "/...") 
changenum = changes[0]['change'] 
+0

क्या 'पी 4 परिवर्तन-सबमिट किए गए -एम 1' (बिना पथ के) उपयुक्त नहीं हैं? – jamesdlin

+1

@jamesdlin - नहीं, जो सर्वर पर सबसे हालिया चेंजलिस्ट देता है, जो कुछ डिपो पथ हो सकता है जिसे मैंने अपने क्लाइंट स्पेक में मैप नहीं किया है। – dwikle

उत्तर

1

मुझे लगता है कि आप अपने स्थानीय जड़ खोजने के लिए अपने ग्राहक कल्पना क्वेरी करने के लिए करने जा रहे हैं। आप के बारे में AltRoots में चिंता करने की जरूरत नहीं है, तो यह हो सकता है:

p4 changes -s submitted -m 1 "$(p4 client -o | grep "^Root:" | cut -f 2)/..." 
बैश में

। डिपो पथ के बजाय अपने स्थानीय क्लाइंट रूट का उपयोग करके कई मैपिंग के साथ समस्या से बचा जाता है।