git-ls-tree - فهرست
کردن
محتویات یک
شیء درختی
در گیت
git ls-tree [-d] [-r] [-t] [-l] [-z]
[--name-only] [--name-status] [--object-only] [--full-name] [--full-tree] [--abbrev[=<n>]] [--format=<format>]
<tree-ish> [<path>...]
محتویات
یک شیء
درختی مشخص
را فهرست
میکند،
مانند کاری
که "/bin/ls -a" در
دایرکتوری
کاری فعلی
انجام
میدهد.
توجه داشته
باشید که:
•رفتار
آن اندکی با
"/bin/ls" متفاوت
است از این
جهت که <path>
صرفاً
فهرستی از
الگوها را
برای تطبیق
مشخص
میکند؛ به
عنوان مثال
مشخص کردن
نام
دایرکتوری
(بدون -r)
رفتار
متفاوتی
خواهد داشت
و ترتیب
آرگومانها
اهمیتی
ندارد.
•رفتار
آن شبیه به
"/bin/ls" است از
این جهت که
<path> نسبت به
دایرکتوری
کاری فعلی
در نظر
گرفته
میشود.
برای مثال
هنگامی که
در یک
دایرکتوری
sub هستید که
شامل
دایرکتوری
dir است،
میتوانید
دستور git ls-tree -r HEAD dir
را اجرا
کنید تا
محتویات
درخت را
فهرست
نمایید (که
همان sub/dir در HEAD
است). در این
حالت
تمایلی
ندارید
درختی را
مشخص کنید
که در سطح
ریشه نیست
(برای مثال git
ls-tree -r HEAD:sub dir)،
زیرا این
امر منجر به
درخواست
برای sub/sub/dir در
کامیت HEAD
میشود. با
این حال، با
ارسال
گزینه --full-tree
میتوان از
دایرکتوری
کاری فعلی
صرفنظر
کرد.
<tree-ish>
شناسه یک
شیء شبیه به
درخت (tree-ish).
-d
فقط خود
ورودی
درختِ
نامبرده
را نشان
میدهد، نه
فرزندان آن
را.
-r
پیمایش
بازگشتی در
زیردرختها
(sub-trees).
-t
نمایش
ورودیهای
درخت حتی
زمانی که
قرار است
پیمایش
بازگشتی در
آنها
انجام شود.
اگر -r ارسال
نشده باشد،
تأثیری
ندارد. -d به
معنای فعال
بودن -t است.
-l, --long
نمایش
اندازه شیء
برای
ورودیهای blob
(فایل).
-z
پایان
خطوط با \0 در
خروجی و عدم
نقلقول
برای نام
فایلها.
برای
اطلاعات
بیشتر بخش
«قالب
خروجی (OUTPUT FORMAT)»
را در زیر
ببینید.
--name-only, --name-status
فقط نام
فایلها را
فهرست
میکند (به
جای خروجی
"طولانی")،
در هر سطر
یکی.
نمیتواند
با --object-only ترکیب
شود.
--object-only
فقط نام
شیءها را
فهرست
میکند، در
هر سطر یکی.
نمیتواند
با --name-only یا --name-status
ترکیب شود.
این معادل
با تعیین
--format='%(objectname)' است،
اما هم برای
این گزینه و
هم برای آن
قالب دقیق،
دستور به
جای عبور از
سازوکار
قالببندی
عمومی از یک
مسیر کد
بهینهسازیشده
دستی
استفاده
میکند.
--abbrev[=<n>]
به جای
نمایش
سطرهای
کامل شیء
هگزادسیمال
۴۰ بایتی،
کوتاهترین
پیشوندی را
نشان
میدهد که
حداقل به
طول <n> رقم
هگز باشد و
به طور یکتا
به شیء
اشاره کند.
تعداد
ارقام غیر
پیشفرض را
میتوان با
--abbrev=<n> مشخص
کرد.
--full-name
به جای
نمایش
نامهای
مسیر به
صورت نسبی
نسبت به
دایرکتوری
کاری فعلی،
نامهای
کامل مسیر
را نشان
میدهد.
--full-tree
فهرستبندی
را به
دایرکتوری
کاری فعلی
محدود
نمیکند.
این گزینه
متضمن --full-name
است.
--format=<format>
رشتهای
که %(fieldname) را از
نتیجه
نمایشدادهشده
درونیابی
میکند.
همچنین %% را
به %، و %xNN را
(که در آن NN
ارقام
هگزادسیمال
هستند) به
نویسهای
با کد هگز NN
تبدیل
میکند؛
برای مثال %x00
به \0 (NUL)، %x09 به
\t (TAB) و %x0a به \n (LF)
تبدیل
میشود. در
صورت مشخص
شدن، --format
نمیتواند
با سایر
گزینههای
تغییردهنده
قالب، از
جمله --long، --name-only
و --object-only ترکیب
شود.
[<path>...]
هنگامی
که مسیرها
مشخص شده
باشند،
آنها را
نشان
میدهد
(توجه داشته
باشید که
اینها
واقعاً نام
مسیرهای
خام
نیستند،
بلکه
فهرستی از
الگوها
برای تطبیق
هستند). در
غیر این
صورت به طور
ضمنی از سطح
ریشه درخت
به عنوان
تنها
آرگومان
مسیر
استفاده
میکند.
قالب
خروجی ls-tree
توسط گزینه
--format، یا سایر
گزینههای
تغییردهنده
قالب مانند
--name-only و غیره
تعیین
میشود
(توضیحات --format
را در بالا
ببینید).
استفاده
از برخی
دستورالعملهای
--format معادل با
استفاده از
آن
گزینهها
است، اما
فراخوانی
سازوکار
کامل
قالببندی
میتواند
کندتر از
بهکارگیری
یک گزینه
قالببندی
مناسب
باشد.
در مواردی
که --format
دقیقاً به
یک گزینه
موجود
نگاشت شود،
ls-tree از مسیر
سریعتر
مناسب
استفاده
خواهد کرد.
بنابراین
قالب
پیشفرض
معادل است
با:
%(objectmode) %(objecttype) %(objectname)%x09%(path)
این قالب
خروجی با
آنچه
گزینههای
--index-info و --stdin در git
update-index انتظار
دارند
سازگار
است.
هنگامی که
گزینه -l
استفاده
شود، قالب
تغییر
میکند به:
%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)
اندازه
شیء که توسط
<objectname> مشخص شده
بر حسب بایت
ارائه
میشود و با
حداقل عرض ۷
نویسه
راستچین
میگردد.
اندازه شیء
فقط برای
ورودیهای
blob (فایل)
ارائه
میشود؛
برای سایر
ورودیها
نویسه - به
جای اندازه
قرار
میگیرد.
بدون
گزینه -z،
نامهای
مسیر با
نویسههای
"غیرمعمول"
همانطور
که برای
متغیر
پیکربندی
core.quotePath توضیح
داده شده
نقلقول
میشوند (به
git-config(1) مراجعه
کنید). با
استفاده از
-z نام فایل
دقیقاً
همانطور
که هست چاپ
میشود و
سطر با یک
بایت NUL
پایان
مییابد.
قالب
سفارشیسازیشده:
امکان چاپ
با یک قالب
سفارشی با
استفاده از
گزینه --format
وجود دارد
که قادر است
فیلدهای
مختلف را با
نماد %(fieldname)
درونیابی
کند. برای
مثال، اگر
فقط به
فیلدهای
"objectname" و "path"
نیاز
دارید،
میتوانید
با یک "--format"
مشخص به این
صورت اجرا
کنید:
git ls-tree --format='%(objectname) %(path)' <tree-ish>
مقادیر
مختلف حاصل
از فیلدهای
ساختیافته
را میتوان
برای
درونیابی
در خروجی
حاصل
استفاده
کرد. برای هر
سطر خروجی،
نامهای
زیر
میتوانند
استفاده
شوند:
objectmode
حالت
دسترسی (mode)
شیء.
objecttype
نوع شیء
(commit، blob یا tree).
objectname
نام شیء.
objectsize[:padded]
اندازه
یک شیء blob
(اگر یک commit یا
tree باشد،
علامت "-").
همچنین از
یک قالب
فاصلهگذاریشده
اندازه با
"%(objectsize:padded)"
پشتیبانی
میکند.
path
نام مسیر
(pathname) شیء.