क्या आप Perforce में किसी फ़ाइल को "अनदेखा" कर सकते हैं?


101

मैं कभी-कभी P4 डिपो से डिस्कनेक्ट होने के दौरान काम कर रही किसी भी फाइल को सिंक करने के लिए Perforce के P4V IDE में 'रिकॉन्सिल ऑफलाइन वर्क ...' फीचर का उपयोग करता हूं। यह एक और विंडो लॉन्च करता है जो 'फोल्डर डिफ' करता है।

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


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

2
Perforce के विचार मंच पर, आप Git-
कर्नल पैनिक

"रिकॉन्सिक ऑफलाइन वर्क" को हिट करें, "डिपो में लोकल फाइल्स नहीं" को अनटिक करें, "रिकॉन्सिल" को पुश करें। जब तक आप फ़ाइलों को नहीं जोड़ रहे हैं तब तक यह संभवतया सबसे तेज वर्कअराउंड है।
लेन

जवाबों:


59

2012.1 के संस्करण के अनुसार, Perforce समर्थन करता है P4IGNORE पर्यावरण चर । मैंने इस सवाल के बारे में अपने जवाब को अद्यतन किया कि यह कैसे काम करता है, इसकी व्याख्या के साथ निर्देशिकाओं की अनदेखी कर रहा है। फिर मैंने इस जवाब पर ध्यान दिया, जो अब मुझे लगता है कि बहुत ही शानदार है।


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

- / डिपो / फू / *। dll //CLIENT/foo/*.dll
- / डिपो / फू /.../*। dll //CLIENT/foo/.../*.dll

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

आप इसे दूसरे तरीके से भी कर सकते हैं, जो आपके "एक्सक्लूडेड फाइल्स" फोल्डर को सिर्फ एक तक कम कर देगा, लेकिन आप इसमें मौजूद किसी भी फाइल को मैनिपुलेट नहीं कर पाएंगे, क्योंकि रास्ता भ्रष्ट होगा (लेकिन अगर आप उन्हें चाहते हैं तो अपने तरीके से, इससे कोई फर्क नहीं पड़ता)।

- / डिपो / फू ... / *। dll //CLIENT/foo.../*.dll

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

6
नोट: यह p4v से सामान्य सामंजस्य ऑफ़लाइन कार्य के लिए काम नहीं करता है। "बाहर की गई फाइलें" केवल "उन्नत" सामंजस्यपूर्ण विंडो में
लगती

6
बहिष्कृत फ़िल्टर Reconcile Offline Workसंवाद के अंदर काम नहीं करता है । यह काम करता है अगर आप इसे अंदर खोलते हैं Advanced Reconcile...लेकिन यह बेकार है क्योंकि 99.9% समय में आपको उन्नत संवाद का उपयोग करने की आवश्यकता नहीं है या नहीं करना है।
सोरिन

12
@raven: 1) (उदाहरण :) कुछ प्रोजेक्ट्स केंद्रीय स्थान पर होने के बजाय प्रत्येक प्रोजेक्ट के तहत बिन / obj फ़ोल्डरों का उपयोग करते हैं। (सामान्यीकृत निष्कर्ष :) Perforce की धारणा है कि सभी मध्यवर्ती फ़ाइलों को आसानी से बाहर रखे गए कार्यक्षेत्र में रखा जाता है, जो कि VCS बनाने के लिए एक अनावश्यक रूप से प्रतिबंधात्मक डिजाइन है। 2) कुछ परियोजनाओं में निर्देशिका संरचना में स्थानीय कैश और / या अन्य प्रति-उपयोगकर्ता जनरेट की गई फ़ाइलें शामिल हैं (उदाहरण के लिए, * .ncb IntelliSense कैश)। एक सामान्य नीति के रूप में उन्हें बाहर करने की अक्षमता रिकॉन्सिल ऑफलाइन वर्क और डिफ फोल्डर्स सुविधाओं को गंभीर रूप से प्रभावित करती है।
सैम हैवेल

6
यह विशेष समस्या मुझे मार रही है।
वॉरेन पी

47

हाँ लेकिन।

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

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

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

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

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


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

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


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

1
@gentlesea, Perforce 2013.1 के अनुसार, अनदेखा फ़ीचर आखिरकार ग्राफिकल ऐप में काम करता है।
कर्नल पैनिक


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

2
पेरफोर्स को पता नहीं है कि उचित सॉफ्टवेयर कैसे बनाया जाता है, उन्हें मूल बातें भी नहीं आतीं। यही कारण है कि हर कोई, जो पेरफोर्स के साथ फंसा हुआ है, वह आगे बढ़ने के सपने देखता है।
पावेल पी

22

यह पेरीफोर्स 2013.1 के रूप में काम करता है, नए P4IGNORE तंत्र को पहली बार 2012-2011 में जारी किया गया था, जो पेरोल ब्लॉग पर वर्णित है:

https://www.perforce.com/blog/new-20121-p4ignore

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

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


1
आप केवल फ़ाइल नाम ही नहीं, निर्देशिका नाम भी शामिल कर सकते हैं।
ashes999

जैसा कि पहले उल्लेख किया गया है: दुर्भाग्य से, आपको P4IGNORE सेट करना होगा।
टेक्नोफाइल

1
मैंने लिंक @DerMike तय किया - मुझे लगता है कि Perforce ने अपने ब्लॉग URL बदल दिए हैं।
svec

7

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

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

मुझे पहले ऐसा करना याद है, लेकिन मेरे पास इसे यहाँ परीक्षण करने के लिए आवश्यक अनुमति नहीं है। चेक आउटपेरफोर्स के सिसाडमिन गाइड की और इसे आज़माएँ


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

6

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

से 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 स्ट्रीम को p4v के स्ट्रीम व्यू में स्ट्रीम को राइट-क्लिक या हैं।

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


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

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

3

.p4ignoreकेवल उपयोग करने का विल का सुझाव WebSphere Studio (P4WSAD) प्लगइन के साथ काम करता है। मैंने इसे अपने स्थानीय विंडो बॉक्स और उन फ़ाइलों और निर्देशिकाओं पर आज़माया, जिन्हें मैंने सूचीबद्ध नहीं किया था

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

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


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

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

2

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

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

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

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

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


1

मैंने इस तरह से 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)'

मैंने इस Perforce ज्ञानकोष लेख से इसे अनुकूलित किया ।


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

... पसंद से नहीं: '(
डर्माईक

0

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

http://p4delta.sourceforge.net

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


-1

यदि आप एक्लिप्स पर्फोर्स प्लगइन का उपयोग कर रहे हैं, तो प्लगइन प्रलेखन फाइलों को अनदेखा करने के कई तरीके सूचीबद्ध करता है।


5
डुप्लिकेट, और सवाल का जवाब नहीं देता है
वारेन पी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.