सीवीएस निर्देशिका को दोबारा कैसे जोड़ें

मैंने सीवीएस के साथ थोड़ा सा खेला है और अपनी सभी क्षमताओं से सबसे परिचित नहीं हूं, लेकिन मेरे लिए एक बड़ी परेशानी नई निर्देशिकाओं को जोड़ने की कोशिश कर रही है जिनमें उनमें अधिक निर्देशिकाएं हैं। चल रहा है " cvs add " केवल वर्तमान निर्देशिका की सामग्री जोड़ता है, और " cvs import " का उपयोग करके सही चीज़ की तरह नहीं दिखता है क्योंकि यह अभी भी सभी कोड I है। एम उत्पादन (यह दावा किया गया है कि आयात तृतीय पक्ष स्रोत के लिए है)

क्या आप वर्तमान सीवीएस प्रोजेक्ट में किसी दिए गए निर्देशिका में सबकुछ जोड़ने के लिए किसी भी तरह से जानते हैं (या यदि एसवीएन या गिट यह विशेष रूप से आसान बनाता है)?

0
ro fr bn
हां, एसवीएन और गिट दोनों निर्देशिकाओं सहित पुनरावर्ती रूप से आसान हैं।
जोड़ा लेखक dokaspar, स्रोत

14 उत्तर

मुझे लगता है कि मैंने अपने सीवीएस दिनों में यही किया है:

find . -type f | xargs cvs add
0
जोड़ा

आह, रिक्त स्थान। यह रिक्त स्थान के साथ काम करेगा:

find . -type f -print0| xargs -0 cvs add
0
जोड़ा
आपको वास्तव में यह सुनिश्चित करना होगा कि आप सीवीएस में 'सीवीएस' नामक निर्देशिकाएं नहीं जोड़ते हैं, कुछ कारणों से सीवी कभी-कभी इसे पकड़ लेते हैं, कभी-कभी ऐसा नहीं होता है। इसे इसके बजाए चलाएं: ढूंढें। \! -नाम "सीवीएस" -और \! -नाम "प्रविष्टियां" -और \! -नाम "रिपोजिटरी" -और \! -नाम "रूट" -टी
जोड़ा लेखक Chris Bunch, स्रोत
यद्यपि यह एक अच्छी शुरुआत है, लेकिन इसे पूरी तरह से उपयोगी होने के लिए बहुत से बहिष्कारों की आवश्यकता है।
जोड़ा लेखक awm, स्रोत

एसवीएन निश्चित रूप से यह मामूली कार्य करता है, हालांकि एक जीयूआई जैसे टोर्टोइज़ का उपयोग करना भी आसान है।

This might be a good place to start: http://www-mrsrl.stanford.edu/~brian/cvstutorial/

0
जोड़ा

Mark's solution resolves the spaces issue, but produces this issue:

cvs add: cannot open CVS/Entries for reading: No such file or directory
cvs [add aborted]: no repository

इसे ठीक करने के लिए, उपयोग करने के लिए वास्तविक आदेश है:

find . -type f -exec cvs add {} \;
0
जोड़ा

सबसे पहले सीवीएस में सभी निर्देशिका जोड़ें

find . -type d -print0| xargs -0 cvs add

फिर निर्देशिका में सभी फाइलें सीवीएस में जोड़ें

find . -type f -print0| xargs -0 cvs add
0
जोड़ा

cvs import is not just for 3rd-party sources. In fact, directories are not versioned by CVS, so they are not a subject to branch policies. As long as you import empty directories, it is fine.

0
जोड़ा

Note that you can only use cvs add on files and folders that are located inside an already checked out working copy, otherwise you will get the "Cannot open CVS/Entries for reading" message. A technique for creating a new "root module" using cvs add is explained in this WinCVS FAQ item: http://cvsgui.sourceforge.net/newfaq.htm#add_rootmodule

If you are on Windows, both TortoiseCVS and WinCVS support recursive addition (and optional commit) of multiple files in a single operation. In WinCvs look for the macro Add>Recursive Add (auto-commit)... In Tortoise use the Add Contents command on a directory. Both will allow you to select which files to add and what keyword expansion modes to use for them (mostly used for defining which files are binary).

For further info about recursive add in WinCvs look here: http://cvsgui.sourceforge.net/newfaq.htm#cvs-add_recursive


उस <कोड> सीवी आयात के अलावा बड़े पैमाने पर जोड़ों के लिए उपयुक्त है। हालांकि, जिस तरह से वेनेला सीवीएस में cvs आयात लागू किया गया है, दो दोष हैं (क्योंकि यह मूल रूप से तृतीय पक्ष कोड के लिए लिखा गया था ):

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

यदि आप सीवीएसएनटी का उपयोग कर रहे हैं तो आप आयात पर -nc विकल्प निर्दिष्ट करके दोनों दोषों से बच सकते हैं। -n "विक्रेता" शाखा से बचने के लिए है और -C सीवीएस निर्देशिका बनाने के लिए है।

0
जोड़ा

मुझे करना पसंद है (निर्देशिका के रूप में एक जोड़ने की जरूरत है)

cvs status 2>/dev/null | awk '{if ($1=="?")system("cvs add "$2)}'

आपको आउटपुट होने तक कई बार इसे चलाने की आवश्यकता हो सकती है (पहले निर्देशिका के लिए उसके बच्चों के लिए)

0
जोड़ा

मैं इसका उपयोग करता हूं:

सबसे पहले सभी निर्देशिकाओं को सीवीएस कम से कम जोड़ें:

$> find . -type d \! -name CVS -exec cvs add '{}' \;

दूसरा सभी फाइलें जोड़ें, कम से कम सीवीएस निर्देशिकाएं:

 find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs add '{}' \; \)

तीसरा करो? प्रतिबद्ध? "प्रथम संस्करण" टिप्पणी की तरह पुनरावर्ती:

 find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs commit -m "first version" '{}' \; \)

आखिरकार सभी टैगिंग टैगिंग:

 find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs tag -F MY_CVS_TAG '{}' \; \)
0
जोड़ा
मैंने इसे तब इस्तेमाल किया जब मुझे एक मौजूदा प्रोजेक्ट को एक रिपोजिटरी में अपलोड करना पड़ा
जोड़ा लेखक manufosela, स्रोत
बहुत उपयोगी कमांड, लेकिन सीवीएस को फिर से प्रतिबद्ध करने के मामले में "सीवीएस प्रतिबद्ध" के रूप में सभी फाइलें क्या होंगी?
जोड़ा लेखक Gagan, स्रोत
मैक पर: ढूंढें। (-प्रकार डी-नाम सीवीएस -प्रून) -o (-type f! -name '.DS_Store' -exec cvs '{}' जोड़ें \;)
जोड़ा लेखक sgarbesi, स्रोत

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

बस इसे / usr / bin / cvsadd जैसे कुछ के रूप में सहेजें और chmod + x / usr / bin / cvsadd को न भूलें।

#!/bin/sh
# @(#) add files and directories recursively to the current CVS directory
# (c) 2009 by Dirk Jagdmann 

if [ -z "$1" ] ; then
    echo "usage: cvsadd 'import message'"
    exit 1
fi

if [ -d "$2" ] ; then
    cvs add "$2"
    cd "$2" || exit 1
fi

if [ ! -d CVS ] ; then
    echo "current directory needs to contain a CVS/ directory"
    exit 1
fi

XARGS="xargs -0 -r -t -L 1"

# first add all files in current directory
find . -maxdepth 1 -type f -print0 | $XARGS cvs add
find . -maxdepth 1 -type f -print0 | $XARGS cvs ci -m "$1"

# then add all directories
find . -maxdepth 1 -type d -not -name CVS -a -not -name . -print0 | $XARGS "$0" "$1"
0
जोड़ा

सबसे पहले सीवीएस में सभी निर्देशिका जोड़ें

find . -type d -print0| xargs -0 cvs add

फिर निर्देशिका में सभी फाइलें सीवीएस में जोड़ें

find . -type f | grep -v CVS | xargs cvs add

मेरे लिए काम किया

0
जोड़ा
सीवीएस फ़ोल्डरों में फ़ाइलों को बाहर नहीं करता है।
जोड़ा लेखक Jay Elston, स्रोत

मैंने पाया कि यह बहुत प्रभावी ढंग से काम किया है:

सबसे पहले, सभी निर्देशिकाएं जोड़ें, लेकिन किसी भी नामित "सीवीएस" नहीं:

find . -type d \! -name CVS -exec cvs add '{}' \;

फिर एक सीवीएस निर्देशिका में कुछ भी छोड़कर, सभी फाइलें जोड़ें:

find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs add '{}' \; \)

अब, अगर किसी को इस दिन और उम्र में सीवीएस का उपयोग करने की शर्मिंदगी का इलाज है ...

0
जोड़ा
मैंने इसे सैकड़ों निर्देशिकाओं और हजारों फाइलों के साथ एक निर्देशिका पदानुक्रम पर इस्तेमाल किया, जो एक आकर्षण की तरह काम करता था। धन्यवाद!
जोड़ा लेखक Igor Oks, स्रोत
सरल आसान या 1 या 2 व्यक्ति गैर-ब्रांचिंग "बैकअप" और "शेयर" स्रोत नियंत्रण के लिए सीवीएस का उपयोग करना आसान है
जोड़ा लेखक awm, स्रोत

पहले से ही चर्चा की गई विधियां रिकर्सिव लुकअप करेंगी, लेकिन अगर आप एक ही क्रिया फिर से करते हैं तो यह असफल हो जाएगा (यदि आप अस्तित्व वाले पेड़ में उपट्री जोड़ना चाहते हैं) इसी कारण से आपको यह जांचना होगा कि आपकी निर्देशिका अभी तक नहीं जोड़ा गया था और फिर केवल उन फ़ाइलों को जोड़ें जो अभी तक नहीं जोड़े गए हैं। ऐसा करने के लिए हम cvs up के आउटपुट का उपयोग यह देखने के लिए करते हैं कि कौन से तत्व अभी तक जोड़े नहीं गए थे - इसके लाइन की शुरुआत में प्रश्न चिह्न होगा।

हम यह सुनिश्चित करने के लिए विकल्प -0 , -print0 और -zZ विकल्प का उपयोग करते हैं, ताकि हम फ़ाइल नामों में रिक्त स्थान सही ढंग से संसाधित कर सकें। यदि कुछ भी जोड़ने की आवश्यकता नहीं है तो हम भागने से बचने के लिए - no-run-if-खाली का भी उपयोग कर रहे हैं।

CVS_PATTERN=/tmp/cvs_pattern
cvs -z3 -q up | egrep '^\?.*' | sed -e 's/^? //' > $CVS_PATTERN
find . -type d \! -name CVS -print0 | grep -zZf $CVS_PATTERN | xargs -0 --no-run-if-empty cvs add
find . \( -type d  -name CVS -prune \) -o \( -type f  -print0 \) | grep -zZf $CVS_PATTERN | xargs -0 --no-run-if-empty cvs add
cvs commit -m 'commiting tree recursively'

इस दृष्टिकोण के साथ हम ऐसी त्रुटियों से बचेंगे:

cvs add: cannot add special file `.'; skipping
cvs [add aborted]: there is a version in ./dirname1 already

तथा

cvs add: `./dirname2/filename' already exists, with version number 1.1.1.1
0
जोड़ा

मार्क से यह जवाब उपयोगी था (ढूंढें। -type f -print0 | xargs -0 cvs जोड़ें) लेकिन मैंने कुछ समस्या हल की है जब सीवीएस टैग, प्रविष्टियां, ect जैसे अपनी फाइलें जोड़ने की कोशिश करते हैं।

  1. अपना सबसे उच्च स्तरीय फ़ोल्डर जोड़ें जिसे NEW_FOLDER
  2. कहा जाता है
cvs add NEW_FOLDER
  1. सभी उप-फ़ोल्डर पेड़ जोड़ने के लिए कुछ बहिष्करण के साथ पिछले आदेश का उपयोग करें

NEW_FOLDER / -type डी ढूंढें! -नाम "सीवीएस" -और! -नाम "टैग" -और! -नाम "प्रविष्टियां.लॉग" -और! -नाम "प्रविष्टियां" -और! -नाम "रिपोजिटरी" -और! -नाम "रूट" -प्रिंट 0 | xargs -0 cvs जोड़ें

  1. सभी फ़ाइलों को जोड़ने के लिए कुछ बहिष्करण के साथ पिछले कमांड का उपयोग करें

NEW_FOLDER / -type f ढूंढें! -नाम "सीवीएस" -और! -नाम "टैग" -और! -नाम "प्रविष्टियां.लॉग" -और! -नाम "प्रविष्टियां" -और! -नाम "रिपोजिटरी" -और! -नाम "रूट" -प्रिंट 0 | xargs -0 cvs जोड़ें

0
जोड़ा