La raccolta delle ciliegie potrebbe non essere così veloce, poiché probabilmente sta rilevando i nomi dei nomi come parte della fusione che può essere costosa, specialmente quando si sta selezionando qualcosa che è molto lontano da HEAD.
Può essere che il vostro config Git ha gc.auto = 0
(git config --get gc.auto
), quindi doppio controllo se è abilitato, o semplicemente eseguire:
git gc
al fine di pulizia dei file non necessari e ottimizzare il repository locale.
Si può anche provare a impostare la variabile merge.renamelimit
config per qualcosa di più piccolo (ad esempio 1, dal momento che i mezzi 0 senza limite). Se questo non aiuta, prova a profilare il tuo git (ad esempio usando strace
o perf record git cherry-pick ...
) e trova il collo di bottiglia.
See: cherry-pick is slow
per Merge-ricorsiva, ci sarebbe sempre voglia di calcolare la coppia-saggio rinomina tra ogni lato e l'antenato. In questo modo, la differenza rispetto alla destinazione scelta da sarà sempre un'operazione O (n. Di modifiche tra origine e destinazione) costosa.
Senza la rinomina, è possibile fare meglio sull'effettiva unione con una camminata dell'albero a tre vie . Ad esempio, si vede che un sottoalbero si trova nell'albero A negli alberi-e ancestor
, ma nell'albero B in theirs
.In modo da non avere a scendere ulteriormente, e può solo dire "prendere loro" (beh, avete scendere theirs
per ottenere i valori). Ma mi aspetto che diventa più complicata con le interazioni con l'indice (e non è probabilmente vale la pena spendere molto sforzo sulla causa del problema rename, comunque).
-Peff
Grazie per la risposta, che è di destra. Vedo questa pagina man. tuttavia, come è stato detto, stiamo pianificando di omettere le modifiche che appaiono su altro ramo. Abbiamo altri modi invece di questo? –
Se si usa l'unione invece di cherry-pick, è possibile farlo senza tutto il sovraccarico. – Michael
sì, lo so, ma il codice problema di base non è il nostro lavoro, abbiamo appena recuperiamo i cambiamenti per analizzare la qualità di alcuni dei componenti. non possiamo controllare i comportamenti degli sviluppatori sw. –