LSDIFF(1) Man pages LSDIFF(1)

lsdiff - نمایش فایل‌های تغییریافته توسط یک وصله

lsdiff [[-n] | [--line-number]] [[-p n] | [--strip-match=n]] [--strip=n] [--git-prefixes=strip|keep] [--git-extended-diffs=exclude|include] [--addprefix=PREFIX] [--addoldprefix=PREFIX] [--addnewprefix=PREFIX] [[-s] | [--status]] [[-E] | [--empty-files-as-removed]] [[-i PATTERN] | [--include=PATTERN]] [[-I FILE] | [--include-from-file=FILE]] [[-x PATTERN] | [--exclude=PATTERN]] [[-X FILE] | [--exclude-from-file=FILE]] [[-z] | [--decompress]] [[-# RANGE] | [--hunks=RANGE]] [--lines=RANGE] [[-FRANGE] | [--files=RANGE]] [[-H] | [--with-filename]] [[-h] | [--no-filename]] [[-v] | [--verbose]...] [file...]

lsdiff {[--help] | [--version] | [--filter ...] | [--grep ...]}

فهرست کردن فایل‌هایی که توسط یک وصله (patch) تغییر یافته‌اند.

می‌توانید در این برنامه از diffهایی با قالب‌های unified، context و Git استفاده کنید. قالب Git شامل پشتیبانی از فایل‌های باینری، تغییر نام فایل‌ها، تغییرات حالت مجوز (permission mode) و سایر قابلیت‌های ویژهٔ diff در Git است.

-n, --line-number

نمایش شمارهٔ خطی که هر وصله از آن آغاز می‌شود. اگر خروجی با جزئیات بیشتر درخواست شود (با استفاده از -nv)، هر قطعه (hunk) از هر وصله نیز فهرست می‌شود.

به ازای هر فایلی که تغییر یافته است، خطی تولید می‌شود شامل شمارهٔ خط آغاز وصله، به دنبال آن یک نویسهٔ Tab، و سپس نام فایلی که تغییر یافته است. اگر -v یک بار داده شود، به دنبال هر یک از این خطوط، یک خط به ازای هر قطعه (hunk) خواهد آمد که شامل یک نویسهٔ Tab، شماره خطی که قطعه از آن آغاز می‌شود، یک نویسهٔ Tab دیگر، رشتهٔ “Hunk #” و شمارهٔ قطعه (شروع از ۱) است.

اگر -v دو بار همراه با -n داده شود (یعنی -nvv)، قالب خروجی اندکی متفاوت خواهد بود: متن توصیفی سطحِ قطعه پس از هر شمارهٔ قطعه نمایش داده می‌شود، و گزینهٔ --number-files فعال می‌گردد.

-N, --number-files

شماره‌های فایل، با شروع از ۱، پیش از هر نام فایل فهرست می‌شوند.

-#RANGE, --hunks=RANGE

تنها قطعه‌هایی (hunks) را فهرست می‌کند که در RANGE مشخص‌شده قرار دارند. قطعه‌ها از ۱ شماره‌گذاری می‌شوند و بازه شامل فهرستی از اعداد یا محدوده‌های “first-last” است که با کاما از هم جدا شده‌اند، و به صورت اختیاری یک اصلاح‌کنندهٔ 'x' می‌تواند در ابتدای آن قرار گیرد که کل بازه را معکوس می‌کند؛ می‌توان ابتدا یا انتهای بازه را حذف کرد تا نبود محدودیت در آن جهت مشخص شود.

--lines=RANGE

تنها قطعه‌هایی را فهرست می‌کند که شامل خطوطی از فایل اصلی در RANGE مشخص‌شده باشند. خط‌ها از ۱ شماره‌گذاری می‌شوند و بازه شامل فهرستی از اعداد یا محدوده‌های “first-last” است که با کاما از هم جدا شده‌اند، و به صورت اختیاری یک اصلاح‌کنندهٔ 'x' می‌تواند در ابتدای آن قرار گیرد که کل بازه را معکوس می‌کند؛ می‌توان ابتدا یا انتهای بازه را حذف کرد تا نبود محدودیت در آن جهت مشخص شود.

-F=RANGE, --files=RANGE

تنها فایل‌های مشخص‌شده در RANGE را فهرست می‌کند. فایل‌ها بر اساس ترتیبی که در ورودی وصله ظاهر می‌شوند از ۱ شماره‌گذاری می‌گردند، و بازه شامل فهرستی از اعداد یا محدوده‌های “first-last” است که با کاما از هم جدا شده‌اند، و به صورت اختیاری یک اصلاح‌کنندهٔ 'x' می‌تواند در ابتدای آن قرار گیرد که کل بازه را معکوس می‌کند؛ می‌توان ابتدا یا انتهای بازه را حذف کرد تا نبود محدودیت در آن جهت مشخص شود.

-pn, --strip-match=n

هنگام تطبیق، نخستین n بخش از مسیر فایل (pathname) نادیده گرفته می‌شود.

--strip=n

پیش از نمایش نام مسیر (pathname)، نخستین n بخش از آن را حذف می‌کند.

--git-prefixes=strip|keep

نحوهٔ رفتار با پیشوندهای a/ و b/ در نام فایل‌های diff در Git. با strip، پیشوندها هم برای تطبیق نام فایل (هنگام استفاده از گزینه‌های -i و -x) و هم برای خروجی نام فایل (مشابه --strip) حذف می‌شوند. با keep (پیش‌فرض)، رفتار کنونی حفظ می‌شود. این گزینه هم برای diffهای اختصاصی Git (فایل‌های باینری، تغییر نام‌ها، تغییرات حالت مجوز) و هم برای diffهای سنتی که بخشی از یک وصلهٔ Git هستند اعمال می‌شود. نکته: با keep، با عملیات کپی و تغییر نام به گونه‌ای رفتار می‌شود که گویی دارای پیشوندهای a/ و b/ هستند تا با سایر عملیات Git سازگار باشند. مقدار پیش‌فرض در نسخهٔ 0.5.0 به strip تغییر خواهد کرد.

--git-extended-diffs=exclude|include

تعیین می‌کند که آیا diffهای Git بدون قطعه‌های محتوایی سنتی پردازش شوند یا خیر. این شامل تغییر نام‌ها، کپی‌ها، تغییرات صرفاً مربوط به حالت مجوز، و فایل‌های باینری می‌شود. با exclude (پیش‌فرض در 0.4.x)، از این diffها صرف‌نظر می‌شود. با include (پیش‌فرض در 0.5.0+)، این diffها به طور عادی پردازش می‌شوند. این گزینه بر شماره‌گذاری فایل‌ها با -N و پالایش فایل‌ها با -F اثر می‌گذارد.

--addprefix=PREFIX

پیش از نمایش مسیر، PREFIX را به عنوان پیشوند به آن اضافه می‌کند.

--addoldprefix=PREFIX

پیش از نمایش مسیر برای فایل‌های قدیمی، PREFIX را به عنوان پیشوند به آن‌ها اضافه می‌کند.

--addnewprefix=PREFIX

پیش از نمایش مسیر برای فایل‌های جدید، PREFIX را به عنوان پیشوند به آن‌ها اضافه می‌کند.

-s, --status

نمایش افزودن، تغییر و حذف فایل‌ها. افزودن فایل با یک “+”، حذف با یک “-”، و تغییر با یک “!” مشخص می‌شود.

-E, --empty-files-as-absent, --empty-files-as-removed

به هنگام نمایش افزودن، تغییر و حذف فایل‌ها، فایل‌های خالی را به عنوان فایل ناموجود در نظر می‌گیرد. برای نمونه، فایلی با یک نسخهٔ قدیمی خالی و افزوده‌ها در نسخهٔ جدید، به جای یک تغییر (!)، به عنوان یک افزودن فایل (+) در نظر گرفته می‌شود.

-iPATTERN, --include=PATTERN

تنها فایل‌های منطبق با PATTERN را شامل می‌شود.

-IFILE, --include-from-file=FILE

تنها فایل‌های منطبق با الگوهای فهرست‌شده در FILE را شامل می‌شود (یک الگو در هر خط).

-xPATTERN, --exclude=PATTERN

فایل‌های منطبق با PATTERN را مستثنی می‌کند.

-XFILE, --exclude-from-file=FILE

فایل‌های منطبق با الگوهای فهرست‌شده در FILE را مستثنی می‌کند (یک الگو در هر خط).

-z, --decompress

استخراج و باز کردن فایل‌های فشرده با پسوندهای .gz و .bz2.

-H, --with-filename

چاپ نام فایل وصله‌ای که حاوی هر وصله است.

-h, --no-filename

عدم چاپ نام فایل وصله‌ای که حاوی هر وصله است.

-v, --verbose

خروجی با جزئیات بیشتر.

--help

نمایش یک پیام کوتاه دربارهٔ نحوهٔ استفاده.

--version

نمایش شماره نسخهٔ lsdiff.

--filter

در عوض، همانند filterdiff(1) رفتار می‌کند.

--grep

در عوض، همانند grepdiff(1) رفتار می‌کند.

filterdiff(1), grepdiff(1), patchview(1)

برای مرتب‌سازی ترتیب فایل‌های تغییریافته در یک وصله، می‌توانید از دستور زیر استفاده کنید:

lsdiff patch | sort -u | \
  xargs -rn1 filterdiff patch -i

برای نمایش تنها فایل‌های اضافه‌شده در یک وصله:

lsdiff -s patch | grep '^+' | \
  cut -c2- | xargs -rn1 filterdiff patch -i

برای نمایش سرآیندهای تمامی قطعه‌های (hunks) فایل:

lsdiff -n patch | (while read n file
  do sed -ne "$n,$(($n+1))p" patch
done)

Tim Waugh <twaugh@redhat.com>

نگهدارندهٔ بسته
23 Jan 2009 patchutils