2011-10-25 13 views
11

Sto usando gerrit. Ho usato il seguente comandoGerrit che ricrea i change-id

$ cd .git/hooks 
$ scp -P 29418 [email protected]:hooks/commit-msg . 
$ cd ../.. 

Questo aggiunge il cambiamento-id al mio messaggio di commit, se mi modificare ad un commit crea un nuovo cambiamento-id. Così, quando torno a gerrit, non aggiungo il set di patch, ma sta creando una voce di recensione completamente nuova.

Qualche suggerimento, per favore?

Trovato la risposta, ma StackOverflow non mi consente di rispondere alla mia domanda.

Quindi questo è stato un errore completo da parte mia. Quando stavo cercando di impegnarsi git commit --amend -m "Commit iniziale"

ero messa in linea il messaggio di commit e che era asciugandosi il cambiamento-Id, dando così me uno nuovo.

+0

Sei sicuro che il ChangeId è l'ultimo paragrafo del messaggio di commit? Date un'occhiata a: [ChangeId] (http: //gerrit.chromium.org/gerrit/Documentation/user-changeid.html) – vquintans

+0

Mmmm, ho appena finito di leggere la tua domanda :-) e sì, il -m è un errore tipico. – vquintans

risposta

21

commettere-msg lavoro gancio in questo modo:

  1. Verificare se si dispone di cambio-id nel messaggio di commit.
  2. In caso contrario, genera uno.

Se si digita git commit --amend e si modifica il messaggio di commit, si ha ancora il vecchio id di modifica (è buono).

Ma se si digita git commit --amend -m "...." è stato rimosso id di modifica, quindi gerrit ne genera uno nuovo.

Regola di un pollice: Non utilizzare --amend -m con gerrit.

+0

Se lo volessi davvero, si potrebbe scrivere un hook prepar-commit-msg che squircherebbe il changeid e poi lo ricollegherebbe. – forivall

+2

Yikes! trovato troppo tardi :) – mlvljr

+0

--ammend e -m do work ... devi solo ricordarti di un 'git rebase --interactive' prima di spingere - per ripulire le cose. E naturalmente, devi fare in modo di non cambiare l'id di modifica quando lo fai ;-) – GhostCat

1

Se git commit --amend o git commit --amend -m "...." non aiuta e gerrit continua a lamentarsi della mancata modifica-Id. (Questo accade a causa di problemi di rete per lo più)

Ecco come ho ottenuto risolto (fatto in modo che avevo il gancio commettere-msg applicata, sulla directory padre della directory check-out reference):

  1. Conserva le modifiche utilizzando git stash.
  2. Utilizzato gitk & per rebase rigido la modifica al solo commit precedente. enter image description here
  3. Quindi estrarre e rebase da Repo git pull --rebase.
  4. Quindi applicare le modifiche nascoste utilizzando git stash apply, reference. Risolvi conflitti di fusione in caso di utilizzo di git mergetool.
  5. nuovamente impegnati nel cambiamento sempre utilizzando git commit o git commit --amend, questo ha generato un nuovo cambiamento-Id
  6. Spingere le modifiche ramo su repository utilizzando git push ... comando.

C'è domanda simile in giro così for reference