2012-11-30 15 views
27

Esecuzione di un git commit porta alla seguente uscita:Che cosa significa quando git dice "riscrittura" o "rinomina" in un messaggio di commit?

[[email protected]] git: git commit -a -m "StreamIt instrumentation" 
[master 263410f] StreamIt instrumentation 
62 files changed, 6117 insertions(+), 5748 deletions(-) 
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/cluster/ClusterBackend.java (91%) 
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/cluster/ClusterCodeGenerator.java (95%) 
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/cluster/code/FlatIRToCluster.java (94%) 
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/common/ToCCommon.java (92%) 
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/flatgraph/ScheduledStaticStreamGraph.java (93%) 
rename Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/sir/lowering/fission/{StatelessDuplicate.java => HorizontalFission.java} (98%) 
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/sir/lowering/partition/dynamicprog/DynamicProgPartitioner.java (93%) 
  • Cosa significa git quando si riporta un file come 'riscrittura'?
  • Qual è il significato della percentuale associata?
  • Perché una percentuale è solo associata a queste righe tra le 62 modificate in questo commit?
+0

Credo che tu abbia fatto rebase, vero? –

+0

@OleksandrKravchuk Ho davvero copiato e incollato qui quello che ho fatto: solo git commit –

+0

Sono quei file binari? come in, testo non leggibile? Di solito vedo quel tipo di output quando git confronta i file compilati. –

risposta

30

Git utilizza l'euristica per determinare se una modifica è stata la ridenominazione o la copia di un file e anche se si tratta di una "riscrittura" del file. In parole povere, se il diff tra la vecchia e la nuova versione è più grande della nuova versione stessa, è una "riscrittura".

Questo è sintonizzato per il caso di utilizzo originale di git di modificare i file di origine, spesso apportando modifiche localizzate: poiché si basa su un diff lineare, cose come il rievocare un file sorgente possono attivarlo. Inoltre, poiché è determinato al volo, le opzioni di diff come "-b" e "-w" possono cambiare la valutazione se una modifica è una riscrittura (o una copia o una rinomina).

La percentuale è "indice di dissomiglianza" di Git (in contrapposizione alla percentuale "indice di similarità" per una ridenominazione o la copia). Probabilmente qualcosa come la percentuale di righe nel file che sono cambiate.

+0

Ok, grazie per questa spiegazione. Ho eseguito Ctrl + Shift + F in Eclipse su questo file java, i.e auto formating e di conseguenza i file hanno molti cambiamenti. Le uscite git visualizzano solo i file rewrit e rinominati, non quelli con "piccoli cambiamenti", nel senso che nel mio caso tutte le altre modifiche tra le 62 sono minori? –

+0

sì, quel riepilogo dopo il commit elenca i file che vengono aggiunti, rimossi, rinominati, copiati o riscritti (è l'output di 'git diff --summary HEAD^..'). Quindi le altre modifiche sono modifiche "normali" ai file, non sufficienti per attivare l'euristica di riscrittura. – araqnid

Problemi correlati