Mercurial لا يرسل رسائل البريد الإلكتروني باستخدام Changenotify
-
28-10-2019 - |
سؤال
لقد قمت بإعداد مستودع http Mercurial المركزي وأحاول إرسال رسائل البريد الإلكتروني في كل مرة.أتبع التعليمات من صفحة الزئبق ومن http://morecode.wordpress.com/2007/08/03/setting-up-mercurial-to-e-mail-on-a-commit/.
يعمل Push بشكل جيد، لكني لا أرى أي رسالة إعلام على الإطلاق.الرجاء مساعدتي.
يبدو ملف .hg/hgrc الموجود في مجلد المستودع الخاص بعميلتي هكذا
[extensions]
hgext.notify=
[hooks]
changegroup.notify = python:hgext.notify.hook
[email]
from = what@gmail.com
[smtp]
host = smtp.gmail.com
username = what@gmail.com
password = ohyea
port = 587
tls = true
[web]
baseurl = http://1.1.1.1/repo_name
[notify]
sources = serve push pull bundle
# set this to False when you're ready for mail to start sending
test = False
config = /home/myhome/something/subscription.conf
template = \ndetails: {baseurl}{webroot}/rev/{node|short}\nchangeset:{rev}:node|short}\nuser: {author}\ndate: {date|date}\ndescription:\n{desc}\n
maxdiff = 300
يبدو أن /home/myhome/something/subscription.conf الخاص بي
[reposubs]
# key is glob pattern, value is comma-separated list of subscriber emails
* = sometestemail@gmail.com
قمت بالحفظ وتظهر النتيجة كما هو موضح أدناه، إذا لاحظت أنني لا أرى أي رسالة إعلام على الإطلاق
pushing to http://1.1.1.1/repo_name
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 2 changesets with 7376 changes to 7376 files
[تحديث:]
لقد وجدت أنه لا يوجد مجلد hgext في نظامي.لذلك قمت يدويًا بتنزيل المصدر المطابق لإصدار hg الخاص بي وقمت بتحديث hgrc الخاص بي على النحو التالي، وما زال لا يعمل.أي مساعدة من فضلك.
[extensions]
notify= /path/to/notify.py
[التحديث 2:]
شكرا Ry4an - لقد حاولت ذلك، ولكن لم يحالفني الحظ.
في خادم الويب الخاص بي
تحت/var/www و/var/www/hg قمت بإنشاء ملفات .hgrc ، فقط لست متأكدًا
[trusted]
users=user_name
اسم المستخدم هذا هو اسم المستخدم في عميلي حيث أحاول الدفع إلى الريبو.
على موكلي
في ملف .hg/hgrc في الريبو الخاص بي، أضفت قسمًا موثوقًا به
[trusted]
users=user_name
الإجراء أعلاه لم يساعد
النهج الثاني
على موكلي،
تحت الريبو الخاص بي .hg، فعلت ذلك
chown www-data:www-data hgrc
وعندما حاولت الدفع وصلتني رسالة أثناء الدفع تقول
sending capabilities command
capabilities: changegroupsubset stream lookup pushkey unbundle=HG10GZ,HG10BZ,HG10UN branchmap
sending heads command
searching for changes
common changesets up to 6ef19c49143a
sending branchmap command
ignoring untrusted configuration option hooks.changegroup.notify = python:hgext.notify.hook
لا يظهر أمر التجاهل هذا أثناء النهج الأول، إلا بعد أن أقوم بتغيير ملكية hgrc، ينبثق هذا.
المحلول
من المحتمل أن تكون هذه مشكلة ثقة، ولكن دعونا نتطرق إلى بعض الأمور الأخرى أولاً:
أ) قم بتبديل حمل التمديد إلى:
[extensions]
notify=
لم يعد الجزء hgext ضروريًا، ولكنه لا يضر.يعد إعطاء المسار الكامل للامتداد أكثر هشاشة في حالة التحديثات المستقبلية.الخام notify=
يعد بناء الجملة كافيًا للملحقات التي تأتي مع Mercurial ويتم الإشعار بذلك دائمًا.
ب) تبديل test = false
ل test = true
سيساعدك هذا على تصحيح هذا الأمر - فهو يرسل البريد الإلكتروني إلى Stdout، وهو أمر مفيد.
حسنًا، لقد انتهينا من هذين الأمرين، فلننظر إلى الثقة.تم بناء نظام الثقة الخاص بشركة Mercurial على فكرة أنه لا ينبغي لأي شخص أن يكون قادرًا على جعلك تقوم بتشغيل التعليمات البرمجية.تخيل لو كان الريبو الخاص بك .hg/hgrc
يحتوي الملف على قسم فيه مثل:
[hooks]
pre-push = rm -rf ~
عندما دفعت إليه فإنه سيحذف الدليل الرئيسي الخاص بي.هذا من شأنه أن يزعجني.لتجنب حدوث ذلك، لن يقوم Mercurial إلا بتحميل/تشغيل ملفات hgrc التي يثق بها، وأنت تخبره بما يثق به [trusted]
أقسام في لك hgrc.عندما تقوم بالضغط على ssh، فإنك تقوم بتسجيل الدخول بشكل فعال إلى الجهاز البعيد وهو خاص بك ~/.hgrc
ربما يشير هذا إلى ملفات hgrc الأخرى التي ترغب في تنفيذها.
HTTP خاص بالرغم من ذلك.على الرغم من أنك قد تقوم بالمصادقة، فمن المحتمل أنك لا تقوم بتشغيل Mercurial على النظام البعيد مثلك.من المحتمل أن يكون هذا ما يحبه بعض المستخدمين غير المستخدمين شبكة الاتصالات العالمية البيانات, شبكة الاتصالات العالمية, أباتشي, ، أو لا احد اعتمادًا على كيفية تكوين خادم الويب الخاص بك، لذلك...تحتاج إلى إجراء هذا الريبو .hg/hgrc' owned (or group-owned) by an user (or group) that the webserver user trusts. To achieve that you can either
chwownthe
.hg/hgrcfile over to the web server user, or find the web server's home directory (often
/فار/www) and create a
.hgrcfile in there with a
[موثوق به]block saying that the web server user trusts whomever it is that owns the repo's
ملف .hg/hgrc.
إذا كنت على حق بشأن ما يحدث، فستكون العلامة المنذرة في سجل أخطاء خادم الويب الخاص بك حيث سترى الكثير من الرسائل مثل "عدم الثقة في /path/to/repo/.hg/hgrc المملوكة لبعض المستخدمين".
ليرة تركية؛دكتور: تأكد من أن مستخدم خادم الويب الخاص بك يثق (بمعنى hgrc) بمالك ملف .hg/hgrc
هذا هو تحديد الخطاف.
نصائح أخرى
نجح هذا الأمر بالنسبة لي عند الاتصال بخادم Exchange:
Genacodicetagpreضع ما سبق في ملف hgrc في مستودعك.
على سبيل المثالC: \ repositories \ test.hg \ hgrc