| FILTERDIFF(1) | Man pages | FILTERDIFF(1) |
نام (NAME)
filterdiff - استخراج یا حذف diffها از یک فایل diff
خلاصه دستور (SYNOPSIS)
filterdiff [[-i PATTERN] | [--include=PATTERN]] [[-I FILE] | [--include-from-file=FILE]] [[-p n] | [--strip-match=n]] [--strip=n] [--git-prefixes=strip|keep] [--git-extended-diffs=exclude|include] [--addprefix=PREFIX] [--addoldprefix=PREFIX] [--addnewprefix=PREFIX] [[-x PATTERN] | [--exclude=PATTERN]] [[-X FILE] | [--exclude-from-file=FILE]] [[-v] | [--verbose]] [--clean] [--in-place] [[-z] | [--decompress]] [[-# RANGE] | [--hunks=RANGE]] [--lines=RANGE] [[-FRANGE] | [--files=RANGE]] [--annotate] [--format=FORMAT] [--as-numbered-lines=WHEN] [--remove-timestamps] [file...]
filterdiff {[--help] | [--version] | [--list] | [--grep ...]}
توضیحات (DESCRIPTION)
شما میتوانید از filterdiff برای دریافت پَچی استفاده کنید که از میان مجموعهای بزرگتر از پچها، بر روی فایلهای منطبق با الگوی جانشین (wildcard) پوستهٔ PATTERN اعمال میشود. برای مثال، جهت مشاهدهٔ پچهای درون patch-2.4.3.gz که بر روی تمامی فایلهای با نام lp.c اعمال میشوند:
filterdiff -z -i '*/lp.c' patch-2.4.3.gz
اگر هیچیک از گزینههای -i یا -x مشخص نشوند، -i '*' فرض میشود. به این ترتیب filterdiff میتواند برای پاکسازی یک فایل diff موجود، حذف خطوط زائد از ابتدا (مانند متن بدنهٔ ایمیل) یا میان قطعهها (مانند آنچه در diffهای CVS وجود دارد) استفاده شود. برای استخراج دادههای خالص پچ، از دستوری مانند این استفاده کنید:
filterdiff message-with-diff-in-the-body > patch
دستور Filterdiff از قالبهای diff نوع unified، context و Git پشتیبانی میکند. قالب Git شامل پشتیبانی از فایلهای باینری، تغییر نام فایلها، تغییرات سطح دسترسی و دیگر ویژگیهای اختصاصی diff در Git است.
توجه داشته باشید که تفسیر الگوی جانشین پوسته، نویسههای اسلش یا نقطه را خاص در نظر نمیگیرد (به عبارت دیگر، هیچ پرچمی به fnmatch داده نمیشود). این بدین منظور است که الگوهایی از نوع “*/basename” بتوانند بدون محدود کردن تعداد بخشهای مسیر فایل مشخص شوند.
شما میتوانید از هر دو قالب diff یعنی unified و context با این برنامه استفاده کنید..SH "گزینهها (OPTIONS)"
-iPATTERN, --include=PATTERN
-IFILE, --include-from-file=FILE
-xPATTERN, --exclude=PATTERN
-XFILE, --exclude-from-file=FILE
-pn, --strip-match=n
-#RANGE, --hunks=RANGE
--lines=RANGE
-F=RANGE, --files=RANGE
--annotate
--format=unified|context
--strip=n
--git-prefixes=strip|keep
--git-extended-diffs=exclude|include
--addprefix=PREFIX
--addoldprefix=PREFIX
--addnewprefix=PREFIX
--as-numbered-lines=before|after|original-before|original-after
گزینههای before و after شماره خطوط را با احتساب هانکهای نادیدهگرفتهشده نشان میدهند. گزینههای original-before و original-after شماره خطوط را همانگونه که در diff اصلی ظاهر میشوند نمایش میدهند و بافت اصلی شماره خط را حفظ میکنند. این قابلیت برای سامانههای CI/CD که نیاز به گزارش خطاها بر روی شماره خطوط دقیق diff اصلی دارند مفید است.
--remove-timestamps
-v, --verbose
--clean
--in-place
-z, --decompress
--help
--list
--grep
مثالها (EXAMPLES)
برای مشاهده تمام قطعات وصله (hunkها) که بر پنج خط اول یک فایل C اثر میگذارند:
filterdiff -i '*.c' --lines=-5 < patch
برای مشاهده نخستین قطعه از وصله هر فایل، استفاده کنید از:
filterdiff -#1 patchfile
برای مشاهده وصلههایی که یک فایل ChangeLog را در یک زیرپوشه تغییر میدهند، استفاده کنید از:
filterdiff -p1 Changelog
برای دیدن وصلههای کامل به ازای هر وصلهای که خط ۱ از فایل اصلی را تغییر میدهد، استفاده کنید از:
filterdiff --lines=1 patchfile | lsdiff | \ xargs -rn1 filterdiff patchfile -i
برای دیدن تمام قطعات به جز قطعه اول از یک وصله خاص، میتوانید استفاده کنید از:
filterdiff -p1 -i file.c -#2- foo-patch
اگر فهرست کاملاً مشخصی از قطعات در یک وصله دارید که میخواهید آنها را ببینید، آنها را فهرست کنید:
filterdiff -#1,2,5-8,10,12,27-
برای مشاهده خطوط فایلهایی که وصله خواهند شد به همان صورتی که پس از اعمال وصله نمایان میشوند، استفاده کنید از:
filterdiff --as-numbered-lines=after patch.file
میتوانید همان زمینه را پیش از اعمال وصله مشاهده کنید با:
filterdiff --as-numbered-lines=before patch.file
برای سامانههای CI/CD که نیازمند شماره خطوط منطبق با زمینه diff اصلی هستند (مفید برای گزارش خطا)، از گونههای original-* استفاده کنید:
filterdiff --as-numbered-lines=original-after patch.file
همچنین میتوان از filterdiff برای تبدیل بین قالبهای diff از نوع unified و context استفاده کرد:
filterdiff -v --format=unified context.diff
قالبهای diff در Git به طور کامل پشتیبانی میشوند، از جمله فایلهای باینری، تغییر نام فایلها و تغییرات حالت مجوزها..SH "همچنین ببینید (SEE ALSO)"
نویسنده (AUTHOR)
Tim Waugh <twaugh@redhat.com>
| 23 Jan 2009 | patchutils |