سؤال

أريد أن أحصل على مستودع GIT العاري المخزن في مشاركة شبكة (Windows). يمكنني استخدام Linux، وشنت مشاركة الشبكة المذكورة مع CIFS. يستخدم My ColueGue Windows XP، ويحتوي على مشاركة الشبكة تلقائيا (من ActiveDirectory، بطريقة أو بأخرى) كمحرك أقراص الشبكة.

أتساءل عما إذا كان يمكنني استخدام Repo من كلا الجهازين، دون مشاكل في التزامن.

لقد اختبرت بالفعل، وفي نهايتي أستطيع استنساخ موافق، لكنني أخشى ما قد يحدث إذا كلاهما الوصول إلى نفس الريبو (دفع / سحب)، في نفس الوقت.

في FIT FAQ هناك مرجع حول استخدام أنظمة ملفات الشبكة (وبعض المشاكل مع SMBFS)، لكنني لست متأكدا مما إذا كان هناك أي تأمين ملفات من قبل الشبكة / الخادم / Windows / Linux - أنا متأكد تماما من عدم وجود ر.

لذلك، هل استخدم أي شخص ريبو جيتو على مشاركة الشبكة، دون خادم، وبدون مشاكل؟

شكرا لك،
اليكيال

ملاحظة: أريد تجنب استخدام خادم HTTP (أو الخفي GIT)، لأنني لا أستطيع الوصول إلى الخادم مع الأسهم. كما أعلم أننا يمكن أن ندفع / سحب من واحد إلى آخر، لكننا نكون مطلوبة للحصول على الكود / الريبو على المشاركة لأسباب احتياطية.

تحديث:

مخاوفي ليست حول إمكانية فشل الشبكة. ومع ذلك، سيكون لدينا الفروع المطلوبة محليا، وسنكون قادرين على تجميع مصادرنا.

ولكن، نلتزم عادة في كثير من الأحيان، وتحتاج إلى Rebase / دمج في كثير من الأحيان. من وجهة نظري، فإن الخيار الأفضل سيكون لديه ريبو مركزي على المشاركة (وبالتالي فإن النسخ الاحتياطية مضمونة)، وسوف ننسخ كل من ذلك، واستخدامها لإعادة التوبيخ.

ولكن، بسبب حقيقة أننا نفعل ذلك في كثير من الأحيان، أخشى الملف / الريبو الفساد, ، إذا حدث أننا ندفع / سحب في نفس الوقت. عادة، يمكننا قال بصوت عال في بعضنا البعض في كل مرة ندرك عن بعد Repo :)، ولكن سيكون من الأفضل أن تكون مضمونة من قبل أجهزة الكمبيوتر / الشبكة.

ومن الممكن أن يكون لدى GIT آلية داخلية للقيام بذلك (نظرا لأن شخصا ما يمكن أن يدفع إلى أحد ريبوس، أثناء عملك)، لكنني لم أجد أي شيء قاطع حتى الآن.

تحديث 2:

الريبو على محرك السهم سيكون عارية ريبو، لا تحتوي على نسخة عمل.

هل كانت مفيدة؟

المحلول

يتطلب Git الحد الأدنى من قفل الملفات، والتي أعتقد أنها السبب الرئيسي للمشاكل عند استخدام هذا النوع من الموارد المشتركة عبر نظام ملفات الشبكة. السبب في أنه يمكن أن يفلت من هذا هو أن معظم الملفات في ريبو جيتو --- يتم تسمية جميع تلك التي تشكل قاعدة بيانات الكائنات --- كمهلة من محتواها، ومحددة ذات مرة. لذلك هناك مشكلة عملاء يحاولون استخدام نفس الملف لمحتوى مختلف لا يأتي.

الجزء الآخر من قاعدة بيانات الكائنات هو متعدقي - يتم تخزين Refs في الملفات ضمن دليل "Refs" (أو في "التعبئة") وتغيير هذه: على الرغم من أن refs/* الملفات صغيرة ومحديدة دائما بدلا من تحريرها. في هذه الحالة، يكتب GIT المرجع الجديد إلى ملف ".LOCK" مؤقتا ثم إعادة تسميته عبر الملف الهدف. إذا احترم النظام O_EXCL دلالات، هذا آمن. حتى لو لم يكن، فإن الأسوأ الذي يمكن أن يحدث هو سباق الكتابة فوق ملف ref. على الرغم من أن هذا سيكون مزعجا لمواجهة ذلك، فلا ينبغي أن يسبب الفساد على هذا النحو: قد يكون الأمر كذلك هو الحال الذي تدفعه إلى الريبو المشترك، ويبدو أن هذه الدفعة قد نجحت في حين فعل ذلك في الواقع شخص آخر. ولكن يمكن فرز هذا ببساطة عن طريق سحب (دمج في ارتكاب الرجل الآخر) ودفع مرة أخرى.

باختصار، لا أعتقد أن تلف الريبو هو الكثير من المشكلة هنا --- صحيح أن الأمور يمكن أن تذهب خطأ بسبب قفل المشاكل، ولكن تصميم جيت ريبو سيقلل من الضرر.

(إخلاء المسئولية: كل هذا يبدو جيدا من الناحية النظرية، لكنني لم أفعل أي إذكاء متزامن لعيد الريبو لاختباره، ولا يشاركها فقط أكثر من NFS وليس CIFS)

نصائح أخرى

لماذا تهتم؟ تم تصميم GIT لتوزيعها. فقط امتلك مستودع على كل جهاز واستخدم آلية النشر والسحب لنشر التغييرات بينهما.

لأغراض النسخ الاحتياطي، قم بتشغيل مهمة ليلا لنسخ مستودعك إلى المشاركة.

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

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

يبدو أن استخدام Repo المركزي GIT مدعوم. تشير معظم الاستخدامات الموصوفة إلى SSH أو HTTP وصول، ولا يتجنب أي منهما الوصول المتزامن إلى Repo. حتى إذا كنت تقوم بتوزيع الاستخدام بالكامل، فإن هذا السؤال ينشأ إذا دفع أكثر من اثنين من المتعاونين إلى نفس الريبو في أي مكان. حتى الآن، لم يجيب أي رد على السؤال. هل يسمح تصميم GIT بالتعامل مع N في وقت واحد يدفع إلى فرع؟

يبدو تماما كما لو كنت ترغب في استخدام نظام إصدار مركزي، لذلك يتم عرض الاستعلام للنسخ الاحتياطي. ربما مع xxx2git بينكم للعمل محليا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top