كيفية إضافة السير الذاتية والدلائل بشكل متكرر

StackOverflow https://stackoverflow.com/questions/5071

  •  08-06-2019
  •  | 
  •  

سؤال

لقد لعبت مع السير الذاتية قليلا و لست أكثر دراية مع كل من قدراتها ، ولكن الانزعاج ضخمة بالنسبة لي هو محاولة إضافة جديدة الدلائل التي تحتوي على أكثر الدلائل في نفوسهم.تشغيل "cvs add"فقط يضيف محتويات الدليل الحالي ، واستخدام "cvs import"لا تبدو مثل الشيء الصحيح إما لأنه لا يزال كل رمز انا إنتاج (هذا howto ادعى الاستيراد هو 3rd الطرف مصادر)

هل تعرفون أي طريقة متكرر إضافة كل شيء في الدليل الحالي السير الذاتية المشروع (أو إن أو إس بوابة يجعل هذا ولا سيما أسهل)?

هل كانت مفيدة؟

المحلول

آه, المساحات.هذا سوف تعمل مع المساحات:

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

نصائح أخرى

لقد وجدت هذا عملنا بشكل فعال:

الأولى, إضافة كافة الدلائل ، ولكن ليس أي يدعى "CVS":

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 -exec cvs add '{}' \;

الثانية إضافة كافة الملفات أقل منها CVS الدلائل:

 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 '{}' \; \)

أولا إضافة جميع الدلائل إلى السير الذاتية

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

ثم إضافة كافة الملفات في الدلائل إلى السير الذاتية

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

عملت بالنسبة لي

cvs import ليس فقط ل 3rd الطرف المصادر.في الواقع, الدلائل ليست إصدار من السير الذاتية ، لذلك فهي لا تخضع فرع السياسات.طالما كنت استيراد الدلائل الفارغة ، فإنه على ما يرام.

لاحظ أنه يمكنك فقط استخدام cvs add على الملفات والمجلدات الموجودة داخل التحقق بالفعل عمل نسخ أو خلاف ذلك سوف تحصل على "لا يمكن فتح CVS/مقالات عن القراءة" رسالة.تقنية خلق جديد "جذر وحدة" باستخدام cvs add وأوضح في هذا WinCVS التعليمات البند: http://cvsgui.sourceforge.net/newfaq.htm#add_rootmodule

إذا كنت على ويندوز ، سواء TortoiseCVS و WinCVS دعم متكررة بالإضافة إلى (اختياري لارتكاب) من ملفات متعددة في عملية واحدة.في WinCvs البحث عن الماكرو إضافة>العودية إضافة (لارتكاب السيارات)...في السلحفاة استخدام إضافة محتويات الأمر على الدليل.كلا سوف تسمح لك لتحديد الملفات التي تضيف ما الكلمة التوسع في طرق استخدام لهم (تستخدم في الغالب تحديد الملفات التي يتم الثنائية).

لمزيد من المعلومات عن العودية إضافة في WinCvs انظر هنا: http://cvsgui.sourceforge.net/newfaq.htm#cvs-add_recursive


وبصرف النظر عن أن cvs import هي مناسبة تماما الشامل الإضافات.ومع ذلك ، فإن الطريقة cvs import يتم تنفيذها في الفانيليا السير الذاتية اثنين من السلبيات (لأنه كان الأصل كتب كود طرف ثالث):

  • فإنه يخلق إلزامية فرع خاص دلالات.
  • لا إنشاء مستودع البيانات الفوقية (أيالخفية السير الذاتية الدلائل) اللازمة لإنشاء المستوردة رمز كما خرجت نسخة العمل ، مما يعني أنه من أجل العمل مع الملفات المستوردة عليك أولا التحقق منها من مستودع

إذا كنت تستخدم CVSNT يمكنك تجنب كل السلبيات عن طريق تحديد -nC الخيار على الاستيراد. -n هو تجنب "بائع" فرع -C هو إنشاء السير الذاتية الدلائل.

هذا الجواب من العلامة كانت مفيدة (البحث .من نوع f-print0| xargs -0 السير الذاتية إضافة) ولكن أنا حل بعض المشاكل التي حدثت عند السير الذاتية إضافة محاولة إضافة بلده الملفات مثل الوسم, مقالات, إلخ..

  1. إضافة معظم عالية المستوى مجلد يسمى NEW_FOLDER
cvs add NEW_FOLDER
  1. استخدام الأمر السابق مع بعض االستثناءات إضافة كافة المجلدات الفرعية شجرة

تجد NEW_FOLDER/ -type d !-اسم "السير الذاتية" و !-اسم "الوسم" -و !-اسم "الإدخالات.سجل" -و !-اسم "مقالات" و !-اسم "مستودع" و !-اسم "الجذر" -print0 | xargs -0 السير الذاتية إضافة

  1. استخدام الأمر السابق مع بعض االستثناءات إضافة جميع الملفات

تجد NEW_FOLDER/ -type f !-اسم "السير الذاتية" و !-اسم "الوسم" -و !-اسم "الإدخالات.سجل" -و !-اسم "مقالات" و !-اسم "مستودع" و !-اسم "الجذر" -print0 | xargs -0 السير الذاتية إضافة

وأعتقد أن هذا هو ما فعلته في سيرتي الذاتية أيام:

find . -type f | xargs cvs add

أولا إضافة جميع الدلائل إلى السير الذاتية

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

ثم إضافة كافة الملفات في الدلائل إلى السير الذاتية

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

أنا باستخدام هذا بسيط شيل ، والتي يجب أن تبدأ بالفعل التحقق-out السير الذاتية الدليل.وسوف بغباء محاولة إضافة/ارتكاب أي الملفات والدلائل يجدها عند البحث العودية, حتى في نهاية المطاف يجب أن ينتهي مع الالتزام الكامل الشجرة.

ببساطة هذا شيء مثل /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"

سبق الأساليب سوف تفعل عودية ، ولكنها سوف تفشل إذا كانت تقوم بنفس العمل مرة أخرى (إذا كنت ترغب في إضافة الشجرة إلى شجرة موجودة) لهذا السبب تحتاج إلى التحقق من أن الدلائل كانت لا تضاف بعد ثم فقط إضافة الملفات التي لا تضاف حتى الآن.للقيام بذلك نستخدم إخراج cvs up لمعرفة العناصر التي كانت لا تضاف حتى الآن - سوف يكون علامة استفهام في بداية السطر.

نحن نستخدم الخيارات -0, -print0 و -zZ أن تكون على يقين من أننا بشكل صحيح عملية مسافات في أسماء الملفات.ونحن أيضا استخدام --no-run-if-empty تجنب تشغيل إذا كان أي شيء تحتاج إلى إضافة.

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

أود القيام به (كما الدليل تحتاج إلى إضافة)

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

قد تحتاج إلى تشغيل هذا عدة مرات(أولا عن الدليل ثم لأطفالها) حتى لا يوجد الانتاج

مارك الحل حل المساحات المسألة ، ولكن تنتج هذه المسألة:

السير الذاتية إضافة:لا يمكن فتح CVS/إدخالات القراءة:لا يوجد مثل هذا الملف أو الدليل
السير الذاتية [إضافة إحباط]:لا مستودع

إلى إصلاحه ، القيادة الفعلية لاستخدام هي:

find . -type f -exec cvs add {} \;

إس بالتأكيد يجعل هذا بالأمر الهين ، وذلك باستخدام واجهة المستخدم الرسومية مثل السلحفاة هو أسهل من ذلك.

قد يكون هذا مكان جيد للبدء: http://www-mrsrl.stanford.edu/~براين/cvstutorial/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top