Question

J'ai configuré un référentiel Mercurial HTTP Central et j'essaie d'envoyer des e-mails à chaque poussée. Je suis les instructions de la page mercuriale et de http://morecode.wordpress.com/2007/08/03/setting-up-mercurial-to-e-mail-on-a-commit/.

Push fonctionne correctement, mais je ne vois aucun message d'information. Aidez-moi, s'il vous plaît.

Mon .hg / hgrc dans mon dossier de référentiel de mon client ressemble à ceci

[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

Mon /home/myhome/something/subscription.conf ressemble à

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

J'enregistre et mon résultat ressemble ci-dessous, si vous remarquez que je ne vois aucun message d'avis du tout

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

Mise à jour:

J'ai trouvé qu'il n'y avait pas de dossier HGEXT dans mon système. J'ai donc téléchargé manuellement la source correspondant à ma version HG et mis à jour mon HGRC comme ci-dessous, et cela ne fonctionne toujours pas. Toute aide s'il vous plaît.

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

Mise à jour 2:

Merci Ry4an - Je l'ai essayé, toujours pas de chance.

Dans mon serveur Web

Sous / var / www et / var / www / hg J'ai créé des fichiers .hgrc, je ne sais pas lequel est mon webroot, donc j'ai fait aux deux endroits avec le contenu

[trusted]
users=user_name

Ce nom d'utilisateur est le nom d'utilisateur de mon client d'où j'essaie de pousser au dépôt.

sur mon client

Dans le .hg / hgrc de mon dépôt, j'ai ajouté la section de confiance

[trusted]
users=user_name

La procédure ci-dessus n'a pas aidé

Deuxième approche

sur mon client,

Sous mon repo .hg, j'ai fait

chown www-data:www-data hgrc

Et quand j'ai essayé de pousser, j'ai reçu un message en poussant à dire

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

Cette commande d'ignorance n'apparaît pas lors de la première approche, seulement après avoir changé la propriété de HGRC, cela apparaît.

Était-ce utile?

La solution

C'est probablement un problème de confiance, mais frappons d'abord quelques autres choses:

A) Communiquez la charge d'extension à:

[extensions]
notify=

La partie HGEXT n'est plus nécessaire, mais ne fait pas de mal. Donner le chemin complet vers l'extension est plus fragile dans le cas des futures mises à jour. Le brut notify= La syntaxe est suffisante pour les extensions qui viennent avec le mercuriel et le fait toujours.

B) changer le test = false à test = true Cela vous aidera à déboguer - il envoie l'e-mail à STDOUT, ce qui est pratique.

D'accord, ces deux-là, regardons la confiance. Le système de confiance de Mercurial est construit autour de l'idée que non plus quiconque devrait être en mesure de vous faire exécuter du code. Imaginez si votre repo .hg/hgrc Le fichier avait une section dedans comme:

[hooks]
pre-push = rm -rf ~

Quand j'y suis poussé, il supprime mon répertoire d'origine. Cela me dresserait. Pour éviter que Mercurial ne se produise unique [trusted] sections ton HGRC. Lorsque vous poussez SSH, vous vous connectez effectivement à la machine distante et c'est le vôtre ~/.hgrc Cela indique probablement quels autres fichiers HGRC que vous êtes prêt à exécuter.

HTTP est cependant spécial. Même si vous vous authentifiez, vous ne faites probablement pas de mercurial sur le système distant en tant que vous-même. C'est probablement un utilisateur non utilisateur comme www-data, www, apache, ou personne en fonction de la configuration de votre serveur Web, donc ... vous devez faire ce repo .hg/hgrc' owned (or group-owned) by an user (or group) that the webserver user trusts. To achieve that you can eitherchwownthe.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 ade confianceblock saying that the web server user trusts whomever it is that owns the repo'sFichier .hg / hgrc`.

Si j'ai raison sur ce qui se passe, le signe Tell Tale serait dans le journal des erreurs de votre serveur Web où vous verriez beaucoup de messages comme "Not Trusting /path/to/repo/.hg/hgrc appartenant à SomeUser".

Tl; dr: Assurez-vous que votre utilisateur de votre serveur Web fait confiance (au sens HGRC) le propriétaire du .hg/hgrc Cela spécifie le crochet.

Autres conseils

Cela a fonctionné pour moi lors de la communication avec un serveur Exchange:

[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>

Mettez ce qui précède dans le fichier HGRC dans votre référentiel.

par exemple C: Repositories test.hg hgrc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top