এটা এখন প্রবর্তনের সঙ্গে (Git 1.9 / 2.0, চতুর্থাংশ 1 2014) বাস্তবায়িত হয় pathspec যাদু :(exclude)ও তার সংক্ষিপ্ত রূপ:! মধ্যে ef79b1f কমিট এবং 1649612 কমিট দ্বারা
গান Nguyễn গান Thái আরো Ngọc গান Duy ( pclouds) , ডকুমেন্টেশন পাওয়া যাবে এখানে ।
আপনি এখন একটি সাব-ফোল্ডার সামগ্রী বাদে সবকিছু লগ করতে পারেন:
git log -- . ":(exclude)sub"
git log -- . ":!sub"
অথবা আপনি সেই সাব-ফোল্ডারের মধ্যে নির্দিষ্ট উপাদান বাদ দিতে পারেন can
একটি নির্দিষ্ট ফাইল:
git log -- . ":(exclude)sub/sub/file"
git log -- . ":!sub/sub/file"
এর মধ্যে প্রদত্ত যে কোনও ফাইল sub:
git log -- . ":(exclude)sub/*file"
git log -- . ":!sub/*file"
git log -- . ":(exclude,glob)sub/*/file"
আপনি এই বর্জন মামলা সংবেদনশীল করতে পারেন!
git log -- . ":(exclude,icase)SUB"
যেমন কেনি এভিট উল্লেখ করেছেন
আপনি যদি বাশ শেলটিতে গিট চালাচ্ছেন তবে ত্রুটিগুলি এড়াতে ':!sub'বা ":\!sub"পরিবর্তে ব্যবহার করুনbash: ... event not found
দ্রষ্টব্য: গীত 2.13 (Q2 এর 2017) একটি প্রতিশব্দ যোগ হবে ^থেকে!
কমিট 859b7f1 দেখুন , লিনাস টোরভাল্ডস ( ) দ্বারা 42ebeb9 (08 ফেব্রুয়ারী 2017 ) প্রতিশ্রুতিবদ্ধ করুন । (দ্বারা একীভূত junio সি Hamano - - মধ্যে কমিট 015fba3 , 27 ফেব্রুয়ারী 2017)torvalds
gitster
প্যাথস্পেক যাদু: ' ^' এর জন্য উপন্যাস হিসাবে ' !' যুক্ত করুন
!নেতিবাচক প্যাথস্পেকের জন্য ' ' এর পছন্দটি শেষ হয় কেবল সংশোধনগুলির জন্য আমরা যা করি না তার সাথে মিলে যায় না, এটি শেল সম্প্রসারণের জন্য একটি বীভৎস চরিত্রও যেহেতু এটির উদ্ধৃতি প্রয়োজন।
সুতরাং ^একটি প্যাথস্পেক এন্ট্রি বাদ দিয়ে বিকল্প عرف হিসাবে ' ' যুক্ত করুন ।
দ্রষ্টব্য, গিট ২.২৮ (Q3 2020) এর আগে, কার্যক্ষম গাছের তালাবিহীন রাস্তাগুলি সহ পাথ সংগ্রহ করার সময় নেতিবাচক প্যাথস্পেকের ব্যবহার ভেঙে গিয়েছিল।
দেখুন f1f061e কমিট (05 জুন 2020) দ্বারা ইলিয়াস Newren ( newren) ।
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 64efa11 , 18 জুন 2020)
dir: অবহেলিত প্যাথস্পেকগুলির চিকিত্সা ঠিক করুন
রিপোর্ট-বাই: জন মিলিকিন
সাইন-অফ-বাই: এলিজা নিউরেন
do_match_pathspec()জীবন শুরু match_pathspec_depth_1()হয়েছিল যেমন এবং সঠিকতার জন্য কেবল তখন থেকেই ডাকা হত match_pathspec_depth()। match_pathspec_depth()পরে নামকরণ করা হয় match_pathspec(), তাই পরিবর্তিত আমরা আশা আজ যে do_match_pathspec()কোন প্রত্যক্ষ কলারের বাহিরে হয়েছে match_pathspec()।
দুর্ভাগ্যবশত, এই উদ্দেশ্য দুই ফাংশন renames সঙ্গে হারিয়ে গেছে, এবং অতিরিক্ত কল do_match_pathspec()করে এ যোগ করা হয় নি 75a6315f74 ( " ls-files: submodules জন্য pathspec ম্যাচিং যোগ", 2016-10-07, গীত v2.11.0-rc0 - একত্রীকরণ তালিকাভুক্ত ব্যাচ # 11 ) এবং 89a1f4aaf7 (" dir: যদি আমাদের প্যাথস্পেক একটি ডিরের নীচে ফাইলগুলির সাথে মেলে তবে এটিতে পুনরাবৃত্তি হবে", 2019-09-17, গিট ভি 2.24.0-আরসি0)।
অবশ্যই, do_match_pathspec()একটি গুরুত্বপূর্ণ সুবিধা ছিল match_pathspec()- match_pathspec()দুটি দুটি মানগুলির মধ্যে একটিতে হার্ডকোড হবে, এবং এই নতুন কলকারীদের পতাকাগুলির জন্য কিছু অন্যান্য মান পাস করার প্রয়োজন ছিল।
এছাড়াও, যদিও do_match_pathspec()সরাসরি কল করা ভুল ছিল, পর্যবেক্ষণযোগ্য শেষ আউটপুটটিতে সম্ভবত কোনও পার্থক্য ছিল না, কারণ বাগটি কেবলমাত্র fill_diretory()অনির্বাচিত ডিরেক্টরিগুলিতে পুনরাবৃত্তি করবে বলে বোঝায় ।
যেহেতু পরবর্তী সময়ে ডিরেক্টরিটির অধীনে পৃথক পাথগুলিতে এই-প্যাথ-ম্যাচের চেকগুলি সেই অতিরিক্ত পাথগুলিকে ফিল্টার করে ফেলতে পারে, তাই ভুল ফাংশনটি ব্যবহার করার একমাত্র পার্থক্য ছিল অপ্রয়োজনীয় গণনা।
এইসব খারাপ কলগুলির মধ্যে দ্বিতীয়টি do_match_pathspec()সরাসরি যুক্ত আন্দোলনের মাধ্যমে বা অনুলিপি + সম্পাদনার মাধ্যমে - পরবর্তী সময়ে বেশ কয়েকটি রিফ্যাক্টরের মাধ্যমে জড়িত ছিল।
করে দেখুন 777b420347 ( " dir: সিংক্রোনাইজ treat_leading_path()এবং read_directory_recursive()", 2019-12-19, গীত v2.25.0-rc0 - একত্রীকরণ ), 8d92fb2927 ( " dir: একটি রৈখিক এক সঙ্গে সূচকীয় অ্যালগরিদম প্রতিস্থাপন", 2020-04-01, গীত v2.27.0 -rc0 - একত্রীকরণ তালিকাভুক্ত ব্যাচ # 5 ), এবং 95c11ecc73 ( "ফিক্স ত্রুটি-প্রবণ fill_directory()এপিআই; এটি শুধুমাত্র ম্যাচ আসতে করুন" 2020-04-01, গীত v2.27.0-rc0 - একত্রীকরণ তালিকাভুক্ত ব্যাচ # 5 ) ।
এর মধ্যে সর্বশেষ do_match_pathspec()ব্যক্তি পৃথক ফাইলে ব্যবহারের প্রবর্তন করেছিল এবং ফলস্বরূপ পৃথক পাথগুলি ফিরে আসে যা হওয়া উচিত নয়।
do_match_pathspec()পরিবর্তে কল করার ক্ষেত্রে সমস্যাটি match_pathspec()হ'ল '`:! অযাচিত_পথ'এর মতো অবহেলিত ধরণগুলি উপেক্ষা করা হবে ।
match_pathspec_with_flags()এখনও সঠিকভাবে উপেক্ষিত নিদর্শনগুলি পরীক্ষা করার সময় বিশেষ পতাকাগুলি নির্দিষ্ট করার প্রয়োজনগুলি পূরণ করার জন্য একটি নতুন ফাংশন যুক্ত করুন, do_match_pathspec()অন্যদের এটির অপব্যবহার থেকে রোধ করতে উপরের দিকে একটি বড় মন্তব্য যুক্ত করুন এবং do_match_pathspec()পরিবর্তে হয় match_pathspec()অথবা ব্যবহারের পরিবর্তে বর্তমান কলকারীদের সঠিক করুন match_pathspec_with_flags()।
একটি চূড়ান্ত নোট হ'ল এর DO_MATCH_LEADING_PATHSPECসাথে কাজ করার সময় বিশেষ বিবেচনা করা দরকার DO_MATCH_EXCLUDE।
বিন্দু DO_MATCH_LEADING_PATHSPECযে আমরা মত একটি pathspec আছে যদি
*/Makefile
এবং আমরা ডিরেক্টরি ডিরেক্টরি যেমন পরীক্ষা করছি
src/module/component
যে আমরা এটি একটি ম্যাচ বিবেচনা করতে চাই যাতে আমরা ডিরেক্টরিতে পুনরাবৃত্তি করি কারণ এর _might_ এর Makefileনীচে কোথাও একটি ফাইল রয়েছে ।
যাইহোক, যখন আমরা একটি বর্জনীয় প্যাটার্ন ব্যবহার করি, অর্থাৎ আমাদের কাছে একটি প্যাথস্পেকের মতো থাকে
:(exclude)*/Makefile
আমরা বলতে চাই না যে একটি ডিরেক্টরি পাথ পছন্দ করে
src/module/component
একটি (নেতিবাচক) ম্যাচ।
সেখানে থাকাকালীন পারে ডিরেক্টরিটি নীচের 'Makefile নামক' কোথাও নামের একটি ফাইল থাকে, সেখানে অন্যান্য ফাইল হতে পারে এবং আমরা প্রাক emptively দিতে পারে না যে ডিরেক্টরির আউট অধীনে সমস্ত ফাইল নিয়ম; আমাদের পুনরাবৃত্তি করতে হবে এবং তারপরে স্বতন্ত্র ফাইলগুলি পরীক্ষা করতে হবে।
DO_MATCH_LEADING_PATHSPECশুধুমাত্র ইতিবাচক প্যাথস্পেকগুলির জন্য সক্রিয় হওয়ার জন্য যুক্তিটি সামঞ্জস্য করুন ।
!f() { git log ... | path/to/filter-log.pl "$@" | git log --stdin --no-walk; f, বা সেই পাইপলাইনের অংশটি স্ক্রিপ্টের মধ্যেও গুটিয়ে রাখতে পারেন।