Git والتعاون

ما الذي يحفظه Getman في مجلد getman/، وما الذي يزامنه بنفسه، وأي إجراءات Git لا تعمل إلا عندما تنقر.

شاهد هذا في الشرح: ما يحفظه Getman في Git (5:06)

يحفظ Getman المشروع كاملا في مجلد getman/ داخل مستودع Git لديك. المجلد ملفات YAML عادية، لذلك تمر الطلبات والبيئات وعقد API وحزم التغيير عبر المراجعة نفسها التي تمر بها الشيفرة. لا يشغّل Getman Git في الخلفية نيابة عنك أبدا. تحدث عمليات fetch وpull وcommit وpush فقط عندما تختارها، أو عندما تشغّل Git بنفسك.

ما الذي يوجد في المجلد

getman/
  getman.yaml                   المشروع: المصادقة والترويسات والإعدادات (بلا أسرار)
  environments/*.yaml           المتغيرات؛ القيم السرية فارغة دائما
  collections/**.yaml           ملف واحد لكل طلب
  contracts/openapi.yaml        العقد الحالي لواجهة API
  changes/GT-<KEY>-<NNN>.yaml   حزم التغيير، مع الأدلة وحالة التكامل

لا تُكتب القيم السرية أبدا. يحتفظ المتغير السري باسمه بقيمة فارغة، فيملأ كل زميل قيمه الخاصة، وتخزنها سلسلة المفاتيح على كل جهاز. وتكون بيانات الاعتماد الصريحة في إعدادات المصادقة فارغة أيضا.

المزامنة مع المجلد

اضبط المجلد مرة واحدة من Project settings ← Team sync باستخدام Choose folder. ثم استخدم:

  • Write to folder لحفظ الحالة الحالية للمشروع في المجلد.
  • Load from folder لقراءة المجلد داخل المشروع.

عندما يختلف المجلد عن التطبيق، يسألك Getman أي نسخة تحتفظ بها. يكتب Keep mine نسخة التطبيق إلى المجلد. ويستبدل Take theirs نسخة المشروع بنسخة المجلد.

شريط Git

يقع شريط Git في عرض Changes. ويبيّن كم يتقدم فرعك على الفرع البعيد أو يتأخر عنه، ومتى جلبت آخر مرة.

الزر ما الذي يفعله متى يعمل
Fetch يشغّل git fetch ويحدّث ما يملكه الفرع البعيد فقط عندما تنقر عليه
Pull يشغّل git pull --ff-only، ولا ينشئ commit دمج أبدا فقط عندما تنقر عليه
Commit… يسجّل فقط ملفات Getman التي تحددها فقط عندما تنقر عليه
Push يدفع الفرع فقط عندما تنقر عليه

يستخدم Getman نسخة Git المثبّتة لديك، مع مفاتيح SSH وبيانات الاعتماد الخاصة بك. يبقى Push معطلا حتى يكون للفرع upstream. شغّل git push -u origin <branch> مرة واحدة لضبطه.

يرفض Getman عملية Pull عندما تكون لديك تغييرات محلية أو عندما يتباعد الفرع. أجرِ commit أو تجاهل التغييرات المحلية أولا. ويحتاج الفرع المتباعد إلى دمج أو rebase في Git. يُحل الدمج والتعارضات دائما داخل Git.

ما الذي يفعله Getman بنفسه

يقرأ Getman المجلد وفرع الريموت الذي جلبته، فيبقى صندوق الوارد محدثا دون أي اتصال بالشبكة. كما أنه:

  • يُبلغ عن حزم التغيير الواردة، وعن تعديلات الطلبات أو العقد الواردة بعد Fetch
  • يكتشف علامات التعارض والملفات غير الصالحة، ويرفض تحميلها
  • يسألك قبل أن يستبدل Pull الطلبات التي عدّلتها

يرفض Getman تحميل ملف ما زال يحتوي على علامات تعارض، أو ملف YAML غير صالح. أصلح الملف في Git أولا.

عرض Changes

افتح عرض Changes من الشريط، أو بالاختصار ⌘⇧G. له أربعة أوضاع:

الوضع يعرض
Inbox التغييرات التي تحتاج إجراء منك: التعارضات، والتغييرات الكاسرة، والتشغيلات الفاشلة، والحزم الواردة، والأعمال المعلقة
Completed التغييرات التي أبلغت عنها أو تحققت منها باسم المستهلك الخاص بك
All changes كل حزم التغيير، بأعلى معرّف أولا
Timeline كل حزم التغيير، الأحدث أولا، مع مؤلفها وعلامة التحقق

اضبط I integrate as على اسم المستهلك الخاص بك، مثل web. عندها يعرض Inbox التغييرات التي يجب على هذا الاسم أن يتصرف بشأنها. تُعلَّم حزمة التغيير الواردة التي لم تسحبها بعد بالعبارة Not pulled yet.

المراجعة وcommit

يتضمن commit جيد لتغيير في الخادم الشيفرة وملفات getman/ معا، فيرى المراجع العقد والأمثلة والشيفرة في مكان واحد.

  1. افتح Commit… وحدد ملفات Getman التي تنتمي إلى التغيير.
  2. اكتب رسالة تذكر حزمة التغيير، مثل GT-SHOP-001: order totals in cents.
  3. نفّذ commit، ثم push.

تُسجَّل الملفات المحددة فقط. يترك Getman بقية المجلد دون مساس، فلا تتسرب تعديلات غير ذات صلة إلى الـ commit.

نصائح Git

  • راجع فرق YAML في أداة Git المعتادة لديك. كل طلب ملف واحد، فتغيير استدعاء واحد يكون فرقا صغيرا.
  • احتفظ بمجلد getman/ في المستودع نفسه الذي توجد فيه الشيفرة التي يصفها، فيتحركان معا.
  • إذا أنشأ شخصان معرّف التغيير نفسه، فليغيّر أحدهما اسم الملف وسطر id: إلى الرقم الحر التالي، ثم ينفذ commit. تغطي استكشاف الأخطاء هذه الحالة.

الخطوات التالية

  • يتبع سير عمل الفريق تغييرا واحدا في الخادم من Alice إلى Bob، خطوة بخطوة.
  • تشرح العقود الملف الذي تُفحص حزم التغيير في مقابله.