لن يتم تشغيل خطاف ما بعد الالتزام للتخريب عند الالتزام، ويعمل البرنامج النصي لأنه يمكنني تشغيله في سطر الأوامر
-
21-12-2019 - |
سؤال
لقد قمت للتو بإنشاء مستودع جديد.الخادم الخاص بي هو Ubuntu 12.04 32 بت.أريد أن تكون التزاماتي حية بمجرد ارتكابها.يتم تحقيق ذلك عن طريق إنشاء نسخة عمل في دليل html العام الخاص بي، وتحديث نسخة العمل تلك بواسطة خطاف ما بعد الالتزام.لقد قمت بإعداد ذلك باستخدام التعليمات هنا:
http://www.frenssen.be/content/using-subversion-automatically-update-live-website
تكمن المشكلة في أن مرحلة ما بعد الالتزام لن تعمل عند تنفيذ مشروعي. مشروعي يلتزم على ما يرام.أعلم أن البرنامج النصي هو برنامج نصي صالح أيضًا، لأنه يمكنني تشغيله
env ./post-commit
داخل hooks
الدليل ويتم تحديثه بشكل صحيح.
اعتقدت أنه قد يكون أمرًا يتعلق بالأذونات لذا فقد استخدمته على نطاق واسع chown
لتتآكد من ذلك www-data
هو مالك:
the repo /home/svn/repo2
the working copy /var/www/html
the hook /home/svn/repo2/hooks/post-commit
the update binary /home/svn/autoupdate/autoupdate
ولكن لا شيء حتى الآن.لقد كانت التزاماتي ناجحة، لكن الخطاف لا يعمل أبدًا.يبدو نص الخطاف الخاص بي كما يلي:
#!/bin/sh
/home/svn/autoupdate/autoupdate
يبدو أن كل عمليات البحث على Google تشير إلى مشكلة في الأذونات ولكن لا يمكنني اكتشاف هذه المشكلة.
المحلول
هل يمكنك تكرار مثال هذا الرجل ومعرفة ما إذا كان يعمل على الإطلاق؟
mikewest.org/2006/06/subversion-post-commit-hooks-101
هل تحصل على خطأ عند الالتزام؟
إذا فشل ربط ما بعد الالتزام بالفعل، فأعتقد أنك ستشاهد دليلاً على ذلك في أي عميل كنت تستخدمه لإجراء عملية تسجيل الوصول.أشك تقريبًا في أن مرحلة ما بعد الالتزام لا يتم إطلاقها على الإطلاق.فقط للتحقق مرة أخرى، يجب تسمية الملف فعليًا باسم post-commit، وكله بأحرف صغيرة، وليس post-commit.tmpl.