2 Stimmen

Ist es möglich, einen funktionierenden Baum in einem bloßen Git Repo zu erhalten?

Ich verwende derzeit Gitolite, und in meinem Post-Receive-Hook schiebe ich auf einen (lokalen) Mirror, wenn alle eingehenden Commits auf Master sind.

Die Sache ist die, dass Mirror gibt es nur, weil ich die Bereitstellung und das Testen von Pushs auf Master automatisieren möchte: Ich kann nicht auf die Indexdateien in der work.git also schiebe ich eine nicht-blanke work Repo, um einen funktionierenden Baum zu erhalten, und führen Sie einen völlig separaten Post-Receive-Hook aus.

Ich habe zwei Probleme mit diesem Ansatz:

  1. Es fühlt sich dumm an
  2. Wenn Tests fehlschlagen, erhalte ich E-Mails, die mich benachrichtigen, anstatt eine abgelehnte Übergabe. (Das ist eigentlich kein großes Problem, was die Häufigkeit angeht, ich mag es nur nicht).

Was ist die Standardmethode, um damit umzugehen?

1voto

Cascabel Punkte 449595

Das ist nicht dumm. Bare Repositories heißen nicht umsonst bare. (Ich nehme an, das ist es, was Sie mit "raw" meinen.)

Um Ihre eigentliche Frage zu beantworten, sollten Sie einen Schritt zurücktreten und sich fragen, was Sie eigentlich erreichen wollen. Wollen Sie einen übergeben. ? Commits sind lokal und haben nichts mit dem Push-Verfahren zu tun. Sie müssen also die automatisierten Tests selbst durchführen, entweder in einem Pre-Commit-Hook oder manuell. Möchten Sie einen Push ablehnen? Beitrag -Receive (oder Post-Update) ist dafür zu spät, aber wenn Sie es wirklich wollten, könnten Sie die Tests in einem vor -Empfangshaken (oder Aktualisierungshaken). Ich vermute allerdings, dass dies eine schlechte Idee ist: Tests brauchen Zeit, und ich bin mir nicht sicher, ob Sie wirklich warten wollen, während Ihr Push hängt, bis die Tests beendet sind. (Die Sache mit den getrennten Repositories ist nicht wirklich relevant - der Hook führt einige Befehle aus, und ob sie nun ein anderes Repository betreffen oder nicht, sie müssen beendet werden, bevor der Hook beendet wird).

Aber vielleicht wäre ein nachhaltigerer Arbeitsablauf: Push zu einem Pre-Master-Zweig, lassen Sie die automatisierten Tests gehen, und wenn sie vollständig automatisch in den Master-Zweig übertragen. Wenn die Tests fehlschlagen, wird der Master-Zweig nicht aktualisiert, und Sie können Ihre E-Mail abrufen und es überprüfen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X