كيف أتجاهل الملفات في التخريب؟

سئل على ١٧ سبتمبر ٢٠٠٨  ·  تمت مشاهدة 592.1k مرة  ·  مصدر

andyuk picture
في ١٧ سبتمبر ٢٠٠٨

كيف أتجاهل الملفات في التخريب؟

أيضًا ، كيف يمكنني العثور على الملفات التي لا تخضع للتحكم في الإصدار؟

الإجابات

andyuk picture
في ١٧ سبتمبر ٢٠٠٨
752

(تم تحديث هذه الإجابة لتتطابق مع سلوك SVN 1.8 و 1.9)

لديك سؤالان:

وضع علامة على الملفات كمتجاهلة:

أعني بعبارة "ملف تم تجاهله" أن الملف لن يظهر في القوائم حتى في حالة "عدم الإصدار": سيتظاهر عميل SVN بأن الملف غير موجود على الإطلاق في نظام الملفات.

يتم تحديد الملفات التي تم تجاهلها بواسطة "نمط ملف". تم شرح بناء الجملة وتنسيق أنماط الملفات في وثائق SVN عبر الإنترنت: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "File Patterns in Subversion".

Subversion ، اعتبارًا من الإصدار 1.8 (يونيو 2013) والإصدارات الأحدث ، يدعم 3 طرق مختلفة لتحديد أنماط الملفات. إليك ملخص بأمثلة:

1 - منطقة تكوين وقت التشغيل - الخيار global-ignores :

  • هذا إعداد من جانب العميل فقط ، لذلك لن يشارك المستخدمون الآخرون قائمتك global-ignores ، وهي تنطبق على جميع عمليات إعادة الشراء التي تسحبها على جهاز الكمبيوتر الخاص بك.
  • تم تحديد هذا الإعداد في ملف منطقة تكوين وقت التشغيل:
    • Windows (مستند إلى ملف) - C:\Users\{you}\AppData\Roaming\Subversion\config
    • Windows (قائم على التسجيل) - Software\Tigris.org\Subversion\Config\Miscellany\global-ignores في كل من HKLM و HKCU .
    • Linux / Unix - ~/.subversion/config

2 - الخاصية svn:ignore ، والتي يتم ضبطها على المجلدات (وليس الملفات):

  • يتم تخزين هذا في الريبو ، لذلك سيكون لدى المستخدمين الآخرين نفس ملفات التجاهل. على غرار كيفية عمل .gitignore .
  • يتم تطبيق svn:ignore على الدلائل وهو غير متكرر أو موروث. سيتم استبعاد أي ملف أو دليل فرعي مباشر للدليل الأصلي الذي يطابق نمط الملف.
  • بينما يضيف SVN 1.8 مفهوم "الخصائص الموروثة" ، يتم تجاهل الخاصية svn:ignore نفسها في الدلائل الفرعية غير المباشرة:

    cd ~/myRepoRoot                             # Open an existing repo.
    echo "foo" > "ignoreThis.txt"                # Create a file called "ignoreThis.txt".
    
    svn status                                  # Check to see if the file is ignored or not.
    > ?    ./ignoreThis.txt
    > 1 unversioned file                        # ...it is NOT currently ignored.
    
    svn propset svn:ignore "ignoreThis.txt" .   # Apply the svn:ignore property to the "myRepoRoot" directory.
    svn status
    > 0 unversioned files                       # ...but now the file is ignored!
    
    cd subdirectory                             # now open a subdirectory.
    echo "foo" > "ignoreThis.txt"                # create another file named "ignoreThis.txt".
    
    svn status
    > ?    ./subdirectory/ignoreThis.txt        # ...and is is NOT ignored!
    > 1 unversioned file
    

    (لذلك لا يتم تجاهل الملف ./subdirectory/ignoreThis ، على الرغم من تطبيق " ignoreThis.txt " على جذر الريبو . ).

  • لذلك ، لتطبيق قائمة التجاهل بشكل متكرر ، يجب عليك استخدام svn propset svn:ignore <filePattern> . --recursive .

    • سيؤدي هذا إلى إنشاء نسخة من الخاصية في كل دليل فرعي.
    • إذا كانت قيمة <filePattern> مختلفة في الدليل الفرعي ، فإن قيمة الطفل تتجاوز الوالدين تمامًا ، لذلك لا يوجد تأثير "مضاف".
    • لذا إذا قمت بتغيير <filePattern> على الجذر . ، فيجب عليك تغييره بـ --recursive للكتابة فوقه في الدلائل الفرعية والفرعية.
  • ألاحظ أن بناء جملة سطر الأوامر غير بديهي.

    • لقد بدأت بافتراض أنك ستتجاهل ملفًا في SVN بكتابة شيء مثل svn ignore pathToFileToIgnore.txt ولكن هذه ليست طريقة عمل ميزة تجاهل SVN.

3- الخاصية svn:global-ignores . يتطلب SVN 1.8 (يونيو 2013):

  • يشبه هذا svn:ignore ، إلا أنه يستخدم ميزة "الخصائص الموروثة" الخاصة بـ SVN 1.8.
  • مقارنة بـ svn:ignore ، يتم تطبيق نمط الملف تلقائيًا في كل دليل تابع (وليس فقط العناصر الفرعية المباشرة).
    • هذا يعني أنه ليس من الضروري تعيين svn:global-ignores --recursive بعلامة
  • تشغيل نفس مجموعة الأوامر كما في المثال السابق ، ولكن باستخدام svn:global-ignores بدلاً من ذلك:

    cd ~/myRepoRoot                                    # Open an existing repo
    echo "foo" > "ignoreThis.txt"                       # Create a file called "ignoreThis.txt"
    svn status                                         # Check to see if the file is ignored or not
    > ?    ./ignoreThis.txt
    > 1 unversioned file                               # ...it is NOT currently ignored
    
    svn propset svn:global-ignores "ignoreThis.txt" .
    svn status
    > 0 unversioned files                              # ...but now the file is ignored!
    
    cd subdirectory                                    # now open a subdirectory
    echo "foo" > "ignoreThis.txt"                       # create another file named "ignoreThis.txt"
    svn status
    > 0 unversioned files                              # the file is ignored here too!
    

لمستخدمي TortoiseSVN:

كان هذا الترتيب بأكمله محيرًا بالنسبة لي ، لأن مصطلحات TortoiseSVN (كما هي مستخدمة في نظام قائمة Windows Explorer) كانت مضللة بالنسبة لي في البداية - لم أكن متأكدًا من أهمية قائمة التجاهل "إضافة بشكل متكرر" و "إضافة *" و "إضافة" خيارات. آمل أن يشرح هذا المنشور كيف ترتبط ميزة التجاهل بميزة خصائص SVN. ومع ذلك ، أقترح استخدام سطر الأوامر لتعيين الملفات التي تم تجاهلها حتى تتعرف على كيفية عملها بدلاً من استخدام واجهة المستخدم الرسومية ، واستخدام واجهة المستخدم الرسومية فقط لمعالجة الخصائص بعد أن تشعر بالراحة مع سطر الأوامر.

سرد الملفات التي تم تجاهلها:

سيخفي الأمر svn status الملفات التي تم تجاهلها (أي الملفات التي تطابق نمط RGA global-ignores ، أو تطابق النمط svn:ignore للدليل الأصل المباشر أو تطابق أي svn:global-ignores لدليل ancesor نمط

استخدم الخيار --no-ignore لرؤية تلك الملفات المدرجة. الملفات التي تم تجاهلها لها حالة I ، ثم توجيه الإخراج إلى grep لإظهار الأسطر التي تبدأ بالحرف "I" فقط.

الأمر هو:

svn status --no-ignore | grep "^I"

فمثلا:

svn status
> ? foo                             # An unversioned file
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore
> ? foo                             # An unversioned file
> I ignoreThis.txt                  # A file matching an svn:ignore pattern
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore | grep "^I"
> I ignoreThis.txt                  # A file matching an svn:ignore pattern

تا دا!

ulitosCoder picture
في ٢٥ أكتوبر ٢٠١٣
92

استخدم الأمر التالي لإنشاء قائمة ليست ضمن ملفات التحكم في الإصدار.

svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt

ثم قم بتحرير الملف لتترك فقط الملفات التي تريد بالفعل تجاهلها . ثم استخدم هذا لتجاهل الملفات المدرجة في الملف:

svn propset svn:ignore -F ignoring.txt .

لاحظ النقطة الموجودة في نهاية السطر. يخبر SVN أنه يتم تعيين الخاصية في الدليل الحالي.

احذف الملف:

rm ignoring.txt

الالتزام أخيرًا ،

svn ci --message "ignoring some files"

يمكنك بعد ذلك التحقق من الملفات التي يتم تجاهلها عبر:

svn proplist -v
Adrian Enriquez picture
في ٢٦ أغسطس ٢٠١٤
57

.gitignore مثل النهج

يمكنك تجاهل ملف أو دليل مثل .gitignore. ما عليك سوى إنشاء ملف نصي بقائمة الأدلة / الملفات التي تريد تجاهلها وتشغيل الكود أدناه:

svn propset svn:ignore -F ignorelist.txt .

أو إذا كنت لا تريد استخدام ملف نصي ، فيمكنك القيام بذلك على النحو التالي:

svn propset svn:ignore "first
 second
 third" .

المصدر: مدونة Karsten - تعيين svn: تجاهل لملفات متعددة من سطر الأوامر

artur02 picture
في ١٧ سبتمبر ٢٠٠٨
51

إذا كنت تستخدم TortoiseSVN ، فانقر بزر الماوس الأيمن فوق ملف ثم حدد TortoiseSVN / Add to ignore list . سيؤدي هذا إلى إضافة الملف / حرف البدل إلى خاصية svn:ignore .

سيتم فحص svn:ignore عندما تقوم بإيداع الملفات ، وسيتم تجاهل الملفات المطابقة. لدي قائمة التجاهل التالية لمشروع Visual Studio .NET:

bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo

يمكنك العثور على هذه القائمة في قائمة السياق في TortoiseSVN / Properties .

Yorick picture
في ٢٦ يوليو ٢٠١٧
36

كما يبدو أنه لم يذكرها أحد ...

svn propedit svn:ignore .

ثم قم بتحرير محتويات الملف لتحديد الأنماط المراد تجاهلها ، واخرج من المحرر وانتهيت كل شيء.

d.danailov picture
في ٢٥ مارس ٢٠١٤
22

لقد وجدت المقال. مثال svnignore لجافا .

مثال: .svnignore لـ Ruby on Rails ،

/log

/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif

*.*~

وبعد ذلك:

svn propset svn:ignore -F .svnignore .

أمثلة على .gitignore. يمكنك استخدام ملف .svnignore الخاص بك

https://github.com/github/gitignore

Kenneth picture
في ١ مارس ٢٠١١
10

عند استخدام propedit تأكد من عدم وجود أي مسافات لاحقة لأن ذلك سيؤدي إلى استبعاد الملف من قائمة التجاهل.

يتم إدراجها تلقائيًا إذا كنت تستخدم ميزة الإكمال التلقائي لعلامات الجدولة على نظام Linux لإنشاء الملف للبدء به:

svn propset svn:ignore 'file1
file2' .
msangel picture
في ٢٨ فبراير ٢٠١٣
8

أيضًا ، إذا كنت تستخدم Tortoise SVN ، فيمكنك القيام بذلك:

  1. في قائمة السياق ، حدد "TortoiseSVN" ، ثم "خصائص"
  2. في النافذة الظاهرة ، انقر على "جديد" ، ثم "متقدم"
  3. في النافذة التي ظهرت مقابل "اسم الخاصية" ، حدد أو اكتب "svn: ignore" ، مقابل "قيمة الخاصية" اكتب اسم الملف المطلوب أو اسم المجلد أو قناع الملف (في حالتي كان "* / target") ، انقر فوق "تطبيق الملكية بشكل متكرر "
  4. حسنا. حسنا.
  5. ارتكب
bkbilly picture
في ٢٩ مايو ٢٠١٥
8

حل آخر هو:

svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt

أو سطرا بسطر

svn st | awk '/^?/{print $2}' > svnignore.txt 
svn propget svn:ignore >> svnignore.txt 
svn propset svn:ignore -F svnignore.txt . 
rm svnignore.txt

ماذا يفعل:

  1. يحصل على ملفات الحالة من ملف svn
  2. يحفظ جميع الملفات مع ؟ إلى ملف "svnignore.txt"
  3. يحصل على الملفات التي تم تجاهلها بالفعل وإلحاقها بالملف "svnignore.txt"
  4. يخبر svn بتجاهل الملفات في "svnignore.txt"
  5. يزيل الملف
范陆离 picture
في ١١ يناير ٢٠١٧
6
  1. القرص المضغوط ~ /
  2. التكوين المفتوح
  3. ابحث عن السطر مثل "global-ignores"
  4. قم بتعيين نوع ملف تجاهل مثل هذا: global-ignores = * .o * .lo * .la * .al .libs * .so .so. [0-9] * .pyc * .pyo 88 * .rej ~ # #. # *. *. swp .DS_Store node_modules الإخراج