كيفية الحصول على النسخ المتماثل الرئيسي مع Subversion؟

StackOverflow https://stackoverflow.com/questions/148625

  •  02-07-2019
  •  | 
  •  

سؤال

تبدو مشكلة بسيطة:

  • لدي مستودع SVN داخل جدار الحماية الخاص بنا.
  • لدي مستودع SVN خارج جدار الحماية الخاص بنا.
  • لدي مستخدمين داخل جدار الحماية وخارجه.(لا يوجد VPN ليس خيارًا :( سيكون ذلك سهلاً للغاية)
  • يمكن للأجهزة الموجودة داخل جدار الحماية التحدث إلى خادم SVN الخارجي.ولكن ليس العكس.
  • يعد SVN الخارجي شيئًا مؤقتًا - سيكون الريبو الرئيسي دائمًا في الداخل.

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

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

أعتقد أن موقع apache.org يقوم بذلك، لكن لا يمكنني العثور على مستندات حول كيفية القيام بذلك.هناك عدد من المنتجات التي تقوم بذلك (حسنًا، واحد)، ولكني أرغب في معرفة ما إذا كان لدى أي شخص طريقة لطيفة ونظيفة للقيام بذلك بدونها.يقوم svnsync بهذا، فقط في اتجاه واحد (السيد والعبد)

يسعدنا تشغيله على أنظمة التشغيل Windows أو Linux أو Mac، حيث لدينا جميعًا.بالرغم من ذلك، يفضل نظامي التشغيل Windows وMac.

يساعد!:) :)

[تحديث] بعد 12 شهرًا من العبث (وعدم الحاجة لذلك في النهاية)، الإجابة الصحيحة في رأيي هي الصحيحة.استخدم git - احصل على ريبو واحد يسحب من SVN-A، ثم ادفع إلى git repo جديد، ثم ادفع من هناك إلى SVN-B.يجب أن تعمل :)

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

المحلول

أنا أوصي SVK أو بوابة-svn.

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

سيتطلب git-svn (على ما أعتقد) من المطورين الخارجيين استخدام git.أفضّل ذلك، لكني سأكون مترددًا في فرض هذا على الآخرين.

ومع ذلك، يسمح SVK للمطورين الخارجيين بمواصلة استخدام svn.نظرًا لأن الريبو الداخلي لا يمكن الوصول إليه إلا داخليًا، فسيتعين على الحساب الداخلي أو المستخدم التعامل مع المزامنة الدورية (من المحتمل أن تعمل وظيفة cron).

إليك طريقة موسعة على موقع SVK wiki: استخدام SVKAsARepositoryMirroringSystem

نصائح أخرى

البساطة هي عادةً أفضل طريقة، ويبدو أن لديك بالفعل حلًا بسيطًا:استخدم مستودع SVN خارج جدار الحماية.

لقد قلت بالفعل أن الأجهزة الموجودة داخل جدار الحماية يمكنها الوصول إليه، ومن الواضح أن الأجهزة الموجودة بالخارج يمكنها الوصول إليه...هذا هو الجميع، فما هو المبرر الذي لديك لمستودع SVN ثانٍ داخل جدار الحماية؟إذا كان مجرد نسخة احتياطية، فما عليك سوى عمل نسخة احتياطية من النسخة الموجودة في الخارج.

اسمحوا لي أن أعرف إذا كنت أفتقد جزءًا من متطلباتك.

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

إحدى ميزات الإصدار Enterprise من خادم VisualSVN هي النسخ المتماثل لمستودع المواقع المتعددة هذا يفعل بالضبط ما تبحث عنه.

تعتمد هذه الميزة على تقنية نظام الملفات الموزعة VisualSVN (VDFS) والتي تم تصميمها لتمكين النسخ المتماثل الشفاف لمستودع Subversion عبر المواقع الموزعة جغرافيًا.بعض الميزات البارزة لـ VDFS:

  • جميع مستودعات VDFS Subversion الموزعة قابلة للكتابة،
  • يتيح نظام VDFS إمكانية النسخ الشفاف للبيانات ثنائية الاتجاه،
  • يدعم VDFS قواعد ترخيص النسخ المتماثل وآليات المصادقة المتقدمة مثل مصادقة Windows المتكاملة (NTLM/التفاوض) مع تشفير SSL/TLS الآمن.
  • تحتوي جميع مستودعات VDFS على نفس مجموعة البيانات،
  • النسخ المتماثل للمستودع عبر WAN مع VDFS أسرع بما يصل إلى x10 من النسخ المتماثل المعتمد على وكيل الكتابة،
  • يتم تكوين VDFS عبر واجهة رسومية دون أي خطوات معقدة.

ومن الجدير بالذكر أن VDFS يتبع الأسلوب الكلاسيكي السيد والعبد نموذج النسخ المتماثل الذي له مزايا كبيرة سيد سيد نموذج النسخ المتماثل لأنه أكثر ملاءمة لنسخ مستودعات Subversion مع الواجهة الخلفية من النوع FSFS fs.تعد تقنية VDFS أكثر موثوقية من حلول النسخ المتماثل الرئيسية لـ SVN.

VDFS configuration interface for multisite Apache SVN repos

حسنًا... أعتقد أن الحفاظ على تزامن اتفاقي إعادة الشراء مع بعضهما البعض أمر غير تافه.قد يتضمن ذلك بشكل أساسي تحويل SVN إلى Mercurial أو Git.

الحل الأكثر سلاسة وقابلية للتطوير هو النسخ المتماثل الرئيسي/التابع باستخدام svnsync الموضح في كتاب Subversion: http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.httpd.extra.writethruproxy

شيء واحد يمكنك تجربته هو تكرار الريبو على مستوى الملف.أنا أستخدم FolderShare (http://www.foldershare.com - يعمل على نظامي التشغيل Windows وMac) لسيناريو مماثل، على الرغم من أنني أقوم بنسخه لأغراض النسخ الاحتياطي فقط ولم أحاول الاتصال باستخدام SVN بالنسخة المتماثلة.

http://wandisco.com/subversion/multisite/

Subversion Multisite Mulsite يربح تقنية النسخ المتماثل الفريد من Wandisco لمزامنة مستودعات التخريب المتصلة على الفور عبر شبكة واسعة (WAN).يتعرض المستخدمون في كل موقع للأداء السريع لشبكة المنطقة المحلية (LAN) لكل من عمليات القراءة والكتابة.يوفر Subversion Multisite أيضًا قدرات احتياطية ساخنة وذات شفاء ذاتي تعمل على أتمتة التعافي من الكوارث ، بحيث يتم التخلص من وقت التوقف تقريبًا.

إذا كنت تبحث عن شرح خطوة بخطوة حول النسخ المتماثل الرئيسي/التابع باستخدام svnsync، فيرجى المتابعة http://lasanthals.blogspot.com/2012/09/main-steps-of-configuring-svn_4.html

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