حسام کاوه

روز نوشته های یک توسعه دهنده

دانلود فولدر خاص از ریپازیتوری گیت هاب

date 2 اردیبهشت 1398   

بعضی ریپازیتوری ها خیلی حجیم هستند ولی فقط دایرکتوری خاصی از اونو لازم داریم.

مثلا من پوشه examples از ریپازیتوری gatsby را لازم داشتم. ابتدا زدم کل ریپازیتوری دانلود شه. صبر کردم و صبر کردم… 866 مگابایت ناقابل دانلود شد:(

اما خب چه کاری بود! داکیومنت ها و کلی اضافات دیگه همراه فایل ها بود که اصلا به کارم نمیومد.

سرچ کردم که چطوری یک دایرکتوری خاص از ریپازیتوری را دانلود کنم. چند تا راه پیدا کردم که دو تاش از بقیه بهتر بود. منم جفتشو معرفی میکنم، اولی روش پرسرعت تره ولی در عوض دومی روش دم دست تریه.

روش اول – استفاده از Subversion

Subversion یا svn یک ورژن کنترلر شبیه به git است که دیگه کمتر ازش استفاده میشه. اگه این ابزار روی کامپیوترتون نصب هست حتما از این روش استفاده کنید. روی manjaro بصورت پیشفرض نصب بود ولی در اوبونتو به سادگی از طریق مخازن میتونین نصبش کنید:

sudo apt install subversion

برای تست اینکه درست نصب شده یا نه در ترمینال دستور svn را بنویسید.

مرحله ۱ – کپی کردن لینک ریپازیتوری

لینک ریپازیتوری مورد نظر را کپی کنید، بطور مثال:

https://github.com/hesamkaveh/Sansi

مرحله ۲ – اصلاح لینک

و بر فرض اگر دایرکتوری src/components از برنچ master را لازم دارید، آدرستون رو به شکل زیر تغییر بدین:

https://github.com/hesamkaveh/Sansi/trunk/src/components

trunk به این معناست که به master اشاره داریم.

یا اگر به برنچ دیگری مثل foo اشاره دارید کافیه به جای trunk بنویسید branches/foo

مرحله ۳ – دانلود ریپازیتوری

و نهایتا برای دانلود این دایرکتوری کافیه دستور زیر را بزنین:

svn export YOUTLINK

فراموش نکنید YOUTLINK را با لینک اصلاح شده در مرحله قبل جایگزین کنین.


روش دوم – استفاده از git

این روش دم دست تریه چون git رو هر کامپیوتری نصبه و مام قراره از دستور git استفاده کنیم. ولی سرعتش کمتر از روش قبله.

مرحله ۱ و ۲

مشابه روش اول

مرحله ۳ – آماده سازی برای دانلود:

دستور زیر را در ترمینال وارد کنین:

git svn init YOUTLINK

همونطوری که میبینین تو این دستور هم یک جورایی از svn کمک گرفتیم.

فراموش نکنید YOUTLINK را با لینک اصلاح شده در مرحله قبل جایگزین کنید.

مرحله ۴ – دانلود ریپازیتوری

دستور زیر را وارد کنین:

git svn fetch

پ.ن:

دلیل اینکه سرعت متفاوته، اینه که روش اول فقط آخرین نسخه از فایل را دانلود میکنه، در صورتی که روش دوم کل commit ها را دانلود میکند.

پس روش دوم یجورایی میشه clone کردن کاستوم دایرکتوری درحالی که روش اول دانلود کردن کاستوم دایرکتوری محسوب میشه.