[Linux-Biella] hg vs git spiegatemi

Daniele Segato daniele.bilug a gmail.com
Ven 18 Nov 2011 10:09:05 CET


On Thu, 2011-11-17 at 12:36 +0100, PaulTT wrote:
> > A me risulta che hg non abbia in equivalente di git blame -M -C,
> > cioè che non sia in grado di tracciare pezzi di codice copiati o
> > spostati.
> io continuo a non capire, saro' gnucco io.....
> stai dicendo che blam mi dice:
> il commit, poniamo di aver copiato nel file ciao.c 10 righe
> e
> tutti gli eventuali commit di quelle 10 righe nel precedente file
> addio.c?
> 
> non capisco mica D:


la risposta alla domanda: "qual'è il commit in cui è stata modificata la
riga 123?"

TUTTI i tool di versionamento rispondono fornendo l'ultimo commit a cui
è stata modificata


SOLO git è in grado di dirti se quella riga era stata scritta in realtà
in un altro commit e poi "copiata / spostata" in quel punto
successivamente



e l'esempio che ti faccio lo ripeto:



devo lavorare su una parte di codice e mi occorre modificarla ma trovo
qualcosa di incomprensibile e voglio sapere questa riga di codice perché
(o da chi) è stata scritta, come se hai qualcosa di questo tipo:

i = 0x5f3759df - (i>>1);


che, per qualche ragione, non si spiega da solo :D


ma la sfiga vuole che Zio Banana, in data X/Y/Z abbia fatto un po' di
refactor spostando il codice qua e là per mettere ordine

così quando faccio un blame/annotation/chiamalocometipare ottengo:

"questa riga è stata introdotta da Zio Banana il X/Y/Z e il commento di
commit è 'sto mettendo ordine nel codice'"

e quindi, chi caspita ha scritto quel pezzetto di codice?
perché?

è merda che posso buttare via o ha senso? magari la devo tenere così o
modificare...



a questo punto con qualunque tool che non sia git sei a piedi (on your
own)


invece git ti dice: "questa riga di codice è stata copiata da Zio Banana
in data X/Y/Z, era originariamente scritta da John Titor nel 4000 dopo
cristo con questa spiegazione: 'nell'anno 3999 un bug causerà la morte
di metà della popolazione mondiale, questo eviterà che accada causando
un semplice errore, per favore non cambiarne il valore, saluti e grazie
per tutto il pesce'"





ps: in realtà quella riga di codice fa parte di un piccolo algoritmo per
calcolare l'inverso della radice quadrata, e la sua storia è anche
particolarmente interessante...
http://www.lomont.org/Math/Papers/2003/InvSqrt.pdf






Maggiori informazioni sulla lista Linux