‫به اشتراک گذاشتن سورس‌های git

مهم‌ترین مزیت git از دید من خاصیت Distributed آن است. به این معنی که فرضاً در یک سرور git اینترنتی سورسی وجود دارد که من یک نسخه از آن را در laptop خودم clone کرده‌ام. حالا می‌خواهم در کامپیوتر منزلم که دسترسی به اینترنت و آن سرور git اینترنتی ندارد هم همین سورس را داشته باشم. به عبارتی دیگر می‌خواهم از کامپیوتر منزلم به laptop وصل شده و سورس را دریافت کنم. ضمن این که بتوانم بین کامپیوتر منزلم و laptop به راحتی تغییرات سورس را رد و بدل (push/pull) کنم.

چندین راه برای این کار وجود دارد. راه اصلی آن همان طور که می‌شود حدس زد راه اندازی یک git server است. هر چند که انجام این کار سخت نیست اما چون git یک ابزار لینوکسی است و برای راه اندازی یک git server نیاز به کار کردن با چند ابزار لینوکسی دیگر مثل openSSH است، بهتر است از راه‌های ساده‌تری استفاده شود.

در این لینک چندین راه ساده برای انجام این کار توضیح داده شده است. روش File Share در این بین از همه ساده‌تر به نظر رسیده و در ویندوز هم به راحتی قابل انجام است. همان طور که در اینجا و اینجا توضیح داده شده برای این کار باید از یک محل مشترک به اسم Dropbox و یک سورس bare استفاده گردد. ظاهراً Dropbox در لینوکس معادل فولدرهای Share در ویندوز است.

ترتیب مراحل در ویندوز این طور است:

۱- کسب اطمینان از نصب git در هر دو کامپیوتر

۲- کسب اطمینان از این که کامپیوترها می‌توانند IP و فولدرهای share یکدیگر را ببینند.

۳- ایجاد یک سورس bare در فولدر share یکی از کامپیوترها (مثلاً کامپیوتر ۱) با استفاده از دستور git init –bare. اول باید فولدر ساخته شده و این دستور از داخل فولدر مذکور فراخوانی شود.

۴- push کردن سورس از منبع اصلی به این فولدر share با استفاده از دستور git push origin //machine1/shared_git_repo. این دستور باید از داخل دایرکتوری سورس اصلی فراخوانی شود.

۵- اجرای دستور git clone //machine1/shared_git_repo از داخل کامپیوتر ۲ یا هر کامپیوتر دیگری که به این فولدر share دسترسی دارد.

۶- برای push و pull کردن بین فولدرهای داخل یک کامپیوتر می‌توان از urlی شبیه به file://d:/projects/gitrepo استفاده کرد.

با وجود همه این حرف‌ها بهترین راه به اشتراک گذاشتن سورس‌های git استفاده از سرورهای اینترنتی مثل github.com و assembla.com است. چون نیاز به هیچ configuration و نگهداری نداشته و از تمام دنیا قابل دسترس است.