سؤال

إذا كان لدي نسخة من مستودع git كنسخة مخبأة على خادم بعيد لنشر نمط capistrano/vlad، فهل من الأفضل أن أفعل أ)

git archive --format=tar origin/master | (cd #{destination} && tar xf -)

أو ب)

cp -R cached-copy #{destination} && rm -Rf #{destination}/.git

للتوضيح، المستودع موجود بالفعل على الخادم البعيد، وأريد فقط نسخ إصدار معين إلى دليل الإصدارات على نفس الخادم أثناء النشر.

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

المحلول

وانا اقول فعلا

rsync -avP /local/repo/* server:/remote/repo

وهذا يعمل طالما انه موافق على على تخطي كافة الملفات نقطة في الريبو، وليس فقط .git. إذا كنت ترغب في تخطي <م> فقط .git ثم ستحتاج الخيار -f وصفحة الرجل.

رسينك . يعمل كبيرة ومعظم المرات التي يمكنك استخدامها تماما كما كنت ستستخدم اللجنة الدائمة!

نصائح أخرى

أ)

يمكنك حفظ حمل الشبكة لنقل دليل .git والذي قد يكون كبيرًا جدًا اعتمادًا على مقدار السجل والكائنات غير الموجودة في الرأس الحالي.

إذا كنت تريد أن يكون لديك مستودع git فعلي على الطرف البعيد، فمن الأفضل أن تنتقل إلى مستودع حقيقي وتضطر فقط إلى تغيير الدلتا.

لا!

والطريقة الأفضل للقيام بذلك هي:

  • git fetch ذاكرة التخزين المؤقت الخاصة بك
  • انسخ ذاكرة التخزين المؤقت إلى ديرك الحالي (باستخدام ملحق --no-checkout تم تمكين الخيارات)
  • الخروج من الالتزام الذي تريده.

عند إجراء استنساخ محلي، يستخدم Git الروابط الثابتة.وهذا يعني أنه حتى تقوم بتعديل ملف، وهو ما لن تفعله من قبل، يمكنك الحصول على 1000 عملية نشر واستخدام (افتراضيًا) فقط المساحة التي تحتاجها لواحدة.هذه الطريقة أيضًا أسرع كثيرًا في الأرشفة أو rsync.

وأيضا شخص ما قد تم بالفعل كتابة التعليمات البرمجية لك.

vigetlab في capistrano_rsync_with_remote_cache

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

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