2015-09-21 17 views
8

Utilizzo Visual Studio 2015 e il client Microsoft Git. Sto incontrando alcuni problemi con la cronologia di visualizzazione e le annotazioni con gli strumenti perché Visual Studio non sembra gestire i nomi dei file durante la visualizzazione della cronologia git. C'è un buon modo per aggirare questo?Visual Studio: visualizza la cronologia completa del commit git (inclusi i nomi)

BTW: Ho provato ad utilizzare il toolbutton "Mostra cronologia completa" nel visualizzatore storia, ma ancora non ha in realtà mostrano la storia con rinomina

Ecco cosa ho fatto per prova:

  1. In Visual Studio, ho fatto clic con il pulsante destro del mouse sul file e selezionato "Visualizza cronologia". (ha mostrato solo 4 commit)
  2. Nella finestra Cronologia, ho fatto clic su "Mostra cronologia completa", sempre gli stessi 4 commit.
  3. Dalla riga di comando git, ho eseguito git log --follow TheFile.cs (ha prodotto 13 commit)
  4. In Atlassian Source Tree, ho estratto il log del file e ho controllato "Segui file rinominati". " opzione. Ha tirato lo stesso 13 commit come linea di comando.

Quello che voglio veramente è avere un'opzione in Visual Studio che corrisponda. È possibile?

+1

Hitter anche questo problema. In un commit ho rinominato 1300+ file, molti sono visti come rinomati da Visual Studio e hanno la cronologia file corrispondente mostrata, ma una buona parte non lo sono. L'interfaccia utente dello studio visivo nasconde alcune delle più brutte verruche di git, vale a dire diffide revisioni di file tra i vari nomi, quindi è un peccato che a volte non funzioni. Posso ancora fare il diff attraverso la riga di comando, ma richiede di specificare le revisioni, il percorso prima e dopo e di regolare manualmente la metrica di similarità su 0 in modo che funzioni in modo affidabile! Vedere la seconda risposta su http://stackoverflow.com/questions/7759193/git-diff-renamed-file – aggieNick02

risposta

5

Visual Studio fa segue la cronologia tra due commit per determinare se un file viene rinominato. Qui, ho rinominato un singolo file dal suo nome originale per renamed, e ha fatto un cambiamento per il contenuto allo stesso tempo:

File History

Tuttavia, Git non rilevare le modifiche tra due commit - invece, confronta le istantanee dei commit per determinare come sono cambiati i file. Pertanto, non vi sono informazioni sulla ridenominazione nella cronologia del repository. Invece, questo viene calcolato confrontando il file nel commit originale con il file nel commit successivo. Se sono abbastanza simili, allora Git lo riterrà un rinominare.

Poiché si tratta di un euristico, non è garantito che questo sarà considerato come un rinominare. Tuttavia, Visual Studio e Git per Windows dovrebbero concordare su queste cose, in generale,. Sarei curioso di sapere perché uno lo segnala come rinominato e l'altro no. Ci sono due possibilità:

  1. Questo file è molto vicino al bordo di somiglianza - per esempio, Git ha deciso che le due revisioni sono 61% simili tra loro e sono quindi una ridenominazione, mentre Visual Studio ha deciso che la due revisioni sono solo il 59% simili, e quindi sono non un rinominare.
  2. C'è qualche bug qui dove Visual Studio non sta calcolando correttamente la similarità. Se dovessi indovinare, immagino che ci sia un problema di fine riga o di spazio, perché questo è sempre un problema in Git.

Se si è in grado di condividere le due revisioni di questo file, l'apertura di un bug di connessione o l'invio di e-mail direttamente a me potrebbe aiutare a indagare ulteriormente.

+0

Ciao Edward: Ho paura che la politica aziendale non mi consenta di condividere nessuno dei nostri codici sorgente. L'uso dell'opzione --follow nella riga di comando git mi dà le versioni che mi aspettavo e la versione più vecchia che posso vedere dalla linea cmd differisce parecchio dalla versione più vecchia che VS mostra. La più vecchia, con la seguente l'opzione ha solo 21 linee. Il più vecchio che Visual Studio mostra ha circa 100 linee. Ho riscontrato questo problema mentre stavamo preparando la migrazione da svn a git. Guardando la cronologia SVN, sembra che la directory sia stata rinominata, e questo è il rev più vecchio in VS. – JMarsch

+0

Per quello che vale, sembra che VS veda alcuni dei rinomini - quando stavo ricercando la migrazione, ho appreso come cambiano le tracce git, e sono rimasto piacevolmente sorpreso nel vedere i nomi delle maniglie VS nei miei test. Questa constatazione sopra è una specie di cattura dell'11 ° ora. Vado a vedere se riesco davvero a rintracciare i nomi delle directory. – JMarsch

+0

La mia ipotesi è che VS non includa "--follow" come argomento. Ho eseguito un refactoring piuttosto ampio del codice base. Fuori VS posso vedere la cronologia usando "--follow". Ma VS si fermerà categoricamente al "rinominare commit". –

Problemi correlati