Vraag Hoe post-receive-email in te stellen Git hook with Gitolite


ik gebruik post-receive-email haak van de Git-distributie om e-mails naar bepaalde gebruikers te sturen wanneer de Git-repository wordt bijgewerkt (hook wordt aangeroepen vanuit post-receive).

Al mijn opslagplaatsen werden handmatig beheerd. Nu krijg ik zoveel repos en zoveel gebruikers en groepen dat ik moet upgraden naar een Git repository managementsysteem. Ik heb Gitolite uitgekozen.

Maar ik ben een beetje in de problemen bij het configureren van de e-mailmeldingen.

Update: ik zal de vraag een beetje uitwerken:

De eerste vraag is: waar moet ik de haak leggen en moet ik het op de een of andere manier veranderen zodat het met Gitolite zou werken?

Tweede vraag:

De standaard post-receive-email haak hangt af van drie parameters in *.git/config: hooks.envelopesender, hooks.emailprefix en hooks.mailinglist.

Deze parameters zijn in het algemeen verschillend voor elke repository die ik onder Gitolite verplaats. In de praktijk zijn ze hetzelfde voor dezelfde toestemmingsgroepen: gebruikers die toegang hebben tot de repository, meldingen ontvangen, anderen - niet.

Ik wil bewerkingen vermijden config bestand voor elke repository handmatig. Het zou veel leuker zijn als ik alles kon configureren in dezelfde, gecentraliseerde, plaats voor hele Gitolite.

Dus, alle hints?


15
2018-02-20 04:09


oorsprong


antwoorden:


Je kunt naar de doc haak voor starters:

waar zet ik (de beheerder) de haken?

Over het algemeen gaan alle haken naar de hooks/common directory. Alleen de speciale haak na update bedoeld voor de admin repo gaat erin hooks/gitolite-admin.

Maar de GitoliteV3  document over 'spiegelen' biedt een alternatief voor een aangepaste haak.


Voor de tweede vraag:

Ik zou willen vermijden om het configuratiebestand voor elke repository handmatig te bewerken.
  Het zou veel leuker zijn als ik alles kon configureren in dezelfde, gecentraliseerde, plaats voor hele Gitolite.

De doc gitolite.conf is vrij duidelijk:

repo specifieke git config commando's

Soms wilt u opgeven git config instellingen voor sommige van uw repo's.
  U kunt bijvoorbeeld een aangepaste haak na ontvangst hebben die een e-mail verzendt wanneer er een druk plaatsvindt, en deze haak moet weten naar wie de e-mail moet worden verzonden, enzovoort.

U kunt instellen git config waarden door iets als dit te specificeren binnen een "repo" paragraaf:

voorbeeldgebruik: als u een haak heeft geplaatst hooks/common dat vereist configuratie-informatie die specifiek is voor elke repo, je zou dit kunnen doen:

repo gitolite
    config hooks.mailinglist = gitolite-commits@example.tld
    config hooks.emailprefix = "[gitolite] "
    config foo.bar = ""
    config foo.baz =

De syntaxis is eenvoudig:

config sectionname.keyname = [optional value_string]

Dit doet of een simpele "git config section.key value"(voor de eerste 3 voorbeelden hierboven) of"git config --unset-all section.key"(voor het laatste voorbeeld).
  Andere vormen (--add, de value_regex, enz.) worden niet ondersteund.

Opmerking: dit werkt niet tenzij het rc bestand heeft de juiste instellingen; zie reacties rond de variabele $GL_GITCONFIG_KEYS  $GIT_CONFIG_KEYS (nu in GitoliteV3 of 'g3') in gitolite rc het dossier voor details en beveiligingsinformatie.


18
2018-02-21 07:43



op dit moment werkt dit niet:

repo @all
    config foo.bar = "baz"

Ik neem aan dat je zou willen dat het werkt, maar het staat op dit moment een beetje op mijn lijst vanwege andere druk en het feit dat er een oplossing is:

@almostall = repo1 repo2 repo3
@almostall = repo4 repo5 repo6 [add as many more as you like]

[... later ...]
repo @almostall
    config foo.bar = "baz"

Ik hoop dat het helpt, en sorry voor het toezicht op de @all


6
2018-03-03 07:13



Hier is een snelle voering om beschrijvingen toe te voegen aan uw gitolite.conf met dezelfde naam als de repo. Je hebt dit nodig als je deze grote @alternall benadering en gitolite gebruikt, zodat je beschrijvingen hebt voor elke repo. Dit bespaarde me een uur typen, dus moest delen:

Probeer eerst:

sed 's/^\(repo *\)\(.*\)/\1\2\n\t\t\2 = "\2"/' gitolite.conf

Probeer vervolgens met bewerken, maar maak nog steeds een back-up vooraf:

cp gitolite.conf gitolite.conf.backup

Voer de bewerking dan op zijn plaats uit:

sed -i 's/^\(repo *\)\(.*\)/\1\2\n\t\t\2 = "\2"/' gitolite.conf

Proost!


1
2017-08-24 12:34



De gitolite kookboek vertelt hoe haken te configureren:

1. Schakel lokale niet-kernprogramma's in gitolite in

Bewerk het gitolite-configuratiebestand (meestal ~git/.gitolite.rc) en uncomment de volgende lijn:

LOCAL_CODE => "$rc{GL_ADMIN_BASE}/local"

Zorg ervoor dat u de beveiligingswaarschuwingen leest.

2. Schakel repository specifieke hooks in

De opmerkingen verwijderen repo-specific-hooks regel in het gitolite-configuratiebestand.

3. Voeg de e-mailhaak toe

Plaats de corresponderende uitvoerbare haak na afloop van de haak (gebruik ik git-MultiMail) in uw gitolite-admin repository als het bestand /local/hooks/repo-specific/git-multimail.

Vastleggen en duwen.

4. Configureer instellingen voor multimail hook

Voor het toevoegen van configuratiesleutels via het gitolite-configuratiebestand bewerk het gitolite-configuratiebestand ~git/.gitolite.rc en werk de volgende regel bij:

GIT_CONFIG_KEYS => ".*"

Zorg ervoor dat u de beveiligingswaarschuwing leest. Misschien wilt u het beperken tot GIT_CONFIG_KEYS => "multimailhook\..*".

5. Configureer de multimail-e-mailhaak

Dit is een voorbeeldconfiguratie van de gitolite.conf bestand in de gitolite-admin repository:

repo @all
    config multimailhook.environment      = gitolite
    config multimailhook.from             = git@gitserver.com
    config multimailhook.mailinglist      = your@email.com

repo xyz
    option hook.post-receive = git-multimail

Ik besloot om repo-specifieke hooks te gebruiken en deze op te slaan in de gitolite-admin repository. Als alternatief kunt u wereldwijde hooks gebruiken (/local/hooks/common) of sla ze ergens anders op de gitolietserver en -punt op LOCAL_CODE er.


1
2018-02-13 00:28