Frage

Ich richte ein zentrales http-Mercurial-Repository ein und versuche, bei jedem Push E-Mails zu versenden.Ich folge den Anweisungen von Mercurial Page und von http://morecode.wordpress.com/2007/08/03/setting-up-mercurial-to-e-mail-on-a-commit/.

Push funktioniert einwandfrei, aber ich sehe überhaupt keine Benachrichtigungsmeldung.Bitte hilf mir.

Meine .hg/hgrc-Datei in meinem Repository-Ordner meines Clients sieht so aus

[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

Meine /home/myhome/something/subscription.conf sieht so aus

[reposubs]
# key is glob pattern, value is comma-separated list of subscriber emails
* = sometestemail@gmail.com

Ich speichere und mein Ergebnis sieht wie folgt aus. Falls Sie bemerken, sehe ich überhaupt keine Benachrichtigungsmeldung

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

[Aktualisieren:]

Ich habe festgestellt, dass in meinem System kein hgext-Ordner vorhanden ist.Also habe ich die Quelle, die zu meiner hg-Version passt, manuell heruntergeladen und mein hgrc wie folgt aktualisiert, aber es funktioniert immer noch nicht.Bitte um Hilfe.

[extensions]
notify= /path/to/notify.py

[Update 2:]

Danke Ry4an – ich habe es versucht, aber immer noch kein Glück.

Auf meinem Webserver

Unter /var/www und /var/www/hg Ich habe .hgrc-Dateien erstellt, bin mir nur nicht sicher, welche meine Webroot ist, also habe ich es an beiden Stellen mit Inhalt getan

[trusted]
users=user_name

Dieser Benutzername ist der Benutzername in meinem Client, von dem aus ich versuche, zum Repo zu pushen.

auf meinem Kunden

In der .hg/hgrc-Datei meines Repos habe ich den Abschnitt „Vertrauenswürdig“ hinzugefügt

[trusted]
users=user_name

Das obige Verfahren hat nicht geholfen

Zweiter Ansatz

auf meinen Klienten,

Unter der .hg-Datei meines Repos habe ich es getan

chown www-data:www-data hgrc

und als ich versuchte zu drücken, erhielt ich beim Drücken eine Nachricht mit der Aufschrift „

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

Dieser Ignorierungsbefehl wird beim ersten Ansatz nicht angezeigt. Erst nachdem ich den Besitzer von hgrc geändert habe, wird er angezeigt.

War es hilfreich?

Lösung

Es handelt sich wahrscheinlich um ein Vertrauensproblem, aber lassen Sie uns zunächst auf ein paar andere Dinge eingehen:

A) Schalten Sie die Nebenlast um auf:

[extensions]
notify=

Der hgext-Teil ist nicht mehr notwendig, schadet aber nicht.Die Angabe des vollständigen Pfads zur Erweiterung ist bei zukünftigen Updates schwieriger.Das rohe notify= Die Syntax reicht für Erweiterungen aus, die mit Mercurial geliefert werden, und notify tut dies immer.

B) Schalten Sie das um test = false Zu test = true Es hilft Ihnen beim Debuggen dieses Problems – es sendet die E-Mail an Stdout, was praktisch ist.

Okay, die beiden sind fertig, schauen wir uns das Vertrauen an.Das Vertrauenssystem von Mercurial basiert auf der Idee, dass nicht jeder in der Lage sein sollte, Sie zum Ausführen von Code zu bewegen.Stellen Sie sich vor, Ihr Repo wäre .hg/hgrc Die Datei enthielt einen Abschnitt wie:

[hooks]
pre-push = rm -rf ~

Wenn ich darauf drückte, wurde mein Home-Verzeichnis gelöscht.Das würde mich umhauen.Um dies zu vermeiden, lädt/führt Mercurial nur hgrc-Dateien, denen es vertraut, und Sie sagen ihm, was es vertrauen soll [trusted] Abschnitte in dein hgrc.Wenn Sie SSH verwenden, melden Sie sich effektiv beim Remote-Rechner an, und dieser ist Ihr eigener ~/.hgrc das gibt wahrscheinlich an, welche anderen hgrc-Dateien Sie ausführen möchten.

HTTP ist jedoch etwas Besonderes.Auch wenn Sie sich möglicherweise authentifizieren, führen Sie Mercurial wahrscheinlich nicht als Sie selbst auf dem Remote-System aus.Es handelt sich wahrscheinlich um einen Benutzer, der kein Benutzer ist WWW-Daten, www, Apache, oder niemand Abhängig davon, wie Ihr Webserver konfiguriert ist, also...Sie müssen diese Repos erstellen .hg/hgrc' owned (or group-owned) by an user (or group) that the webserver user trusts. To achieve that you can eithergekautthe.hg/hgrcfile over to the web server user, or find the web server's home directory (often/var/www) and create a.hgrcfile in there with a[Vertrauenswürdige]block saying that the web server user trusts whomever it is that owns the repo's.hg/hgrc`-Datei.

Wenn ich recht habe, was da vor sich geht, würde das verräterische Zeichen im Fehlerprotokoll Ihres Webservers stehen, wo Sie viele Meldungen wie „Nicht vertrauenswürdig /path/to/repo/.hg/hgrc im Besitz eines Benutzers“ sehen würden.

TL;DR: Stellen Sie sicher, dass der Benutzer Ihres Webservers dem Eigentümer vertraut (im Sinne von hgrc). .hg/hgrc Das ist die Angabe des Hakens.

Andere Tipps

Dies funktionierte bei der Kommunikation mit einem Exchange Server für mich:

[hostfingerprints]
<my exchange FQDN> = 2a:f3:89:69:13:b2:1e:3a:c2:fe:f9:7f:de:b3:39:e7:82:8e:99:93

[extensions]
notify =

[hooks]
changegroup.notify = python:hgext.notify.hook

[email]
from = Mercurial Notification <noreply@mydomain>

[smtp]
host = <exchange FQDN>
tls = true

[notify]
sources = serve push pull bundle
test = False
maxdiff = 300

[reposubs]
* = Cameron Rich <cameron.rich@mydomain.com>

Fügen Sie das Obige in die hgrc-Datei in Ihrem Repository ein. z.B.C: \ repositories \ test.hg \ hgrc

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top