سؤال

هل يمكنني تجاهل مجلد على الخروج svn؟أحتاج إلى تجاهل مجلد DOCs عند الخروج من خادم البناء الخاص بي.

يحرر: تجاهل العناصر الخارجية ليس خيارًا.لدي بعض العناصر الخارجية التي أحتاجها.

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

المحلول

لا يمكنك تجاهل المجلدات مباشرة عند الخروج، ولكن يمكنك استخدام عمليات السحب المتفرقة في svn 1.5.على سبيل المثال:

$ svn co http://subversion/project/trunk my_checkout --depth immediates

سيؤدي هذا إلى فحص الملفات والأدلة من صندوق المشروع الخاص بك إلى "my_checkout"، ولكن لن يتم تكرارها في تلك الدلائل.على سبيل المثال:

$ cd my_checkout && ls
bar/ baz foo xyzzy/

ثم للحصول على محتويات "الشريط" لأسفل:

$ cd bar && svn update --set-depth infinity

نصائح أخرى

نعم يمكنك استخدام SVN 1.6.ستحتاج إلى إجراء عملية دفع أولاً ثم وضع علامة على المجلد للاستبعاد ثم حذف المجلد غير المرغوب فيه.

svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs

من الآن فصاعدًا، لن تؤدي أي تحديثات لنسخة العمل إلى إعادة ملء مجلد المستندات.

يرى http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ و http://subversion.Apache.org/docs/release-notes/1.6.html#sparse-directory-exclusion لمزيد من التفاصيل.

توم

مع الإصدارات السابقة للإصدار 1.5، وجدت أنه إذا قمت بسحب المجلد العلوي فقط ثم قمت بالتحديث بشكل انتقائي، فمنذ ذلك الحين فصاعدًا، تؤثر التحديثات فقط على ما قمت بسحبه.أي.

svn co -N foo
cd foo
svn up -N bar
svn up

العلامة -N تجعل العملية غير متكررة.ما ورد أعلاه لن يتحقق من أي شيء آخر على مستوى foo، على سبيل المثال.ويقول هناك مجلد lala, ، لن يقوم svn up النهائي بفحص هذا المجلد، ولكن سيتم تحديثه bar.

ولكن في وقت لاحق يمكنك ذلك svn up lala وبالتالي إضافته إلى الخروج.

من المفترض أن هذا يعمل أيضًا مع 1.5.

هذا موجود في عميل TortoiseSVN 1.7.1 (قد يكون متاحًا في بعض الإصدارات الأقدم أيضًا):

  • الخروج SVN -> حدد عنوان URL للمستودع

  • انقر على "عناصر الخروج" (ضمن عمق الخروج) وحدد فقط المجلدات المطلوبة!

يمكنك وضع مجلد المستندات في مستودع خارجي ثم استخدامه svn checkout --ignore-externals.

نعم، التخريب 1.5 لديه ميزة تسمى عمليات السحب متفرقة يمكنها أن تفعل بالضبط هذا النوع من الأشياء.

لقد وجدت هذا السؤال يبحث عن طريقة للتحقق من مصادر WebKit مع استبعاد اختبارات الانحدار.وانتهى بي الأمر بما يلي:

svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \
  --depth immediates

cd WebKit
find . \
  -maxdepth 1 -type d \
  -not -name '.*' \
  -not -name '*Tests' \
  -not -name 'Examples' \
  -not -name 'Websites' \
  | (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)

لاحظ أنه يمكنك تغيير الاستثناءات كما تراه مناسبًا، ولكن يوصى بتخطي دليل العمل (الذي تم تحديثه بالفعل) وجميع أدلة .svn.

لقد قمت مؤخرًا بحل نفس المهمة.تتمثل الفكرة في الحصول على القائمة الفورية للمجلدات/الملفات الموجودة ضمن المستودع واستبعاد الإدخالات التي تحتاجها، ثم التحقق من المجلدات المتبقية وتحديث الملفات الفورية إن وجدت.هنا هو الحل:

    # Path to the svn repository to be checked out
rpath=https://svn-repo.company.com/sw/trunk/ && \
    # This files are to be excluded (folders are ending with '/')
    # this is a regex pattern with OR ('|') between enties to be excluded
excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \
    # Get list of the files/folders right under the repository path
filtered=`svn ls $rpath | egrep -v $excludep` && \
    # Get list of files out of filtered - they need to be 'uped'
files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]$'` && \
    # Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]$'` && \
    # Initial nonrecursive checkout of repository - just empty
    # to the current (./) working directory
svn co $rpath ./ --depth empty && \
    # Update the files
svn up $files &&\
    # Check out the all other folders finally.
svn co `echo $folders | sed "s|\<|$rpath|g"`

التغيير إلى دليل العمل المصدر.انسخ الأوامر.معجون.قم بتغيير عنوان URL المناسب واستبعاد النمط.قم بتشغيل الأمر.

شكرًا،

لا، التجاهل مخصص فقط لإضافة الملفات.
يمكنك استخدام عمليات السحب المتفرقة (إذا كنت تستخدم svn 1.5)

كما ذكر البعض الآخر، يمكنك فقط استخدام خصائص svn:externals ثم خيار --ignore-externals عند الخروج.ومع ذلك، هناك شيء واحد يجب ملاحظته، وهو أن svn:externals يفعل ذلك لا تحتاج بالضرورة إلى الرجوع إلى مستودع آخر.يمكن أن يكون إشارة إلى مجلد آخر في نفس الريبو.

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