2008-12-01 10 views
13

मान लीजिए कि मैंने कई फाइलों के साथ एक चेंजलिस्ट (पर्सफोर्स में) में चेक किया है और मैं पूरे चेंजलिस्ट को वापस करना चाहता हूं। क्या पूरे परिवर्तक को "वापस" करने का कोई आसान तरीका है एक में झुकाव?क्या एक संपूर्ण पी 4 परिवर्तक को वापस करने का कोई आसान तरीका है?

वर्तमान में मैं परिवर्तन सूची में प्रत्येक फ़ाइल के लिए कुछ इस तरह करते हैं:

  • p4 सिंक // path/to/फ़ाइल # उपलब्ध नहीं
  • (जहां "n" फ़ाइल के पिछले संस्करण है) सीपी फ़ाइल फ़ाइल # उपलब्ध नहीं
  • p4 सिंक // path/to/फ़ाइल
  • p4 संपादित // पथ// फ़ाइल
  • सीपी फ़ाइल # उपलब्ध नहीं फ़ाइल
  • rm फ़ाइल # उपलब्ध नहीं
  • को

जैसा कि आप कल्पना कर सकते हैं, यह एक बड़े परिवर्तनीय के लिए काफी बोझिल है।

उत्तर

10

पोस्ट किए गए उत्तरों सही उत्तर प्रदान करते हैं, लेकिन ध्यान दें कि पी 4 वी में अब आपके लिए ऐसा करने के लिए एक वास्तविक मेनू विकल्प है। यह 2008.2 बीटा के नवीनतम में है, और इसलिए आधिकारिक तौर पर अगले सप्ताह या तीन को जारी किया जाना चाहिए।

यह link विवरण देता है।

यह पहले के उत्तरों की तुलना में उपयोग करना बहुत आसान होना चाहिए, लेकिन मुझे अभी तक इसे आजमाने का अवसर नहीं मिला है।

अद्यतन यह अब पूरी तरह से जारी किया गया है। Perforce downloads देखें।

+0

धन्यवाद ग्रेग - मैं बीटा क्लाइंट को आज़मा दूंगा! –

+0

मैंने अभी पी 4 वी के बीटा संस्करण को आजमाया है और पुष्टि कर सकता हूं कि इसमें "बैक आउट सबमिट चेंजलिस्ट" सुविधा है जो वास्तव में यह करता है। चूंकि यह किसी तृतीय-पक्ष स्क्रिप्ट की बजाय आधिकारिक Perforce सुविधा है, मुझे लगता है कि इसे इसे आधिकारिक उत्तर के रूप में स्वीकार किया जाना चाहिए। –

3

This दिलचस्प लग रहा है। मैंने व्यक्तिगत रूप से कोशिश नहीं की है।

+0

धन्यवाद:

p4 describe -s [changelist_number] | grep // | sed "s/\.\.\. //" | sed "s/#.*//" | p4 -ztag -x - where | grep "... path " | sed "s/\.\.\. path //" 

यहाँ संभावित स्थानों एक Windows वातावरण में यूनिक्स कमांड लाइन उपकरण प्राप्त करने के लिए कर रहे हैं: हालांकि, निम्नलिखित काम करता है! जबकि मुझे अपने मैक पर काम कर रहे पी 4 वी एकीकरण नहीं मिल सका, कमांड लाइन के माध्यम से स्क्रिप्ट चलाकर ठीक काम किया। –

+0

यदि आपके द्वारा लिंक किए गए ब्लॉग पोस्ट को नीचे चलाया गया है, तो यहां Google Code में स्क्रिप्ट का सीधा लिंक है: http://code.google.com/p/p4scripts/source/browse/trunk/src/p4revert.py –

+0

इसके अलावा , एक नोट: पाइथन स्क्रिप्ट (वर्तमान में) डॉस प्रारूप में सहेजी गई है, इसलिए आपको यूनिक्स-आधारित सिस्टम जैसे लिनक्स और ओएस एक्स –

1

पर्सफोर्स का आधिकारिक उत्तर http://kb.perforce.com/UserTasks/ManagingFile..Changelists/RevertingSub..Changelists पर है लेकिन प्रक्रिया आपके द्वारा सुझाए गए की तुलना में कहीं अधिक आसान नहीं है। @ Ya23 द्वारा सुझाई गई स्क्रिप्ट बेहतर दिखती है।

+0

पर सही ढंग से काम करने के लिए यूनिक्स लाइन एंडिंग में कनवर्ट करने की आवश्यकता होगी। "संपादन" यह आसान है, लेकिन एक बार जब आप वहां फेंकते हैं और हटा देते हैं, तो मैन्युअल रूप से करना मुश्किल हो सकता है। –

0

मुझे एक ही समस्या है जब मैं एक संपूर्ण परिवर्तक को हटाना चाहता हूं। इसलिए मैं निम्नलिखित स्क्रिप्ट का उपयोग करता हूं (ध्यान दें कि यह चेंजलिस्ट के शेल्फ और चेंजलिस्ट को भी हटा देता है। अगर आप केवल वापस करना चाहते हैं, तो प्रासंगिक लाइनों की प्रतिलिपि बनाएँ)। इसके अलावा, सुनिश्चित करें कि sed p4 के आपके संस्करण पर लागू होता है।

#!/bin/bash 

set -e 

if [[ $# -ne 1 ]]; then 
echo "usage: $(basename $0) changelist" 
    exit 1 
fi 

CHANGELIST=$1 

#make sure changelist exist. 
p4 describe -s $CHANGELIST > /dev/null # set -e will exit automatically if fails 

p4 shelve -d -c $CHANGELIST 2> /dev/null || true # changelist can be shelveless 
files_to_revert=$(p4 opened 2> /dev/null | grep "change $CHANGELIST" | sed "s/#.*//g") 
if [[ -n "$files_to_revert" ]]; then 
    p4 revert $files_to_revert 
fi 
p4 change -d $CHANGELIST 
+1

अंत में इसे कुछ अन्य पी 4 स्क्रिप्ट के साथ अपलोड किया गया - https://github.com/arnonzilca/p4u –

0

समस्या शुरू होता है जब आप (एक थोक के रूप में) एक पूरी परिवर्तन सूची पर वापस लाना चाहते है कि आप बस सबमिट कर दी है, और आप एक तेजी से (क्योंकि यह उत्पादन है द्वारा # n-1 एक की फाइलों को वापस लाने में शुरू करने की आवश्यकता) ...

ya23 के समर्थन करने के लिए एक अजगर स्क्रिप्ट की कड़ी में जवाब- चाहता था - यह उनकी टिप्पणी) याद आती है

आप इसे संशोधन आप रोलबैक करना चाहते देने के उपयोग करने के लिए वास्तव में बहुत आसान है (और वास्तव में आसान है, और यह स्वचालित रूप से सब कुछ तैयार करता है (प्रत्येक फ़ाइल का # एन -विलय और सबकुछ) ... आप बस सबमिट करते हैं।

1

किसी कारण से, अजीब कदम मेरे लिए काम नहीं करता है। मैं एक विंडोज वातावरण से नकली यूनिक्स कमांड लाइन उपकरण के साथ चल रहा हूँ।मैं सिर्फ यह कोशिश की और यह बहुत अच्छा काम किया है -

http://sourceforge.net/projects/getgnuwin32/?source=typ_redirect http://unxutils.sourceforge.net/

संबंधित मुद्दे