كيف يمكنني تجاهل الملفات في Subversion؟
سؤال
كيف يمكنني تجاهل الملفات في Subversion؟
وأيضًا، كيف يمكنني العثور على الملفات التي لا تخضع للتحكم في الإصدار؟
المحلول
(تم تحديث هذه الإجابة لتتوافق مع سلوك SVN 1.8 و1.9)
لديك سؤالين:
وضع علامة على الملفات على أنها متجاهلة:
أعني بـ "الملف الذي تم تجاهله" أن الملف لن يظهر في القوائم حتى لو كان "غير مُصدر":سوف يتظاهر عميل SVN الخاص بك بأن الملف غير موجود على الإطلاق في نظام الملفات.
يتم تحديد الملفات التي تم تجاهلها بواسطة "نمط الملف".تم شرح بناء جملة أنماط الملفات وتنسيقها في وثائق SVN عبر الإنترنت: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html “أنماط الملفات في التخريب”.
يدعم Subversion، بدءًا من الإصدار 1.8 (يونيو 2013) والإصدارات الأحدث، ثلاث طرق مختلفة لتحديد أنماط الملفات.وفيما يلي ملخص مع الأمثلة:
1 - منطقة تكوين وقت التشغيل - global-ignores
خيار:
- هذا ال جانب العميل فقط الإعداد، لذلك الخاص بك
global-ignores
لن تتم مشاركة القائمة من قبل مستخدمين آخرين، وينطبق ذلك على جميع عمليات إعادة الشراء التي تقوم بإجرائها على جهاز الكمبيوتر الخاص بك. - تم تعريف هذا الإعداد في ملف منطقة تكوين وقت التشغيل الخاص بك:
- ويندوز (يعتمد على الملف) -
C:\Users\{you}\AppData\Roaming\Subversion\config
- ويندوز (القائم على التسجيل) -
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
معاHKLM
وHKCU
. - لينكس/يونكس -
~/.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.
- لقد بدأت بافتراض أنك ستتجاهل ملفًا في 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
نمط.
استخدم ال --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
تا دا!
نصائح أخرى
استخدم الأمر التالي لإنشاء قائمة ليست ضمن ملفات التحكم في الإصدار.
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
إذا كنت تستخدم السلحفاةSVN, ، انقر بزر الماوس الأيمن على الملف ثم حدد TortoiseSVN / أضف إلى قائمة التجاهل.سيؤدي هذا إلى إضافة الملف/حرف البدل إلى ملف svn:ignore
ملكية.
svn:ignore
سيتم فحصه عند قيامك بإيداع الملفات، وسيتم تجاهل الملفات المطابقة.لدي قائمة التجاهل التالية لمشروع Visual Studio .NET:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
يمكنك العثور على هذه القائمة في قائمة السياق على السلحفاةSVN / خصائص.
يمكنك تجاهل ملف أو دليل مثل .gitignore.ما عليك سوى إنشاء ملف نصي بقائمة الدلائل/الملفات التي تريد تجاهلها وتشغيل الكود أدناه:
svn propset svn:ignore -F ignorelist.txt .
أو إذا كنت لا تريد استخدام ملف نصي، يمكنك القيام بذلك على النحو التالي:
svn propset svn:ignore "first
second
third" .
مصدر:مدونة Karsten - قم بتعيين svn:ignore لملفات متعددة من سطر الأوامر
لقد وجدت المقال .svnignore مثال لجافا.
مثال:.svnignore لروبي أون ريلز،
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
وبعد ذلك:
svn propset svn:ignore -F .svnignore .
أمثلة على .gitignore.يمكنك استخدام .svnignore الخاص بك
كما يبدو أن أحداً لم يذكر ذلك..
svn propedit svn:ignore .
ثم قم بتحرير محتويات الملف لتحديد الأنماط التي سيتم تجاهلها، ثم اخرج من المحرر وبذلك تكون قد انتهيت من كل شيء.
عند استخدام Propedit تأكد من عدم وجود أي مسافات زائدة لأن ذلك سيؤدي إلى استبعاد الملف من قائمة التجاهل.
يتم إدراجها تلقائيًا إذا كنت تستخدم علامة التبويب الإكمال التلقائي على نظام التشغيل Linux لإنشاء الملف للبدء به:
svn propset svn:ignore 'file1
file2' .
الحل الآخر هو:
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
ماذا يفعل:
- يحصل على ملفات الحالة من svn
- يحفظ جميع الملفات مع ? إلى الملف "svnignore.txt"
- الحصول على الملفات التي تم تجاهلها بالفعل وإلحاقها بالملف "svnignore.txt"
- يخبر svn بتجاهل الملفات الموجودة في "svnignore.txt"
- يزيل الملف
أيضًا، إذا كنت تستخدم Tortoise SVN، فيمكنك القيام بذلك:
- في قائمة السياق، حدد "TortoiseSVN"، ثم "الخصائص"
- في النافذة التي ظهرت، انقر على "جديد"، ثم "متقدم"
- في النافذة التي ظهرت مقابل "اسم الخاصية"، حدد أو اكتب "svn:ignore"، مقابل "قيمة الخاصية"، اكتب اسم الملف المطلوب أو اسم المجلد أو قناع الملف (في حالتي كان "*/target")، انقر فوق "تطبيق" الملكية بشكل متكرر"
- نعم.نعم.
- يقترف
نسخة أكثر قابلية للقراءة من إجابة بكبيلي:
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
ماذا يفعل:
- يحصل على ملفات الحالة من svn
- يحفظ جميع الملفات مع ? إلى الملف "svnignore.txt"
- الحصول على الملفات التي تم تجاهلها بالفعل وإلحاقها بالملف "svnignore.txt"
- يخبر svn بتجاهل الملفات الموجودة في "svnignore.txt"
- يزيل الملف
- مؤتمر نزع السلاح ~/.subversion
- فتح التكوين
- ابحث عن السطر مثل "التجاهل العالمي"
- قم بتعيين نوع ملف التجاهل مثل هذا:global-ignores = *.o *.lo *.la *.al .libs *.so .so.[0-9] *.pyc *.pyo 88 *.rej ~ ## .#* .*.swp .DS_Store إخراج وحدات العقدة
يمكنك أيضًا تعيين نمط تجاهل عام في ملف تكوين SVN.
إضافة دليل للتخريب، وتجاهل محتويات الدليل
svn propset svn:ignore '\*.*' .
أو
svn propset svn:ignore '*' .
SVN ignore
من السهل إدارتها في TortoiseSVN.افتح TortoiseSVN وانقر بزر الماوس الأيمن على قائمة الملف ثم حدد إضافة إلى قائمة التجاهل.
سيؤدي هذا إلى إضافة الملفات الموجودة في svn:ignore
ملكية.عندما نقوم بالتحقق من الملفات، ثم تلك الملفات المتطابقة معها svn:ignore
التي سيتم تجاهلها ولن تلتزم.
في مشروع Visual Studio أضفنا الملفات التالية لتجاهلها:
bin obj
*.exe
*.dll
*.pdb
*.suo
نحن ندير كود المصدر على SVN of قارنفخ باستخدام هذه الطريقة بنجاح
استخدم الأمر حالة svn على نسخة العمل الخاصة بك لإظهار حالة الملفات، فإن الملفات التي لم تخضع بعد للتحكم في الإصدار (ولم يتم تجاهلها) سيكون لها علامة استفهام بجوارها.
أما بالنسبة لتجاهل الملفات، فأنت بحاجة إلى تحرير خاصية svn:ignore، اقرأ الفصل "تجاهل العناصر التي لم يتم إصدارها" في svnbook على http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html.يصف الكتاب أيضًا المزيد حول استخدام حالة svn.
- افتح استخدام منتج JetBrains (أي.بيشارم)
- ثم انقر فوق الزر "التزام" الموجود في شريط الأدوات العلوي أو استخدم الاختصار "ctrl + k"Screenshot_toolbar
- في واجهة الالتزام، انقل ملفاتك غير المرغوب فيها إلى قائمة تغيير أخرى كما يلي.Screenshot_commit_change
- في المرة القادمة يمكنك فقط الالتزام بقائمة التغيير الافتراضية.