البحث في الموقع
المحتوى عن 'remote'.
-
لا يوجد حافز أقوى من الاتصالات القوية مع الفريق، إن القُرب يخلق ويحافظ على الدافع للقيام بأفضل مما هو متوقع. من الممكن أن تكون الفرق التي تعمل عن بعد متماسكة، لكن بُعد المسافة بين أعضاء الفريق يتطلب منك تخطيطً أفضل وجهدًا مدروسًا، ولتحقيق ذلك عليك الاعتماد بشكل أكبر على التنظيم وبشكل أقل العفوية. ومن أفضل الطرق للقيام بالتحسينات هي الاستلهام من الشركات الأخرى، سواء كانت تعمل بفرق مُوزّعة أو غير ذلك. ونحن بالتأكيد تعلمنا الكثير بهذه الطريقة. ومع أخذ ذلك بعين الاعتبار، ستجد في هذا المقال نظرة على الكيفية التي جعلنا فيها من ترابط الفريق أولوية في Help Scout . جمعة فيكا كلمة فيكا Fika هي تقليد سويدي، وجمعة فيكا الخاصة بنا هي استراحة من 15 إلى 30 دقيقة للتحدث مع شخص تختاره بشكل عشوائي من فريق Help Scout. وليس من الضروري وجود القهوة والحلويات ولكن يستحسن ذلك. نعالج في جمعة فيكا حقيقة أننا نجتمع عادة مع الأشخاص الذين هم مثلنا، حيث يمضي الناس أوقاتهم عادةً مع أولئك الذين يعملون معهم في في نفس القسم، لذلك نجمع أعضاء الفريق في جمعة فيكا للتحدث سويةً عن أي شيء. وعلى الرغم من إمكانية النقاش في أي موضوع دون الحاجة إلى وجود أساس مسبق. إلا أنني أوصي بتحديد موضوع افتتاحي كل أسبوع لتسهيل المهمة وبدء المحادثة بسلاسة: عليك أن تسعى جاهدًا لإبقاء كل اتصالات الفريق سهلة ومريحة. ولتحقيق ذلك استخدمنا خدمة Slack + Appear.in. حيث يمكنك بدء محادثة فيديو مثل هذه بأمر سريع هو {appear {room name. حيث لا داعي إلى تسجيل دخول أو وجود اسم مستخدم، وتذكرّ أن الأشياء التي يسهل القيام بها يتم فعلًا تنفيذها. فيديو أسبوعي للأحداث الجديدة لقد اعتدنا على اطلاع الفريق بالأخبار الجديدة في اجتماعي أسبوعي نعقده صباح يوم الإثنين، لكن وجدنا أن هذا الأمر لم يعد يُجدي نفعًا بعد وصول فريقنا إلى حجم كبير نسبيًا. لذلك نحن حاليًا نرسل فيديو أسبوعي -مستلهم من Wistia – يغطي ماذا يحدث في عالم Help Scout : موظفون جدد، أخبار الشركة الكبيرة، أو الأخبار الشخصية الجديدة الهامة (كولادة طفل جديد، القيام برحلة سفر في جميع أرجاء البلاد، أو حتى إذا وجدت أخيرًا سترتك القديمة التي كنت تبحث عنها، ...الخ). ويرسل هذا الفيديو عبر البريد الإلكتروني كما ينشر في قناة خاصة بنا على Slack التي نشارك فيها المحتوى الطويل مع الفريق. لدى تحديثات الفيديو بعض الميزات الرئيسية: إنها قابلة للتّوسيع ولا تتطلب تواجد أعضاء الفريق في نفس الوقت، كما سيكون لديك الوقت الكافي لتخطيط ومراجعة ما تود مشاركته. إجراء اللقاءات الثنائية one-on-ones بشكل منتظم اللقاءات الثنائية one-on-ones هي اجتماع بين قائد الفريق وعضو في الفريق لمدة تتراوح عادةً بين 10 و20 دقيقة يتناقشان فيها عن الأمور التي تسير على ما يرام والأشياء التي تحتاج إلى تغيير. يُمكنك معرفة المزيد بقراءة هذا المقال: دليل مختصر لتحسين المحادثات الثنائية مع الموظفين في شركتك. قد تكون اللقاءات الثنائية one-on-ones مصدر إحراج في البداية، وبالرغم من التشديد على أهمية العمل بروح الفريق إلا أنّ الكثيرين يجدون صعوبةً في الالتزام بذلك، ومن هنا تبرز أهمية تلك اللقاءات التي كثيرًا ما يتم إهمالها، وعليك أن تتأكد من عدم حدوث ذلك. إن التحدث وجهًا لوجه مع أعضاء فريقك بشكل منتظم هو أمر مهم للغاية حتى لو كنت مرتاحًا لوضع الفريق الحالي ﻷنه كما أظهرت الأبحاث: "تنخفض الروح المعنوية بحدة لدى الموظفين في حوالي 85% من الشركات بعد الأشهر الستة الأولى من بدء العمل، وتستمر في التدهور لسنوات بعد ذلك." بيئة العمل العظيمة محفزة، وليس هناك من بديل عن اللقاءات الثنائية مع أعضاء الفريق، إنها تجعل المشاكل تظهر في وقت مبكر مما يساعد في التقاط الأفكار والآراء والمخاوف ومناقشتها. كما تمنحك الوقت للتواصل مع فريقك. رحلات الفريق الجماعية تساعد جمعة فيكا، تحديثات الفيديو الأسبوعية، واللقاءات الفردية مع أعضاء الفريق بالتأكيد على حدوث الترابط بين أعضاء الفريق، لكن لا يمكنها أن تكون بديلًا عن قضاء الوقت معًا بشكل شخصي. نحن نجتمع معًا مرتين في السنة في مكان مًا لمدة أسبوع، يكون فيها القليل من اجتماعات الفريق والكثير من المرح، مما يعطينا الفرصة لإمضاء الوقت سويةً كمجموعة ومعرفة المزيد عن بعضنا البعض. لقد التقينا في وقت سابق من هذا العام ولهونا كثيرًا وأفرطنا في الأكل أيضًا. ولكن عليك أن تعمل بحكمة، حيث قسمنا فترات الدعم الفني بحيث لا نهمل العملاء، كما خططنا لجلسات جماعية أصغر لاستعراض ومناقشة الأفكار. على الرغم من أن رحلات الفريق الجماعية ليست التزامًا صغيرًا، إلا أن بناء علاقات أوثق وأكثر تماسكًا بين أعضاء الفريق هو أمر بنّاء وهادف، وهذا لن يحدث بدون جمعهم سويةً في مكان واحد. اكتساب الخبرات مع مرور الوقت ستخضع الخدمات التي يقدمها موظفوك لتقييم العملاء ومقارنتها مع ما يقدّمه المنافسون، لذا لا مفرّ من القيام بالممارسات التي تضمن أن يقدم فريقك الأفضل على الإطلاق، ولا سبيل إلى هذا إلا بالمعرفة الدقيقة لتفاصيل بيئة عملك إلى جانب الاستفادة القصوى من تجاربك ومحاولاتك السابقة. ونحن لدينا بالتأكيد الكثير لنتعلمه عن هذا الأمر، وبما أن الفريق ينمو فنحن نعلم أن ما يصلح الآن ليس يصلح بالضّرورة دائمًا. لكننا سنكافح لبقاء فريقنا متماسكًا ولن نتوقف أبدًا عن تحسين أساليبنا ممارستنا بسبب الأهمية القصوى لهذا الأمر. ترجمة وبتصرف لمقال Keeping Your Remote Team Connected لصاحبته Becca Van Nederynen.
-
يجب أن تعرف كيف تدير المستودعات البعيدة لتكون قادرا على التعاون في مشروع يستخدم Git. المستودعات البعيدة هي نسخ من المشروع مضافة على خادوم غير جهازك المحلي. يمكن أن يكون لديك أكثر من مستودع بعيد، وهو إما أن يكون للقراءة فقط Read-only أو للقراءة والكتابة. يستدعي التعاون مع الآخرين إدارةَ المستودعات ودفع Push البيانات إليها أو جلبها منها Pull لمشاركة مساهماتك مع بقية الفريق. تتضمن إدارة المستودعات البعيدة معرفة كيفية إضافتها، حذفها عندما تصبح غير صالحة، إدارة الفروع Branches البعيدة ومتابعتها Tracking إضافةً لأمور أخرى. يعرِض هذا المقال لمهارات أساسية لإدارة المستودعات البعيدة. عرض المستودعات البعيدة يعرِض الأمر git remote الخواديم البعيدة المضبوطة لديك. ينتج عن تنفيذ الأمر إظهار لائحة بأسماء مختصرة لكل خادوم بعيد ضبطته. إن كنت نسخت مستودعا فسترى على الأقل الاسم المختصر origin، وهو الاسم المختصر الافتراضي الذي يعطيه Git للخادوم الذي نسخت منه المستودع. يستخدَم الاسم المختصر مرجعا للدلالة على المستودع بدلا من كتابة مساره كاملا. في المثال التالي ننسخ المستودع ticgit ثم نلج إلى مجلد المستودع وننفذ أمر git remote: git clone https://github.com/schacon/ticgit Cloning into 'ticgit'... remote: Reusing existing pack: 1857, done. remote: Total 1857 (delta 0), reused 0 (delta 0) Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. cd ticgit git remote origin لاحظ الاسم المختصر origin. يمكن أيضا استخدام الخيار v- الذي يُظهر مسارات URL التي خزنها Git للاستخدام عند القراءة من المستودع أو الكتابة فيه: git remote -v origin https://github.com/schacon/ticgit (fetch) origin https://github.com/schacon/ticgit (push) إن كان لديك أكثر من مستودع بعيد فسيسرُدها الأمر جميعا. على سبيل المثال، إن كان لمستودع واحد خواديم بعيدة متعدّدة للعمل مع متعاونين مختلفين فستكون نتيجة تنفيذ الأمر كالتالي: cd grit git remote -v bakkdoor https://github.com/bakkdoor/grit (fetch) bakkdoor https://github.com/bakkdoor/grit (push) cho45 https://github.com/cho45/grit (fetch) cho45 https://github.com/cho45/grit (push) defunkt https://github.com/defunkt/grit (fetch) defunkt https://github.com/defunkt/grit (push) koke git://github.com/koke/grit.git (fetch) koke git://github.com/koke/grit.git (push) origin git@github.com:mojombo/grit.git (fetch) origin git@github.com:mojombo/grit.git (push) يعني هذا أن بإمكاننا جلب مساهمات أي واحد من هؤلاء المتعاونين بسهولة. إضافة مستودعات بعيدة ذكرنا في الفقرات السابقة كيفية إضافة مستودعات بعيدة باختصار؛ في الفقرات التالية سنفصِّل في الكيفية. استخدم الأمر التالي لإضافة مستودع جديد باسم مختصر يمكنك جعله مرجعا للمستودع: git remote add [shortname] [url] مثلا: git remote origin git remote add pb https://github.com/paulboone/ticgit git remote -v origin https://github.com/schacon/ticgit (fetch) origin https://github.com/schacon/ticgit (push) pb https://github.com/paulboone/ticgit (fetch) pb https://github.com/paulboone/ticgit (push) يمكنك الآن استخدام الاسم pb بدلا من العنوان الكامل في سطر الأوامر. استخدم الأمر التالي لإحضار جميع البيانات الموجودة في المستودع البعيد الذي أضفته أعلاه والتي لا توجد لديك محليًّا: git fetch pb remote: Counting objects: 43, done. remote: Compressing objects: 100% (36/36), done. remote: Total 43 (delta 10), reused 31 (delta 5) Unpacking objects: 100% (43/43), done. From https://github.com/paulboone/ticgit * [new branch] master -> pb/master * [new branch] ticgit -> pb/ticgit يمكن الآن الوصول إلى الفرع الرئيس من المستودع عبر pb/master . جلب مستودعات بعيدة ودفع البيانات إليها يمكن جلب بيانات مستودع بعيد بتنفيذ الأمر: git fetch [remote-name] يذهب Git بعد تنفيذ الأمر أعلاه إلى المستودع البعيد وينزل جميع بياناته التي لا توجد لديك حتى الآن. تحصُل بعد تنفيذ الأمر على مراجع (أسماء مختصرة) لجميع الفروع يمكن بعد ذلك دمجها أو فحصها في أي وقت. يضيف أمر النسخ git clone الاسم المختصر origin للمستودع البعيد تلقائيا. يجلب أمر git fetch origin أي بيانات جديدة دُفِعت إلى الخادوم بعد نسخ المستودع (أو بعد آخر جلب منه). من المهم ملاحظة أن git fetch تضيف البيانات إلى المستودع المحلي، ولا تدمجها تلقائيا مع أي من أعمالك؛ كما أنها لا تعدل على ما تعمل عليه. يعني هذا أن عليك دمجها يدويا عندما تكون جاهزا. إن كان لديك فرع معدّ لتتبع مستودع بعيد فيمكنك استخدام git pull لجلب البيانات من المستودع البعيد ودمجها مع الفرع الحالي. يُعِد أمر git clone تلقائيا الفرع الرئيس المحلي لتتبع الفرع الرئيس على الخادوم البعيد الذي نُسخ المستودع منه. يجلب أمر git pull البيانات من الخادوم الذي نُسخ أصلا منه المستودع ويحاول تلقائيا دمجها إلى الشفرة البرمجية التي تعمل عليها حاليا. دفع البيانات إلى المستودع البعيد يجب دفع المشروع إلى الخادوم عندما يكون جاهزا لتشاركه مع الآخرين، بتنفيذ الأمر التالي: git push [remote-name] [branch-name] حيث [remote-name] يمثل الفرع على الخادوم البعيد و[branch-name] على الخادوم المحلي، مع التذكير أن نسخ المستودع يضبط الاسمين تلقائيا كما أشرنا أعلاه. عندما تريد دفع الفرع الرئيس إلى الخادوم الأصلي فيمكنك تنفيذ الأمر التالي لدفع الإيداعات التي أنجزتها إلى الخادوم: git push origin master يعمل الأمر السابق فقط إن كنت نسخت المستودع من خادوم لديك صلاحيات الكتابة عليه، مع شرط ألا يكون أي شخص آخر دفع بيانات جديدة للمستودع البعيد بعد آخر عملية جلب قمت بها. إذا نسخت المستودع أنت وشخص آخر في نفس الوقت ثم أضاف هو إيداعات جديدة بدفعها إلى المستودع ثم أتيت لدفع بياناتك فإن المستودع لن يقبلها. يجب عليك في هذه الحالة جلب إيداعات الشخص الآخر أولا إلى جهازك المحلي ثم تضمينها لديك في المشروع ثم دفعه من جديد. فحص مستودع بعيد إن أردت الحصول على معلومات أكثر تفصيلا عن مستودع بعيد فالأمر التالي يؤدي هذه المهمة: git remote show [remote-name] إن نفذت الأمر مع اسم مختصر مثل origin فستحصل على نتيجة شبيهة بالتالي: git remote show origin * remote origin Fetch URL: https://github.com/schacon/ticgit Push URL: https://github.com/schacon/ticgit HEAD branch: master Remote branches: master tracked dev-branch tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (up to date) يظهر في نتيجة الأمر مسار المستودع البعيد إضافة إلى معلومات خاصة بفرع التتبع. يخبرك الأمر أيضا أنك إن نفذت الأمر git pull على الفرع الرئيس master فسيدمجه تلقائيا في الفرع الرئيس في المستودع البعيد بعد أن يجلب جميع المراجع البعيدة؛ كما أنه يسرد قائمة بجميع المراجع البعيدة التي جلبها. إن كنت تستخدم Git كثيرا فستظهر معلومات أكثر تفصيلا من المثال غير المعقد أعلاه: git remote show origin * remote origin URL: https://github.com/my-org/complex-project Fetch URL: https://github.com/my-org/complex-project Push URL: https://github.com/my-org/complex-project HEAD branch: master Remote branches: master tracked dev-branch tracked markdown-strip tracked issue-43 new (next fetch will store in remotes/origin) issue-45 new (next fetch will store in remotes/origin) refs/remotes/origin/issue-11 stale (use 'git remote prune' to remove) Local branches configured for 'git pull': dev-branch merges with remote dev-branch master merges with remote master Local refs configured for 'git push': dev-branch pushes to dev-branch (up to date) markdown-strip pushes to markdown-strip (up to date) master pushes to master (up to date) يعرض الأمر الفروع التي ستُدفَع إليها البيانات تلقائيا عند تنفيذ الأمر git push على فروع معيَّنة. كما يُظهر أيضا الفروع الموجودة على الخادوم التي لا توجد لديك حتى الآن، الفروع التي حذفت من الخادوم ولكنها لا زالت لديك محليًّا والفروع المختلفة التي دُمجت تلقائيا عند تنفيذ الأمر git pull. حذف المستودعات البعيدة وإعادة تسميتها يتيح الأمر git remote rename إمكانية تغيير الاسم المختصر الخاص بالمستودع البعيد. إن أردت مثلا تغيير pb إلى paul فيجب تنفيذ الأمر على النحو التالي: git remote rename pb paul git remote origin paul ينتج عن الأمر أيضا التعديل على أسماء الفروع أيضا، مثلا pb/master تصبح paul/master عند تعديل الاسم المختصر من pb إلى paul. استخدم الأمر git remote rm لحذف مستودع بعيد : git remote rm paul git remote origin ترجمة -وبتصرف- للفصل Git Basics - Working with Remotes من كتاب Pro Git لصاحبه Scott Chacon.