ساخت مخزن git
دستهبندی شده در برنامه نویسی در شهریور.۲۸, ۱۳۸۸
اگه برنامه نویس باشین و توی کارهای نرمافزار آزاد باشین حتما اسم گیت رو شنیدین اگه نشنیدین خوب برای شروع بهتره مقالهی علی فرهادی رو بخونین که توضیحاتی در مورد گیت و تفاوتش با svn میده. اما من میخوام بگم چطوری میتونین روی یه سرور یه مخزن گیت درست کنین حالا چه از اون سرور داخل شرکت استفاده میکنین چه اون سروری هست که سایتتون روش قرار داره.
در مرحلهی نخست شما باید ابزار کار رو نصب کنین که شامل Apache و git هست. البته Apache باید ماژول dav رو داشته باشه که اگه ندارید نصب کنین. همین طور برای اینکه بتونین تنظیمات رو روی سرور عمال کنین نیاز به دسترسی به SSH روی سرور دارید.
توضیح: روی دبیان و بچههاش (شامل اوبونتو) dav به همراه Apache نصب میشه. شما باید اونو فعال کنین که توضیح خواهم داد.
۱. یه مخزن خالی روی سرور درست کنین:
cd /var/www
mkdir my-git-repo.git
cd my-git-repo.git
git --bare init
۲. این پوشه و محتویاتش رو به کاربری که Apache با اون اجرا میشه اختصاص بدین. توی دبیان و خانوادهش این کاربر www-data و توی ردهت و خوانوادهش www هست. ممکنه لازم باشه این کار رو با کاربر ریشه انجام بدین یا اگه به کاربر ریشه دسترسی ندارین با استفاده از sudo انجام بدین.
chown -R www-data.www-data .توضیح: اینجا من گروه رو هم عوض میکنم اما میتونین گروه دلخواه رو جایگزین کنین برای این کار به عنوان مثال میتونین کاربر رو www-data و گروه رو behrooz به این شکل اختصاص بدین:
chown -R www-data.behrooz
۳. نوبت رسید به فعال کردن dav وdav_lock و dav_fs برای این کار روی دبیان و خانوادهش میتونین این کار رو با دستور
a2enmod dav dav_lock dav_fsانجام بدین اما برای ردهت و خانوادهش باید خودتون فایل تنظیمات apache رو دست کاری کنین. نخست با LoadModule باید ۳ ماٰژول مورد نیاز رو بارگذاری و سپس با استفاده از AddModule آنها را فعال کنید.
خوب میتونیم تنظیمات لازم رو انجام بدیم. این تنظیمات مربوط رو توی فایل مربوط به هاست مورد نظر قرار بدید.
توضیح: این فایل با تنظیمات اولیه روی یک دبیان در مسیر
/etc/apache2/sites-available/default قرار دارد. شما باید این تنظیمات را داخل <VirtualHost> اضافه کنید
<Location /my-git-repo.git>میشه گفت همه چیز مشخصه جر فایل passwd.git این همون فایلی هستش که شما کاربرها و کلمهی عبور لازم برای استفاده از مخزن رو توش تعریف میکنین.
DAV on
AuthType Basic
AuthName "Git"
AuthUserFile /etc/apache2/passwd.git
Require valid-user
</Location>
توضیح: اگه این فایل رو میخواین جایی قرار بدین که میشه از وب بهش دسترسی داشت بهتره اسمش رو htpasswd. بگذارین
به این شکل میتونین این فایل رو ایجاد کنین:
htpasswd -c /etc/apache2/passwd.git <user>خوب به جای <user> نامکاربری که میخوان رو قرار میدین مثل behrooz و اون c- هم کار ساختن (create) رو انجام میده پس فقط دفعهی اول نیازه. با اجرای این دستور ازتون یک کلمهی عبور هم درخواست میکنه که این کلمهی عبور به کاربری که ساختین اختصاص پیدا میکنه آدرس این فایل هم هر جایی که بخواین میتونه باشه و به هر تعداد که نیازه میتونبن کاربر بهش اضافه کنین.
توضیح: میتونین با استفاده از یک پایگاه داده کاربر و کلمهی عبور رو تعریف کنین. که اینطوری حتی میشه راهی برای مدیریت کاربرها هم ایجاد کرد.
بعد از این مراحل باید Apache رو مجدد راه اندازی کنید. apache2ctl restart اگه همه چیز درست پیش رفته باشه با مراجعه به اون آدرس با مرورگر باید ازتون درخواست نامکاربری و گذرواژه کنه.
۴. تا اینجا تنظیمات سرور تموم شده و نوبت میرسه به تنظیمات لازم برای کلاینت git. برای اینکه برای هر بار استفاده از مخزن لازم نباشه نامکاربری و کلمهی عبور وارد کنید فایل netrc. رو در پوشهی خانگی خود درست کنید و محتوای آن را با این مقادیر پر کنید (یادتون نره که باید دسترسی خواندن این فایل را از دیگران بگیرید):
machine <servername>از اون جایی که همه چیز مشخصه بیشتر توضیح نمیدم. سپس باید دستور زیر رو اجرا کنین
login <username>
password <password>
curl --netrc --location -v http://<username>@<servername>/my-git-repo.git/HEADحتما شما یه مخزن git دارید که میخواهید آن را با دیگران به اشتراک بگذارید. به مخزن خود رفته و مخزن جدید را به عنوان یک مخزن راه دور به آن اضافه کنید:
git config remote.upload.url http://<username>@<servername>/my-git-repo.git/من اینجا اسمش رو گذاشتم upload اما هر چیز دیگهای میتونین استفاده کنین. این اسمی خواهد بود که شما برای استفادهی راحتتر ازش استفاده میکنید.
۵. کار تمام شد. حالا نوبت آن است که مخزن جدید را پر کنید. پس به مخزن خود رفته و دستور زیر را جرا کنید:
git push upload master
من بعد از این کار با یه مشکل مواجه شدم و اونم این بود که نمیتونستم از این مخزنی که ساختم نمونه (clone) بگیرم. برای حل این مشکل هم این کار رو روی سرور انجام دادم:
cd my-git-repo.git
git update-server-info
chown -R www-data.www-data .
تبریک میگم مخزن شما آمادهس، برای استفادهی کاربرهای دیگه کافیه براشون نامکاربری و کلمهی عبور اضافه کنین و فقط مرحلهی ۴ رو انجام بدین.


شهریور ۲۸م, ۱۳۸۸ در ۱۶:۵۷
مقاله ی خوبیه … دستت درد نکنه