কিভাবে CVS ডিরেক্টরি recursively যোগ করুন

আমি CVS সঙ্গে সামান্য বিট করেছি এবং তার সব ক্ষমতা সঙ্গে সবচেয়ে পরিচিত না, কিন্তু আমার জন্য একটি বড় বিরক্তিকর তাদের মধ্যে আরও ডিরেক্টরি ধারণকারী নতুন ডিরেক্টরি যোগ করার চেষ্টা করছে। চলমান " cvs add " কেবল বর্তমান ডিরেক্টরীগুলির বিষয়বস্তু যোগ করে এবং " cvs import " ব্যবহার করে সঠিক জিনিসটি নাও দেখাতে পারে যেহেতু এটা এখনও সব কোড আই ' এম উত্পাদক (এই howto দাবিটি আমদানি করা হয় তৃতীয় পক্ষের সূত্র )

আপনি কি জানেন যে কোনও সোর্সকে বর্তমান সিভিএস প্রজেক্টে (অথবা যদি SVN বা git এই উল্লেখযোগ্যভাবে সহজ করে তোলে) একটি প্রদত্ত ডিরেক্টরিতে সবকিছু যুক্ত করে?

0
ro fr hi
হ্যাঁ, উভয় SVN এবং git উল্লেখযোগ্যভাবে ডিরেক্টরীগুলি সহ recursively জন্য সহজ।
যোগ লেখক dokaspar, উৎস

14 উত্তর

আমি মনে করি আমি আমার CVS দিনের মধ্যে ফিরে যাচ্ছি:

find . -type f | xargs cvs add
0
যোগ

আহ, স্পেস এটি স্পেসগুলির সাথে কাজ করবে:

find . -type f -print0| xargs -0 cvs add
0
যোগ
আপনি আসলে নিশ্চিত করতে পারেন যে আপনি 'সিভিএস' নামক ডিরেক্টরি সিভিএস থেকে যোগ করবেন না, কারণ কোন কোন ক্ষেত্রে সিভি কখনোই এটি ধরেন, কখনও কখনও এটি না। এটি পরিবর্তে চালান: খুঁজে পেতে \! নাম "সিভিএস" - এবং! নাম "এণ্ট্রি" এবং! নাম "রেপোসিটরি" - এবং! নাম "রুট"
যোগ লেখক Chris Bunch, উৎস
যদিও এটি একটি ভাল শুরু, এটি সম্পূর্ণ ব্যতিক্রমধর্মী হতে অনেক ব্যতিক্রম প্রয়োজন।
যোগ লেখক awm, উৎস

SVN স্পষ্টভাবে এই তুচ্ছ টাস্ক করে তোলে, একটি GUI ব্যবহার করে Tortoise মত এমনকি সহজ, যাইহোক ,.

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
যোগ

প্রথমে CVS এ সকল ডিরেক্টরি যোগ করুন

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 import ছাড়াও ভর-সংযোজনগুলির জন্য উপযুক্ত। যাইহোক, উপায়ে cvs import প্রয়োগ করা হয় CVS- এর দুটি দুর্বলতা (কারণ এটি ছিল প্রাথমিকভাবে তৃতীয় পক্ষের কোডের জন্য লিখিত):

  • এটি বিশেষ শব্দের সাথে একটি বাধ্যতামূলক শাখা তৈরি করে।
  • এটি একটি চেকড আউটপুট কাজ কপি হিসেবে আমদানি করা কোডটি স্থাপন করার জন্য রিপোজিটরি মেটা-ডেটা তৈরি (যেমন লুকানো CVS ডিরেক্টরি) তৈরি করে না, যার মানে হল যে আসলে আমদানি করা ফাইলগুলির সাথে কাজ করার জন্য আপনাকে প্রথমে তাদের পরীক্ষা করতে হবে রিপোজিটরির বাইরে

আপনি যদি CVSNT ব্যবহার করেন তবে আপনি আমদানির -nc বিকল্প নির্দিষ্ট করে উভয় দুর্ঘটনা এড়াতে পারেন। -n "বিক্রেতার" শাখা এড়ানো এবং -C সিভিএস ডিরেক্টরি তৈরি করার জন্য।

0
যোগ

আমি কি করতে চাই (ডাইরেক্টরি এর প্রয়োজন একটি যোগ করুন)

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

আপনি এই বহুবার চালানোর প্রয়োজন হতে পারে (প্রথম জন্য ডিরেক্টরির তারপর তার শিশুদের জন্য) পর্যন্ত কোন আউটপুট আছে

0
যোগ

আমি এই ব্যবহার:

প্রথমে CVS টি নিম্নে সমস্ত ডিরেক্টরি যোগ করুন:

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

দ্বিতীয় সব ফাইল যোগ করুন, কম বেশী CVS ডিরেক্টরি:

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

তৃতীয় কি করবেন? recursively "প্রথম সংস্করণ" মন্তব্য মত:

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

সব recursively শেষ ট্যাগিং:

find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs tag -F MY_CVS_TAG '{}' \; \)
0
যোগ
আমি এটি ব্যবহৃত যখন একটি একটি সংগ্রহস্থল একটি বিদ্যমান প্রকল্প আপলোড ছিল
যোগ লেখক manufosela, উৎস
অত্যন্ত দরকারী কমান্ড, কিন্তু কি ক্ষেত্রে CVS recursively কমিট হিসাবে প্রয়োজন হয় "cvs কমিট" সব ফাইল কমিট হবে?
যোগ লেখক Gagan, উৎস
ম্যাক নেভিগেশন: খুঁজে পেতে (-type d -name CVS -prune) -o (-type f! -name '.DS_Store' -exec cvs add '{}' \;)
যোগ লেখক sgarbesi, উৎস

আমি এই সহজ শেল স্ক্রিপ্ট ব্যবহার করছি, যা ইতিমধ্যে একটি চেক-আউট CVS ডিরেক্টরি থেকে শুরু করা উচিত। এটির পুনরাবৃত্তিমূলক অনুসন্ধানে খুঁজে পাওয়া যেকোনো ফাইল এবং ডিরেক্টরিগুলিকে জোড় করে সংকলন করার চেষ্টা করবে, তাই শেষ পর্যন্ত আপনি একটি সম্পূর্ণরূপে সম্পাদিত গাছের সাথে শেষ হওয়া উচিত।

শুধু এইটি / 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
যোগ

প্রথমে CVS এ সকল ডিরেক্টরি যোগ করুন

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

তারপর ডিরেক্টরীতে সমস্ত ফাইল সিভিএস এ যোগ করুন

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

আমার জন্য কাজ

0
যোগ
CVS ফোল্ডারে ফাইলগুলি বাদ নেই।
যোগ লেখক Jay Elston, উৎস

আমি এই কার্যকরী কার্যকারিতা পেয়েছি:

প্রথমত, সমস্ত ডিরেক্টরি যুক্ত করুন, কিন্তু "CVS" নামে কোনও নাম নেই:

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

তারপর সব ফাইল যোগ করুন, একটি CVS ডিরেক্টরির মধ্যে কিছু ছাড়া:

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

এখন, যদি কেউ এই দিন এবং বয়সে CVS ব্যবহার করার জন্য বিব্রত জন্য একটি প্রতিকার আছে ...

0
যোগ
আমি শত শত ডিরেক্টরি এবং হাজার হাজার ফাইল সহ একটি ডিরেক্টরি অনুক্রমের উপর এটি ব্যবহৃত, একটি কবজ ভালো কাজ ধন্যবাদ!
যোগ লেখক Igor Oks, উৎস
সিভিএস সহজ সহজ জন্য ব্যবহার করা সহজ হয় বা 1 বা 2 ব্যক্তি নন- branching "ব্যাকআপ" এবং "ভাগ" উৎস নিয়ন্ত্রণ
যোগ লেখক awm, উৎস

ইতিমধ্যে আলোচনা পদ্ধতি recursive সন্ধান করতে হবে, আপনি পুনরায় একই কর্ম সঞ্চালন যদি এটি ব্যর্থ হবে (আপনি বিদ্যমান গাছ থেকে subtree যোগ করতে চান) এই কারণে আপনি আপনার ডিরেক্টরি এখনো এখনো যোগ করা হয় নি পরীক্ষা করা প্রয়োজন এবং তারপর এখনো এখনো যোগ করা না যা ফাইল যোগ করা প্রয়োজন। এটি করার জন্য আমরা cvs up এর আউটপুট ব্যবহার করে দেখতে পারি যে কোন উপাদানগুলি এখনও যোগ করা হয়নি - লাইনের প্রারম্ভে এটির প্রশ্ন চিহ্ন থাকবে

আমরা সঠিকভাবে ফাইলের নামগুলিতে ফাঁকা স্থানগুলি প্রক্রিয়া করার জন্য আমরা -0 , -print0 এবং -zZ বিকল্পগুলি ব্যবহার করি। আমরা যদি - না-চালানো-যদি-খালি চালানোর জন্য কিছু যোগ করার প্রয়োজন হয় তাহলে এড়াতে আমরা ব্যবহার করি।

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 add) কিন্তু আমি কিছু সমস্যা সমাধানের চেষ্টা করেছি যখন cvs যোগ করে ট্যাগ, এন্ট্রিস, ect মত তার নিজের ফাইল যোগ করার চেষ্টা করে।

  1. আপনার সর্বাধিক উচ্চ স্তরের ফোল্ডারটি NEW_FOLDER নামক
  2. নাম দিন
cvs add NEW_FOLDER
  1. সমস্ত সাব-ফোল্ডার গাছ যুক্ত করার জন্য পূর্বের কমান্ডটি ব্যবহার করে কিছু ব্যতিক্রম বাদ দিয়ে

NEW_FOLDER /-টাইপ ডি খুঁজে পেতে! নাম "সিভিএস" - এবং! নাম "ট্যাগ" - এবং! নাম "এন্ট্রি। লগ" - এবং! নাম "এন্ট্রি" - এবং! নাম "রেপোসিটরি" - এবং! -নাম "রুট" -প্রিন্ট0 | xargs -0 cvs add

  1. সমস্ত ফাইলগুলি যোগ করার জন্য পূর্বের কমান্ডটি ব্যবহার করে কিছু বর্জন করুন

NEW_FOLDER / -পৃষ্ঠা খুঁজুন! নাম "সিভিএস" - এবং! নাম "ট্যাগ" - এবং! নাম "এন্ট্রি। লগ" - এবং! নাম "এন্ট্রি" - এবং! নাম "রেপোসিটরি" - এবং! -নাম "রুট" -প্রিন্ট0 | xargs -0 cvs add

0
যোগ