كيف يمكنني الحصول على خطاف ما بعد الالتزام لا يسمى إلا عندما يتم تصنيع الالتزامات إلى الجذع؟

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

سؤال

لدي مستودع يحتوي على الدلائل التالية:

  • الفروع
  • العلامات
  • جذع

يحتوي دليل الجذع على الخط الرئيسي للتنمية. لقد قمت بإنشاء برنامج نصي لربط ما بعد الالتزام للمستودع الذي يقوم بتحديث نسخة عمل (من الجذع) عندما يرتكب المستخدم إلى المستودع.

يبدو شيئًا كهذا:

/usr/bin/svn update /path/to/a/working/copy

لقد قمت للتو بإنشاء فرع من الكود لأنني على وشك بدء بعض التغييرات الرئيسية ولكن لاحظت أنه عندما أرتكب تغييراتي في الفرع ، فإنه يطلق على خطاف ما بعد الالتزام ويقوم بتحديث نسخة العمل (نسخة من Trunk).

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

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

المحلول

كما ترون في هذه الوثائق, ، يتم تمرير المعلمات إلى البرنامج النصي بعد الالتزام.

يمرر المستودع وسيطتين إلى هذا البرنامج: المسار إلى المستودع ، ورقم المراجعة الجديد الذي تم إنشاؤه.

يمكن أن يكون خطاف ما بعد الالتزام هو أي برنامج من أي نوع: برنامج نصي Bash ، برنامج C ، نص Python ... ما يحدث هو أن Shell تطلق هذا البرنامج ، مع المعلمتين.

يمكنك العثور على قائمة البرامج النصية المثيرة للاهتمام هنا. بداية جيدة هذا السيناريو بيثون, الذي يستخدم Python SVN libs.

يرجى ملاحظة أن المسار المقدم ليس هو نفسه المسار إلى الملف الذي تقوم بتسجيل الدخول (انظر إجابة بولس). ولكن يجب أن يساعدك استخدام هذه المعلومات مع Revnum في الحصول على قائمة التغييرات ، والتي يمكنك من خلالها تحديد ما إذا كانت العمليات قد تم على Trunk أم لا.

نصائح أخرى

بالإضافة الى إجابة من بيشيبوش, ، تجدر الإشارة إلى أن السنانير يمكن أن تكون أي برنامج. هذا هو ، إذا أردت ذلك ، يمكنك كتابة البرنامج فيه C. تم وصف المعلمات التي تم تمريرها في المستند.

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

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

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

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