2008-09-10 9 views
96

मैं कभी-कभी पी 4 डिपो से डिस्कनेक्ट होने पर काम कर रहे किसी भी फाइल को सिंक करने के लिए पर्सफोर्स के पी 4 वी आईडीई में पाया गया 'रिकॉन्सी ऑफ़लाइन वर्क ...' सुविधा का उपयोग करता हूं। यह एक और विंडो लॉन्च करता है जो 'फ़ोल्डर डिफ' करता है।क्या आप पेर्सफोर्स में एक फाइल को "अनदेखा" कर सकते हैं?

मेरे पास ऐसी फ़ाइलें हैं जिन्हें मैं कभी भी स्रोत नियंत्रण में जांचना नहीं चाहता (जैसे कि डीएलएल, कोड जेनरेट आउटपुट इत्यादि जैसे बिन फ़ोल्डर में पाए गए) क्या उन फ़ाइलों/फ़ोल्डर्स को "नए" के रूप में प्रदर्शित करने का तरीका है "वह जोड़ा जा सकता है। वे उन फ़ाइलों की सूची को अव्यवस्थित करते हैं जिन्हें मैं वास्तव में रूचि रखता हूं। क्या पी 4 में सबवर्जन की 'अनदेखा फ़ाइल' सुविधा के बराबर है?

+0

क्या आप सीवीएस आउटपुट का एक उदाहरण प्रदान कर सकते हैं ताकि हम देख सकें कि आपका क्या मतलब है, और दिए गए उत्तरों आप जो चाहते हैं वह नहीं करते हैं? –

+1

पर्सफोर्स के विचार मंच पर, आप गिट-स्टाइल अनदेखा सूचियों के लिए एक सुझाव पर वोट दे सकते हैं http://p4ideax.com/ideas/15/ignore-support –

+0

"ऑफ़लाइन कार्य को दोबारा रिकॉर्ड करें" दबाएं, "स्थानीय फाइलें डिपो में नहीं" अनटिक करें, "रिकॉन्सील" दबाएं। जब तक आप फ़ाइलों को नहीं जोड़ रहे हैं तब तक यह शायद सबसे तेज़ कामकाज है। – lane

उत्तर

58

संस्करण 2012.1 के अनुसार, पर्सफोर्स P4IGNORE पर्यावरण चर का समर्थन करता है। मैंने अपना जवाब this question about ignoring directories पर अपडेट किया है, यह बताता है कि यह कैसे काम करता है। तब मैंने यह जवाब देखा, जो अब मुझे लगता है कि अनावश्यक है।


मान लें कि आप एक ग्राहक "CLIENT", "foo" (अपनी परियोजना जड़ में स्थित) नाम की एक नामी निर्देशिका है, और आपको लगता है कि निर्देशिका वृक्ष में सभी .dll फ़ाइलों को अनदेखा करना चाहते हैं, तो आपको निम्न में जोड़ सकते हैं अपने कार्यक्षेत्र को देखने के लिए लाइनों यह पूरा करने के:

 
-//depot/foo/*.dll //CLIENT/foo/*.dll 
-//depot/foo/.../*.dll //CLIENT/foo/.../*.dll 

पहली पंक्ति उन्हें निर्देशिका "foo" और दूसरी पंक्ति उन सब को उप निर्देशिकाओं से निकाल देता है से निकाल देता है। अब, जब आप 'ऑफ़लाइन कार्य को दोबारा जोड़ते हैं ...', तो सभी .dll फ़ाइलों को फ़ोल्डर diff डिस्प्ले के निचले हिस्से में "बहिष्कृत फ़ाइलें" फ़ोल्डर में स्थानांतरित कर दिया जाएगा। वे आपके रास्ते से बाहर होंगे, लेकिन यदि आपको वास्तव में आवश्यकता है तो भी उन्हें देख और कुशल बना सकते हैं।

आप इसे एक और तरीका भी कर सकते हैं, जो आपके "बहिष्कृत फ़ाइलें" फ़ोल्डर को केवल एक में कम कर देगा, लेकिन आप इसमें से किसी भी फाइल में हेरफेर करने में सक्षम नहीं होंगे क्योंकि पथ भ्रष्ट होगा (लेकिन यदि आप बस उन्हें अपने रास्ते से बाहर करना चाहते हैं, इससे कोई फर्क नहीं पड़ता)। .p4ignore का उपयोग करने का

 
-//depot/foo.../*.dll //CLIENT/foo.../*.dll 
+30

हालांकि यह काम करता है, यह बहुत उपयोगी नहीं है क्योंकि आपको इन लाइनों को आपके द्वारा बनाए गए हर कार्यक्षेत्र में रखना होगा। – dgrant

+6

नोट: यह सामान्य रूप से p4v से ऑफलाइन काम को सुलझाने के लिए काम नहीं करता है। "बहिष्कृत फाइलें" केवल "उन्नत" मेलसील विंडो में दिखाई देती हैं ... – Catskul

+6

फ़िल्टर को छोड़कर 'ऑफलाइन वर्क रिकॉन्सील' संवाद के अंदर काम नहीं करता है। यह काम करता है यदि आप इसे 'उन्नत रिकॉन्सील' के अंदर खोलते हैं ... लेकिन यह बेकार है क्योंकि उस समय 99.9% में आपको उन्नत संवाद का उपयोग करने की आवश्यकता नहीं है या नहीं। – sorin

3

विल के सुझाव केवल WebSphere स्टूडियो (P4WSAD) प्लगइन के साथ काम करने के लिए लगता है। मैंने बस इसे अपने स्थानीय विंडोज़ बॉक्स पर कोशिश की और मैंने सूचीबद्ध किसी भी फाइल और निर्देशिका को अनदेखा नहीं किया।

रावेन के क्लाइंट स्पेक को संशोधित करने का सुझाव पेर्सफोर्स के तहत सही तरीका है। आपके कोड/डेटा/एक्जिक्यूटिव्स और जेनरेट आउटपुट फाइलों का उचित संगठन फाइलों को चेक करना बहुत आसान हो जाएगा।

एक और अधिक कठोर दृष्टिकोण के रूप में, आप हमेशा एक ट्रिगर जो परिवर्तन सूचियों प्रस्तुत करने को अस्वीकार कर देंगे, तो वे एक निश्चित विस्तार के साथ एक निश्चित फ़ाइल या फ़ाइलें हो, आदि

+15

मैं पूरी तरह से "आपके कोड के उचित संगठन ..." कथन से असहमत हूं। इस तथ्य का तथ्य है कि वर्कस्पेस को संपादित करने के पर्सफोर्स के सम्मेलन के बाद प्रत्येक उपयोगकर्ता को बदलाव करने की आवश्यकता होती है। जबकि, एक सच्ची .p4ignore फ़ाइल केवल एक बार बनाई/प्रबंधित की जाएगी। – Mike

+9

ओह, और उल्लेख नहीं है, आप अपने कोड को ब्रांच करना चाहते हैं? शुभकामनाएं प्रत्येक शाखा के लिए अपने कार्यक्षेत्रों को बनाए रखना। वह मज़ेदार लग रहा है! – Mike

-1

प्रस्तुत लिखना आप ग्रहण उपयोग कर रहे हैं कर सकते हैं पर्सफोर्स प्लगइन, फिर the plugin documentation फ़ाइलों को अनदेखा करने के कई तरीकों की सूची देता है।

+4

डुप्लिकेट, और –

7

यदि आप एक समाधान चाहते हैं जो सभी कार्यस्थलों पर प्रतिलिपि बनाने की आवश्यकता के बिना लागू होगा, तो आप (या आपका sysadmin) पी 4 सुरक्षा तालिका में नीचे की तरह लाइनों का उपयोग करके उन फाइल-प्रकारों को जमा करने से इंकार कर सकते हैं:

write user * * -//.../*.suo 
write user * * -//.../*.obj 
write user * * -//.../*.ccscc 

मुझे पहले ऐसा करना याद है, लेकिन मेरे पास इसका परीक्षण करने के लिए आवश्यक अनुमतियां नहीं हैं। Perforce's Sysadmin guide देखें और इसे

+3

प्रश्न का उत्तर नहीं देता है दुर्भाग्य से यह सुलझाने के दृश्य को अनदेखा करने के बजाय सबमिट पर त्रुटियों का कारण बनता है। तो यह कुछ फ़ाइलों को एक भंडार से बाहर रख सकता है, लेकिन यह आपके उपयोगकर्ताओं को शोर न देखने में मदद नहीं कर सकता है। –

2

ऐतिहासिक उत्तर - अब सही नहीं है।उस समय यह मूल रूप से लिखा गया था यह सच था;

आप ऐसी फ़ाइल में लिख और जांच नहीं कर सकते जिसे सर्वर अनदेखा नियम बनाने के लिए उपयोग करेगा; सामान्य ग्लोब या regexp फ़ाइल पैटर्न perforce में अनदेखा।

अन्य उत्तरों में वैश्विक सर्वर कॉन्फ़िगरेशन हैं जो वैश्विक हैं (और प्रति फ़ोल्डर नहीं)। अन्य उत्तर उन चीजों को दिखाते हैं जो आपके लिए काम कर सकते हैं, यदि आप अपने फ़ोल्डर में प्रति पंक्ति एक पंक्ति चाहते हैं, तो उस फ़ोल्डर में प्रतिस्थापित करने के लिए आप उस फ़ोल्डर में अनदेखा करना चाहते हैं, या यह केवल वेबस्पेयर स्टूडियो प्लगइन्स में यह क्षमता प्रदान करते हैं, या क्षमता प्रदान करते हैं सर्वर प्रशासक, लेकिन उपयोगकर्ताओं के लिए उपलब्ध नहीं है।

संक्षेप में, मुझे इस क्षेत्र में वास्तव में कमजोर लगता है। जबकि मैं सराहना करता हूं कि ग्रहण प्लगइन का उपयोग करने वाले लोग .p4ignore का उपयोग कर सकते हैं, और मुझे लगता है कि यह बढ़िया है, यह उन लोगों को छोड़ देता है जो अंधेरे में नहीं होते हैं।

अद्यतन: 2012 के मध्य में जोड़े गए नए P4IGNORE क्षमता के लिए स्वीकृत उत्तर देखें।

0

मैं इस तरह एक bash स्क्रिप्ट का उपयोग करके ऑफ़लाइन काम में सामंजस्य की यह सबसे आसान पाया है:

#!/bin/bash 
# reconcile P4 offline work, assuming P4CLIENT is set 
if [ -z "$P4CLIENT" ] ; then echo "P4CLIENT is not set"; exit 1; fi 
unset PWD # confuses P4 on Windows/CYGWIN 

# delete filew that are no longer present 
p4 diff -sd ... | p4 -x - delete 

# checkout files that have been changed. 
# I don't run this step. Instead I just checkout everything, 
# then revert unchanged files before committing. 
p4 diff -se ... | pr -x - edit 

# Add new files, ignoring subversion info, EMACS backups, log files 
# Filter output to see only added files and real errors 
find . -type f \ 
| grep -v -E '(\.svn)|(/build.*/)|(/\.settings)|~|#|(\.log)' \ 
| p4 -x - add \ 
| grep -v -E '(currently opened for add)|(existing file)|(already opened for edit)' 

मैं this Perforce Knowledge Base article से अनुकूलित।

0

मैं समाधान की तरह एक .p4ignore की तलाश में हूं (और एक विशेष आईडीई से बंधे नहीं)। अब तक, मैंने पाया सबसे नज़दीकी चीज p4delta है। ऐसा लगता है कि मूल पोस्टर वास्तव में क्या करेगा, यद्यपि संकेत की एक और परत के माध्यम से।

http://p4delta.sourceforge.net

दुर्भाग्य से, जबकि इस फ़ाइलों की उचित सूची तैयार करता है प्रतीत होता है, मुझे नहीं ("एक जमे हुए स्ट्रिंग संशोधित नहीं कर सकते") प्राप्त कर सकते हैं "p4delta --execute" काम करने के लिए और इस परियोजना साल में अद्यतन नहीं किया गया है। शायद दूसरों को बेहतर भाग्य होगा।

21

यह लाज़िमी 2013.1 के रूप में काम करता है, नए P4IGNORE तंत्र पहले रिलीज, 2012.1 में जोड़ा गया लाज़िमी ब्लॉग यहाँ पर वर्णित:

http://www.perforce.com/blog/120130/new-20121-p4ignore

के रूप में यह वर्तमान में वर्णित है, तो आप सेट एक पर्यावरण चर "P4IGNORE" एक फ़ाइल नाम में जिसमें अनदेखा करने के लिए फ़ाइलों की एक सूची शामिल है।

तो आप यह देखने के लिए देख सकते हैं कि आप इसे कैसा पसंद करते हैं।

+0

अब यह जारी किया गया है, मेरी समीक्षा http://stackoverflow.com/a/13126496/284795 –

+0

संपादित करें: स्पष्ट रूप से यह 2013.1 –

+1

में काम करना शुरू कर दिया है, आप केवल फ़ाइल नामों में ही निर्देशिका नाम शामिल कर सकते हैं। – ashes999

6

पर्सफोर्स स्ट्रीम संस्करण 2011.1 के अनुसार फ़ाइलों को अनदेखा कर देता है। documentation, के अनुसार आप अपनी निर्देशिका में कुछ एक्सटेंशन या कुछ पथों को अनदेखा कर सकते हैं।

p4 help stream से

Ignored: Optional; a list of file or directory names to be ignored in 
       client views. For example: 

        /tmp  # ignores files named 'tmp' 
        /tmp/... # ignores dirs named 'tmp' 
        .tmp  # ignores file names ending in '.tmp' 

       Lines in the Ignored field may appear in any order. Ignored 
       names are inherited by child stream client views. 

यह अनिवार्य रूप से क्या @ काला कौआ के निर्दिष्ट करता है का जवाब है, लेकिन नदियों के साथ आसान किया जाता है, के रूप में यह स्वचालित रूप से उस धारा का उपयोग कर हर काम से अंतरिक्ष के लिए प्रसारित। यह स्ट्रीम से विरासत में प्राप्त किसी भी स्ट्रीम पर भी लागू होता है जिसमें आप अनदेखा प्रकार निर्दिष्ट करते हैं।

आप p4 stream //stream_depot/stream_name के माध्यम से स्ट्रीम को संपादित कर सकते हैं या पी 4 वी के स्ट्रीम व्यू में स्ट्रीम पर राइट-क्लिक कर सकते हैं।

और जैसा कि @svec बताया गया है, क्षमता कार्यक्षेत्र जल्द ही आ रहा है प्रति फ़ाइलों की अनदेखी निर्दिष्ट करने के लिए, और P4 2012.1 beta.

+0

हां, यह मेरे लिए एक टीम में "अनदेखा" सेटिंग्स साझा करने के लिए काम करता है (मैं पी 4 2013.2 का उपयोग कर रहा हूं)। ध्यान दें कि यह केवल स्ट्रीम-सक्षम डिपो में काम करता है। (यदि आप अपनी टीम में P4IGNORE = .p4ignore पर्यावरण चर का प्रचार कर सकते हैं जो शायद सबसे अच्छा समाधान है।) – yoyo

+1

ध्यान दें कि किसी स्ट्रीम के लिए अनदेखा फ़ील्ड का उपयोग किसी विशिष्ट फ़ोल्डर, फ़ाइल या फ़ाइल एक्सटेंशन को अनदेखा करने के लिए किया जा सकता है, लेकिन वाइल्डकार्ड समर्थन है सीमित है और पूरे फ़ोल्डर को अनदेखा करने और फिर विशिष्ट फ़ाइलों या उप-फ़ोल्डर "अनगिनत" करने का कोई तरीका नहीं है। (पी 4 सर्वर संस्करण 2013.2 के रूप में) – yoyo

43

हाँ में वास्तव में है, लेकिन।

पर्सफोर्स संस्करण 2012.1 ने गिट द्वारा प्रेरित p4ignore नामक एक सुविधा को जोड़ा। हालांकि, पर्सफोर्स डेवलपर्स ने औचित्य के बिना व्यवहार में बदलाव किया, जो सुविधा को बहुत कम उपयोगी बनाने के लिए होता है।

जबकि गिट सभी .gitignore फ़ाइलों से नियम लेता है, तो पर्सफोर्स को यह नहीं पता कि आप पर्यावरण चर P4IGNORE में फ़ाइल नाम निर्दिष्ट करते समय कहां देखना चाहते हैं। यह स्वतंत्रता एक अभिशाप है। आप दो रिपॉजिटरीज़ पर हैक नहीं कर सकते हैं जो उनकी अनदेखी फ़ाइलों के लिए अलग-अलग नामों का उपयोग करते हैं।

इसके अलावा, पर्सफोर्स की अनदेखी सुविधा बॉक्स को काम नहीं करती है। आप इसे अपने लिए आसानी से सेट कर सकते हैं, लेकिन दूसरों को तब तक लाभ नहीं होता जब तक वे स्पष्ट रूप से ऑप्ट-इन नहीं करते। एक योगदानकर्ता जो गलती से अनचाहे फ़ाइलों को नहीं कर सकता है (उदाहरण के लिए एक निर्माण स्क्रिप्ट द्वारा बनाई गई bin फ़ोल्डर)।

गिट की अनदेखी सुविधा बहुत अच्छी है क्योंकि यह बॉक्स को काम करती है। यदि .gitignore फ़ाइलों को भंडार (everyone does this) में जोड़ा जाता है, तो वे सभी के लिए बॉक्स का काम करेंगे। कोई भी गलती से अपनी निजी कुंजी प्रकाशित नहीं करेगा।

Amusingly, Perforce docs एक उदाहरण के रूप में '.p4ignore' दिखाता है, जो नियम को अनदेखा करता है, जो पीछे की ओर है! यदि नियम उपयोगी हैं, तो उन्हें भंडार के हिस्से के रूप में साझा किया जाना चाहिए।


प्रभाव अभी भी इस सुविधा पर अच्छा बना सकता है। फ़ाइल नामों के लिए एक सम्मेलन चुनें, p4ignore.txt कहें, इसलिए सुविधा बॉक्स को काम करती है। P4IGNORE पर्यावरण परिवर्तक को छोड़ दें, यह प्रतिकूल है। उपयोगी नियमों को साझा करने के लिए डेवलपर्स को प्रोत्साहित करने के लिए दस्तावेज़ों को संपादित करें। उपयोगकर्ताओं को अपने घर फ़ोल्डर, as Git does में फ़ाइल में व्यक्तिगत नियम लिखने दें।

यदि आप पर्सफोर्स में किसी को भी जानते हैं, तो कृपया उन्हें इस पोस्ट को ईमेल करें।

+2

स्पष्टीकरण के लिए धन्यवाद। मैंने P4VS के साथ .p4ignore का उपयोग करने का प्रयास किया लेकिन मेरा समाधान जिसे अनदेखा किया जाना था उसे अनदेखा नहीं किया गया था। सबसे पहले मैंने सोचा कि मैं कुछ गलत कर रहा था। अब मैं बेहतर जानता हूँ। –

+1

@gentlesea, Perforce 2013.1 के अनुसार, अनदेखी सुविधा अंततः ग्राफिकल ऐप में काम करती है। –

+2

चर्चा 'http://www/114ideax.com/ideas/17856/make-the-ignore-feature-work-out-the-box –

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

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