2013-07-22 20 views
5

Voglio inviare un singolo commit a Gerrit senza influire su altri commit nello stesso ramo dell'argomento. Sfortunatamente non ho un'istanza di test di Gerrit per sperimentare.Flusso di lavoro Gerrit: push single commit sul ramo argomento

Scenario: Ho contribuito a un argomento nel progetto, che è in revisione, e altri sviluppatori hanno aggiornato parti di esso. Ora desidero apportare modifiche ai loro aggiornamenti.

Per eseguire questa operazione, inserisco le modifiche dell'altro sviluppatore nel commit che desidero modificare, eseguo un rebase interattivo localmente per apportare le mie modifiche, quindi spingo su Gerrit, assicurandomi che l'ID di modifica sia sempre lo stesso. Questo aggiunge una nuova versione del file alla patchset per la revisione.

Problema: Quando ho provato a spingere un singolo impegnano a Gerrit, gli altri commit nel tema-ramo inoltre sono stati spinti, sovrascrivere le modifiche da parte di altri sviluppatori.

Ecco la sintassi che ho usato:

git push gerrit 3089c9f56542461dce738a9aa17bb743ed36e038:refs/publish/master/my-topic-branch 

presumo che gli altri commit nel tema-ramo sono stati spinti a causa delle dipendenze create da Gerrit.

Sarebbe questo approccio al lavoro, invece, lasciando fuori il titolo argomento ramo ?:

git push gerrit 3089c9f56542461dce738a9aa17bb743ed36e038:refs/publish/master 

Ho provato questo approccio con successo in precedenza, spingendo per l'insieme di modifiche specifiche:

git push gerrit a95cc0dcd7a8fd3e70b1243aa466a96de08ae731:refs/changes/12345 

Tuttavia, nel provare questo di nuovo sto ottenendo un errore di disimballo:

error: unpack failed: error Missing tree 9172313b907b160d15e260d5f7d51689f467b858 

Domanda relazionata: Quando tendo le modifiche degli altri sviluppatori da Gerrit, come posso assicurarmi di aver tirato tutti i file forniti nel ramo argomento? Se seleziono la modifica più in alto in Gerrit nel ramo argomento, e uso il comando pull dichiarato in ui web, sembra che alcuni dei file nel ramo dell'argomento siano aggiornati localmente, ma non tutti. Devo passare attraverso ogni singolo commit nel ramo dell'argomento ed emettere il relativo comando pull?

+0

Forse non ho capito bene la tua domanda. Hai detto che "hai già tirato le loro modifiche (o le hai commesse) e le hai ridimensionate in modo interattivo" ... nel problema che hai citato "sono stati anche spinti altri commit nel ramo dell'argomento" ... Poiché tali cambiamenti sono già presenti ... perché dovrebbero ti preoccupi? o volevi dire che gli altri tuoi cambiamenti sono stati spinti? – Vikram

+0

Il problema è che quando estraggo le modifiche da quel particolare commit, che è l'unico che voglio modificare, non tutti i miei file locali, che fanno parte di quel topic-branch, vengono aggiornati. Vedi la sezione "Domanda correlata". Quindi, quando spingo il commit modificato e gli altri commit nel ramo dell'argomento vengono anche spinti, sono spesso più vecchi di quelli attuali su Gerrit e sovrascrivono le modifiche apportate da altri sviluppatori. – Lemmy

+0

Per quanto riguarda la sezione Domande correlate: Per essere sicuri che tutti i file siano stati trasferiti per argomento, inizia dal 'patchset 1' o' patchset n' se sei sicuro di avere tutti i file necessari. Esegui un 'git pull --rebase ref/cambiamenti/#/#/patch #' a partire dalla prossima patch fino al patchset più recente. Dopo aver rideterminato tutte le patchsets.it è importante schiacciare i commit. stranamente 'git status' può o non può mostrare alcun commit localizzato localmente. – Vikram

risposta

1

Non conosco i comandi di mano, ma sarebbe qualcosa di simile:

  1. Fai nuovo ramo del ramo argomento
  2. Unire il commit che si desidera aggiungere al ramo argomento in questo nuova filiale
  3. Spingere l'unione appena creato per Gerrit
Problemi correlati