همکاری در پروژه های گیت هاب

img
img
img
img
shape
shape
blog-details
17
اردیبهشت
همکاری در پروژه های گیت هاب
نویسنده : محمدرضا لیایی
زمان مطالعه : 25 دقیقه

در جلسه سوم از دوره آموزشی گیت هاب قصد داریم تا شما را با روش همکاری در یک پروژه متن باز آشنا کنیم. البته ذکر این نکته خالی از لطف نیست که این همکاری توسط فردی خارج از گروه اصلی توسعه دهنده انجام می پذیرد.

در جلسه قبل، توسط کاربری به نام tntt-co یک پروژه ساده html را ایجاد کردیم. برای دسترسی به این پروژه می توانید اینجا کلیک کنید. بعد از ایجاد پروژه اکانت asascript را به عنوان یک collaborator به پروژه اضافه کردیم. در اینجا می خواهیم در ابتدا نقش اکانت collaborator آسا اسکریپت را به نقش contributor تبدیل کنیم و در پروژه متن باز asascript-html با کاربر tntt-co همکاری داشته باشیم.

برای اینکه بتوانیم بهتر تفاوت بین نقش collaborator و contributor در گیت هاب را درک کنیم لازم است که ابتدا با تمامی نقش های مختلفی که امکان تعریف شدن در گیت هاب را دارد آشنا شویم.

در کل هر کاربر در گیت هاب می تواند 5 نقش متفاوت را به خود اختصاص دهد این نقش ها عبارتند از:

  • Author: این نقش هنگام ایجاد یک پروژه به صورت پیشفرض به کاربری که آن را ایجاد نموده است داده می شود.
  • Owner: شخصی است که در کنار Author قرار می گیرد و می تواند مخزن ایجاد شده را مدیریت کند. این کاربر به عنوان collaborator شناخته می شود.
  • Maintainers: نقشی است که وظیفه مدیریت پروژه ایجاد شده در مخزن را به عهده دارد. در واقع این فرد وظیفه مدیر محصول پروژه را بر عهده دارد.
  • Contributor: هر کاربری که داخل گیت هاب اکانت داشته باشد و خارج از گروه طراح نرم افزار باشد و در توسعه پروژه با ما شریک شود به عنوان contributor شناخته می شود.
     

 برای تبدیل کردن یک کاربر از collaborator به contributor به روش زیر عمل می کنیم.

ابتدا وارد اکانت مولد پروژه یعنی tntt-co می شویم. سپس مخزن مورد نظر که در اینجا asascript-html را انتخاب می کنیم. مثل شکل زیر بر روی تب settings مخزن asascript-html کلیک می کنیم و وارد تب manage access می شویم.

github console 1

سپس در صفحه باز شده در تب Manage Access در مقابل اکانت کاربری که می خواهیم نقش collaborator را از آن بگیریم بر روی دکمه trash کلیک می کنیم.

github console 2

با اعمال این تغییرات، دسترسی کاربر asascript به عنوان collaborator بر روی پروژه asascript-html محدود می شود. برای اینکه این کاربر بتواند نقش contributor در توسعه پروژه asascript-html را ایفا کند می بایست حتما پروژه asascript-html را fork کند. fork کردن اصطلاحی است که گیت هاب به این فرآیند می دهد و در ادامه قصد داریم تا با این مفهوم آشنا شویم. 

Fork کردن پروژه گیت هاب

همانطور که در دو جلسه قبل گفته شد دلیل اصلی شکل گیری گیت هاب اشتراک گذاری پروژه ها به صورت متن باز بر بستر اینترنت است تا کاربران و توسعه دهندگان مختلف بتوانند بر روی توسعه یک پروژه سهیم شوند. گیت هاب به این همکاری fork کردن پروژه می گوید. جهت fork کردن یک پروژه می بایست ابتدا وارد صفحه آن پروژه شویم. پروژه مد نظر ما در اینجا asascript-html است. جهت fork کردن ابتدا لازم است که با اکانت خودمان لاگین کرده باشیم در اینجا ما با اکانت asascript لاگین می کنیم. همانطور که در شکل زیر مشخص است ابتدا بر روی fork کلیک می کنیم.

github console 3

با کلیک کردن بر روی fork رو نوشتی از تمامی محتویات مخزن asascript-html به اکانتی که با آن فرآیند fork کردن را انجام داده ایم منتقل می شود.

در مرحله بعد می خواهیم پروژه fork شده را بر روی سیستم لوکال خود clone کنیم و تغییراتی را در پروژه ایجاد نمائیم. برای clone کردن پروژه همانطور که در جلسه قبل گفته شد از دستور زیر استفاده می کنیم. my-project نام پوشه ای است که فرآیند cloning در درون آن انجام می شود.

$ git clone https://github.com/asascript/asascript-html.git my-project

و در خروجی داریم:

Cloning into 'my-project'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 12 (delta 3), reused 7 (delta 1), pack-reused 0
Unpacking objects: 100% (12/12), 1.52 KiB | 13.00 KiB/s, done.
 

نکته: بعد از fork کردن یک پروژه اگر وارد اکانت خود شوید در قسمت سمت چپ بالای پنجره گیت هاب مثل شکل زیر علامت چنگال مانند fork را در کنار پروژه مشاهده می کنید که این بدان معنی است که پروژه از مخزن اصلی کپی برداری شده است. نام مخزن به همراه کاربر مولد مخزن اصلی را نیز در زیر علامت fork مشاهده می کنید.

github console 4

حال می خواهیم در درون پوشه my-project کلون شده تغییراتی را ایجاد نمائیم. در اینجا ما یک پوشه assets ایجاد می کنیم و در درون آن فایلی به نام style.css را اضافه می کنیم و در صفحه اصلی پروژه فایلی به نام product.html رانیز ایجاد می کنیم و در درون آن کد های اچ تی ام ال زیر را وارد می کنیم.

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>product page</title>
</head>
<body>
    <p>product page created</p>
</body>
</html>

 ناحیه دستوری یا همان command line را در پوشه my-project باز می کنیم. جهت انجام این کار می بایست در پوشه راست کلیک کرده و git bash here را بزنید.

 

نکته: همواره هنگام کامیت کردن هر پروژه clone شده ای بهتر است ابتدا کاربر فعلی پروژه را چک نمائید. ممکن است کاربری به صورت لوکال بر روی پروژه set نشده باشد و از کاربر global برای کامیت کردن پروژه استفاده کنید که این مورد می تواند برای شما در ادامه توسعه پروژه مشکلاتی را ایجاد کند.

 حالا یک بار git status می گیریم. درخروجی داریم:

On branch master
Your branch is up to date with 'origin/master'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        assets/
        product.html
nothing added to commit but untracked files present (use "git add" to track)

می بایست این تغییرات را یک بار commit کنیم و سپس پروژه fork شده را push کنیم. جهت کامیت کردن به ترتیب دستورات زیر را در command line وارد می کنیم.

$ git add .
$ git commit -m "product.html file created | style.css added to assets folder"

برای اینکه بتوانیم پروژه را در درون گیت هاب push کنیم می بایست ابتدا یک remote به اکانت  asascript بزنیم. با توجه به موارد گفته شده در جلسه قبل به ترتیب دستور های زیر را وارد می کنیم.

$ git remote add asascript https://github.com/asascript/asascript-html.git 
$ git push asascript master

بعد از اتمام عملیات push کردن به قسمت commit پروژه می رویم.

github console 5

در قسمت commit ها مشاهده می کنید که آخرین commit توسط asascript اضافه شده است.

در مرحله بعد می خواهیم به کاربر اصلی پروژه asascript-html بگوئیم که من در پروژه شما تغییراتی را ایجاد کرده ام لطفا در صورت صلاحدید این تغییرات را commit کنید. به این عملیات در گیت هاب، pull request گفته می شود.

بدین منظور ابتدا در پروژه fork شده خودتان بر روی تب pull requests کلیک کنید  سپس در مرحله بعد بر روی new pull request کلیک می کنیم تا یک درخواست جدید ایجاد کنیم.

github console 6

با زدن بر روی new pull request به مخزن اصلی پروژه در اکانت tntt-co منتقل می شوید تا در آنجا پیام pull request خودتون را برای کاربر tntt-co که نقش مدیر پروژه را دارد ثبت کنید. 

کاربر tntt-co پیام شما را خوانده و در صورت صلاحدید می تواند تغییرات شما را بر روی پروژه اعمال کند.

github console 7

بعد از زدن بر روی دکمه create pull request صفحه ای مانند زیر باز می شود که می توانید در قسمت write توضیحاتی را برای کاربر tntt-co یادداشت کنید. همواره سعی کنید در این قسمت به خوبی توضیح دهید که چه کاری را انجام داده اید و چه مشکلی از پروژه را حل کرده اید.

github console 8

حالا اگر به اکانت tntt-co مراجعه کنیم مشاهده می کنیم که pull request برای پروژه asascript-html قرار گرفته است.

github console 9

کاربر tntt-co می تواند دو عمل بر روی هر request انجام دهد. می تواند درخواست را close کند و آن را نادیده بگیرد و یا اینکه آن را در پروژه خود اعمال کند. این بستگی به کاربر tntt-co دارد. با کلیک کردن بر روی request صفحه ای مانند زیر باز می شود.

github console 10

با زدن بر روی Merge pull request درخواست جدید با پروژه ترکیب می شود و مخزن pull request خالی می شود.

جمع بندی:

در این جلسه در ابتدا نقش کاربر آسا اسکریپت را از collaborator به نقش contributor تبدیل کردیم. سپس با استفاده از کاربر asascript یک رونوشت که گیت هاب به آن fork کردن می گوید را از پروژه asascript-html به وجود آوردیم. سپس با clone کردن پروژه بر روی سیستم لوکال تغییراتی را بر روی آن ایجاد کرده و آن را بر روی گیت هاب push کردیم و در انتهای آموزش یک pull request ایجاد نموده و درخواست تغییرات را برای کاربر اصلی که در اینجا tntt-co بود ارسال کردیم.

لیست قسمت های این دوره:
رایگان 20 دقیقه
رایگان 15 دقیقه