git - पी-4 कमांड जीटी/एचजी/बीज़आर/एसवीएन की तरह कुछ के बराबर है?(संकेत: नहीं `पी 4 स्थिति`)



svn version-control (1)

मैं यह कहता हूं कि मैं अपने प्रश्न का जवाब पसंद नहीं करता, लेकिन मैं यहां ऐसा करने जा रहा हूं। मैं जो भी बेहतर समाधान और लिपियों को साझा करना चाहता हूं, मैं उनका स्वागत करता हूं। मैं विशेष रूप से किसी से मुझे दिखाता हूं कि यह अनावश्यक है, कि असल में svn/git/hg/bzr status का बराबर होता है।

--- + ए: git/hg/bzr/svn status = p4 opened + p4 status

प्रबल में कम से कम दो अलग-अलग आज्ञाओं का अनुमान लगाया जा सकता है कि डब्लू डब्लूआरटी के कार्यक्षेत्र की स्थिति का त्वरित सारांश प्रदान करने के लिए, एक अन्य कमांड के साथ अन्य वीसीएस उपकरण क्या करते हैं:

p4 opened - आपके द्वारा कार्यस्थान में खोले गए फ़ाइलों की सूची के लिए

p4 status - फाइलों की सूची के लिए प्रबल में चेक नहीं किया गया

** --- + पुराना: p4 reconcile -n p4 status बजाय p4 reconcile -n

प्रबलबल के पुराने संस्करणों में p4 status कार्यप्रणाली जैसे p4 reconcile तरह p4 reconcile बदलाव जैसे डिफ़ॉल्ट रूप से वर्कस्पेस को जोड़ना या जब मैं इस पेज को लिखा था उस वक्त मुझे तोड़ा गया था।

नया: git/hg/bzr/svn status = p4 opened + p4 status **

नया: git/hg/bzr/svn status = p4 opened + p4 reconcile -n **

p4 reconcile -n - फाइलों की सूची के लिए जो wrt प्रबल नहीं खोले हैं, लेकिन जिस पर आपने स्थानीय परिवर्तन किए हैं

( p4 reconcile -n कहने के लिए "कोई बदलाव नहीं करें।)

कोई परिवर्तन नहीं करने के लिए सामंजस्य बताने के लिए -n अब जरूरी नहीं है - अब यह कि p4 status केवल-पढ़ने के लिए डिफ़ॉल्ट रूप से है।

ओल्ड: पी 4 $ P4OPTS p4 $ P4OPTS reconcile -n | sed -e / / / - बनाने के लिए रिकॉन्सी: / '

--- + उपनाम या त्वरित टाइपिंग के लिए उपयुक्त

मैं ये निम्नानुसार गठबंधन करता हूं:

p4 $P4OPTS opened
p4 $P4OPTS status | sed -e 's/ - / - RECONCILE TO MAKE: /'

फ़ाइलों के लिए स्थिति को बेहतर ढंग से अलग करने के लिए sed भाग जो कि मजबूरी के तहत खोले नहीं गए फ़ाइलों की स्थिति से पहले ही खुले हैं। लेकिन मुझे लगता है कि यह असुरक्षित है, जब एक फाइल में उसके नाम पर "-" स्ट्रिंग हो सकती है

--- + पंखा

क्योंकि मैं अक्सर स्थानीय पथ चाहता हूं, मैं वर्तमान में निम्न शेल स्क्रिप्ट my-p4-status का उपयोग मुझे कुछ और देने के लिए करता हूं जैसे कि मैं अन्य VCSes की स्थिति कमांड = से उपयोग करता हूं

नीचे दी गई स्क्रिप्ट पुराने reconcile -n ए का उपयोग करती है, और status का उपयोग करने के लिए अभी तक अपडेट नहीं किया गया है।

#!/bin/bash
# Perforce lacks a single command to tell you the status of a workspace,
# the equivalent of hg/bzr/git status.

# Warning: "p4 status" is not actually a read-only query!!!
# "p4 status" is more like "p4 reconcile" - it actually opens files to edit, add, or delete (-e -a -d)

# p4 opened only reports on the status of files currently opened by Perforce

# It is necessary to combine "p4 opened" and "p4 reconcile -n" to get a net overview.

# TBD: convert to local file path, rather than depot path.
# (Not a simple sed-xargs-p4_fstat pipeline)

P4OPTS=''
if [ "$1" == "-ztag" ] || [ "$1" == "-verbose" ]
then
   shift
   P4OPTS="-ztag"
fi

case $P4OPTS in
-ztag)
    p4 $P4OPTS opened
    p4 $P4OPTS reconcile -n
    ;;
*)
    echo '#### p4 opened - Perforce files already opened ###'
    p4 $P4OPTS opened
    echo '#### p4 reconcile -n --- local edits, not opened in Perforce.  Run p4 reconcile to actually open. ###'
    p4 $P4OPTS reconcile -n | sed -e 's/ - / - RECONCILE TO MAKE: /'
esac

--- + बेहतर? कृपया बाँटें!

अगर आपके पास कुछ बेहतर है, तो कृपया साझा करें।

प्रश्न: अन्य संस्करण नियंत्रण उपकरणों की स्थिति कमांड के लिए प्रतिबल क्या है?

जैसे git status या hg status या bzr status या bzr status svn status ? (Confusingly, cvs update -nq उस संस्करण नियंत्रण प्रणाली के लिए सबसे निकटतम बात है।)

संकेत: यह p4 status नहीं है

सबसे पहले, p4 status आपको उन फ़ाइलों के बारे में नहीं बताती है जो लंबित परिवर्तनवादी हैं आपको उस के लिए p4 opened को कॉल करने की आवश्यकता है, लेकिन आउटपुट स्वरूप काफी अलग है।

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

ऐसा लगता है कि p4 status कुछ संयोजन और p4 opened की आवश्यकता होती है, ताकि दूसरे वीसीसीएस एक ही कमांड में क्या करें।

विवरण:

अधिकांश संस्करण नियंत्रण प्रणालियों में एक कमांड है जो आपको एक कार्यक्षेत्र की स्थिति को तुरंत बता सकता है। जानकारी जैसे:

  • संपादन के लिए कौन से फाइलों की जांच की जाती है (यदि वीसीएस चेकआउट का उपयोग करता है)
    • जिनकी जाँच की गई फ़ाइलों में से स्थानीय रूप से परिवर्तित या हटाए गए हैं
  • जो फ़ाइलों को बदल दिया गया है हालांकि चेक आउट नहीं किया गया है
    • उदाहरण के लिए, जिन फ़ाइलों में वे परिवर्तन हो सकते हैं जिन्हें आप मर्ज करना चाहते हैं
  • संभावित रूप से जो आपके कार्यस्थल की तुलना में अधिक हाल ही में रिपॉजिटरी में अपडेट किए गए हैं
    • जैसे परिवर्तन जो आप अपने कार्यक्षेत्र में मर्ज करना चाहते हैं
  • क्या फाइलें कार्यक्षेत्र में हैं लेकिन संस्करण नियंत्रण के तहत (अभी तक) नहीं हैं I
    • उदाहरण के लिए जो संस्करण आपको संस्करण नियंत्रण प्रणाली में जोड़ना चाहते हैं
    • या संभवतः आपके .hgignore / .gitignore / में जोड़ें ... फ़ाइल पैटर्न को अनदेखा करें
  • क्या संस्करण संस्करण नियंत्रण के तहत हैं, लेकिन कार्यक्षेत्र में नहीं हैं
    • उदाहरण के लिए, जिन फ़ाइलों को आप अपने संस्करण नियंत्रण प्रणाली से हटाना चाहते हैं
    • या जो फ़ाइलों को आप गलती से नष्ट कर सकते हैं

वास्तव में स्थिति जानकारी किस प्रकार प्रदान की जाती है VCS पर निर्भर करता है। उदाहरण के लिए, आधार पर चेकआउट आधारित है, लेकिन अधिकांश आधुनिक संस्करण नियंत्रण उपकरण नहीं हैं।

लेकिन ... लगभग सभी संस्करण नियंत्रण टूल में एक एकल, सरल, कमांड है जो आपको ऐसी स्थिति बताएगा।

सिवाय, जाहिरा तौर पर, ताकतवर

... मैं एक एकल आदेश में git / hg / bzr / svn स्थिति के उदाहरण प्रदान करने के लिए जा सकते हैं, लेकिन जो कम करने के लिए कम से कम दो आदेशों की आवश्यकता होती है I





perforce