[Linux-Biella] hg vs git spiegatemi

PaulTT paultt a bilug.linux.it
Ven 18 Nov 2011 12:57:22 CET


On 18/11/2011 10:09, Daniele Segato 說:
> 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'"

:D
quindi titor era un delfino? interessante :D
a parte gli scherzi, credo di aver capito meglio
quello che non capisco e' come non lo so negli altri posti, lo 
spostamento deve esser fatto con un commit, quindi quel commit lo vedo 
cmq, no?
cioe', a parte la modifica di titor, ti dice anche quelle prima a ritroso?

> 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
very cool indeed :)

-- 
Stallman's Law: under corporatocracy, every advance in technology
is an opportunity for corporations to reduce, in practice,
the rights of human beings.



Maggiori informazioni sulla lista Linux