2015-01-17 7 views
6

Ergebnis der vielen Suche im Netz ist, dass pre-checkout Hook in Git ist noch nicht implementiert. Der Grund kann sein:Wie erreicht man einen "Pre-Checkout" Hook in Git/Bitbucket?

  • Es gibt keine praktische Verwendung. Ich habe einen Fall
  • Es kann auf andere Weise erreicht werden. Bitte sagen Sie mir wie?
  • Es ist zu schwierig zu implementieren. Ich glaube nicht, das ein triftiger Grund ist

Hier ist mein Problem:

ich die pre-commit, post-merge & post-checkout Haken implementiert haben die Datenbanksicherung für jeden Zweig unterschiedlich zu halten.

Szenario: Jetzt, wenn ich die Sicherung der Datenbank festschreiben wird in einer Datei mit pre-commit Hook gespeichert. Und wenn ich die Filiale oder Zusammenführung auscheckt, wird die in der Datei gespeicherte Datenbank unter Verwendung von post-mergepost-checkout Hooks wiederhergestellt. Jetzt ist die Situation, wenn jemand nach dem Festschreiben und Auschecken Änderungen in der Datenbank vornimmt, sind die Änderungen verloren, da die Datenbank nicht gesichert wurde. Der Checkout ist erfolgreich, da sich die Dateistruktur nicht ändert.

Also in diesem Fall möchte ich einen pre-checkout -Hook, um die Aufgabe der Sicherung der Datenbank im obigen Szenario zu behandeln.

Antwort

0

Ich habe den Grund, warum es nicht implementiert wurde. In meiner Situation sichere ich die Datenbank und speichere sie in einer Datei, die das Auschecken jedes Mal fehlschlägt. Daher ist es nicht praktikabel, diese Funktionalität zu implementieren.

0

Sie könnten ein Skript schreiben, das Ihr Backup dann auscheckt. Erstellen Sie dann einen Shellalias, damit das Skript stattdessen ausgeführt wird, wenn Sie git checkout eingeben.

+0

Können Sie mir ein Beispiel geben? – asachanfbd

0

Pre-Checkout-Anwendungsfall: Löschen Sie nicht versionierte lokale Dateien, die von gulp watch:css generiert wurden, so dass sie nach dem Checkout überschrieben und von gulp neu erstellt werden.

Stattdessen werde ich nur ein Shell-Skript schreiben, das den Repo-Stamm bekommt und dann eine Liste von gulp-generierten Dateien löscht.