بررسی جدیدترین نسخه Fork در گیت هاب
امروز با چالش جالبی روبه رو شدم و پس از جستجو، راه حل مناسبی پیدا کردم…اینجا مینویسم تا شاید یه روزی به کار شما هم بیاد
فرض کنید از کد شخص دیگه ای در ریپازیتوری/مخزن (Repository) گیتهابش استفاده می کنید. بنابه دلایلی اون مخزن رو فورک ( fork ) نکردید و فقط مستقیما از اون استفاده می کنید. یا مخزن مربوطه رو فورک کردین ولی با آخرین تغییرات مخزن مبدا، همسان سازی (sync) نکردین و نسخه ای که شما دارین قدیمی و شامل تغییرات جدید (مثلا چند ماه اخیر) نمیشه… به دلیلی، صاحب مخزن تصمیم میگیره تمام اطلاعات اون مخزن رو به کل پاک کنه و تمام تاریخچه تغییرات ( تمام commit ها وhistory و …) رو هم پاک کنه به طوری که اثری از اون مخزن باقی نمونه …حالا باید چیکار کرد؟
این اتفاق دقیقا دیروز برای من افتاد و وقتی به قسمت فورک اون مخزن مراجعه کردم با عدد تعداد فورک ها که 3.1k بود روبه رو شدم!!!
ما در قسمت نمایش فورک های موجود ( View existing forks) دو حالت نمایش داریم :
1-Tree view
2-List view
در حالت لیست ، شما میتونید با استفاده از امکانات موجود گیتهاب، فیلترهایی برای نمایش نتایج قرار بدین. برای مثال میتونید لیست رو بر اساس آخرین آپدیت sort کنید یا بر اساس بیشترین ستاره ( most starred ) و یا فیلترهایی بر اساس بازه زمانی بدین…
خب مشکل کجاست؟ اگه به هر دلیلی حالت نمایش لیست برای شما غیر فعال باشه ( که برای من بود!) در حالت Tree امکان قراردادن فیلتر وجود نداره
ساده ترین راهکار چیه ؟ ایجاد بوکمارکلت
بوکمارکلت (به انگلیسی: ) ترکیبی از بوکمارک و اپلت است. بوکمارکلتها برنامههای جاوااسکریپتی هستند که به صورت بوکمارک در مرورگرها قابل ذخیرهسازیاند و با کلیککردن کاربر روی آنها اجرا میشوند. برنامههای داخل بوکمارکلتها میتوانند با اجزای صفحهای که در مرورگر در حال نمایش است ارتباط برقرار کنند.
نحوه ساخت بوکمارکلت برای حل این مشکل:
1- بوکمارک جدیدی بسازید ( برای مثال : در کروم روی آیکون ستاره بوکمارک کلیک کنید - در صفحه کوچک باز شده دکمه More رو انتخاب کنید)
2- در قسمت Name هر نامی که دوست داشتین انتخاب کنید ( برای مثال GitHub Fork Checker )
و در قسمت url کد زیر رو کپی کنید :
javascript:(async () => {
/* while on the forks page, collect all the hrefs and pop off the first one (original repo) */
const forks = [...document.querySelectorAll('div.repo a:last-of-type')].map(x => x.href).slice(1);
for (const fork of forks) {
/* fetch the forked repo as html, search for the "This branch is [n commits ahead,] [m commits behind]", print it to console */
await fetch(fork)
.then(x => x.text())
.then(html => console.log(`${fork}: ${html.match(/This branch is.*/).pop().replace('This branch is ', '')}`))
.catch(console.error);
}
})();
3- گزینه ی Save رو انتخاب کنید
4- وارد لیست فورک های گیتهاب بشید ( در حالت Tree view )
5- روی بوکمارکی که ساختید کلید کنید تا کد جاوااسکریپت اجرا بشه و مشخصات فورک ها ظاهر بشه
همونطور که میبینید نتایج شامل commit ها هستن که با قرمز و سبز نمایش داده شدن. کامیت های سبز نشون دهنده تعداد کامیت های جلوتر از اصلی و قرمز ها، تعداد کامیت های عقب افتاده تر از اصلی هستن…
موفق باشید.