2016-01-09 16 views
5

Die receive.denyCurrentBranchconfig option steuert, was passiert, wenn Sie zu einem Repo-Zweig drücken, der Kasse ist.Wie interagiert `receive.denyCurrentBranch = updateInstead` mit dem Index?

Standardmäßig wird es abgelehnt (weshalb Sie in der Regel nur auf leere Repos zugreifen, die keine Checkout-Filialen haben).

Es kann über ignore oder warn deaktiviert werden.

Eine andere Option ist updateInstead.

Was das bedeutet ist, dass, wenn die HEAD und Arbeitsverzeichnis gleich ist, und der Zweig geschoben ist HEAD sowohl das Arbeitsverzeichnis und der Zweig/HEAD zur gleichen Zeit aktualisiert werden.

Wenn sich das Arbeitsverzeichnis von HEAD unterscheidet, wird der Push abgelehnt.
Dies ist nützlich, um auf Webserver zu schieben, for example.

Meine Frage ist, interagiert diese Option mit der Index überhaupt?

Wird der Index aktualisiert? Was passiert, wenn HEAD und das Arbeitsverzeichnis übereinstimmen, aber nicht Index?

Antwort

5

Wird der Index aktualisiert? Was passiert, wenn HEAD und das Arbeitsverzeichnis übereinstimmen, aber nicht Index?

Commit 0855331 (git 2.4.0-rc0, Dec. 2014) heißt es eindeutig:

Wenn receive.denyCurrentBranch-updateInstead gesetzt ist, ein Push dass versucht, den Zweig zu aktualisieren, die derzeit angenommen wird nur ausgecheckt ist, wenn der Index und der Arbeits Baum genau entspricht dem aktuell ausgecheckten Commit. In diesem Fall werden der Index und der Arbeitsbaum aktualisiert, um dem Push Commit zu entsprechen.
Andernfalls wird der Push abgelehnt.

Obwohl das gleiche Commit die push-to-checkout Haken eingeführt.

Dieser Hook kann verwendet werden, um diese "Push-to-Deploy" -Logik anzupassen.
Der Hook empfängt das Commit, mit dem die Spitze des aktuellen Zweigs aktualisiert wird, und kann entscheiden, welche Art von lokalen Änderungen akzeptabel sind und wie der Index und der Arbeitsbaum aktualisiert werden, damit sie mit der aktualisierten Spitze des aktuellen übereinstimmen Zweig.

Das gibt ein bisschen Flexibilität in Bezug auf den Index.


Commit 1a51b52, git 2.4.0-rc2, Apr 2015 sagt er wieder:

receive.denycurrentbranch-updateinstead Einstellung und in den aktuellen Zweig gedrückt wird, wenn der Arbeits Baum und der Index wirklich sauber ist, wird soll die Arbeits Baum zurücksetzen und der Index der Baum der Push-Commit übereinstimmen.