[Linuxtrent] Re: Estrazione versioni da git (via Python ?)

  • From: Marco Ciampa <ciampix@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sun, 9 Oct 2011 15:10:40 +0200

On Thu, Oct 06, 2011 at 09:47:56PM +0200, Daniele Pizzolli wrote:
> On 10/06/2011 06:07 PM, manini wrote:
> >
> >Ciao a tutti,
> 
> Ciao,
> 
> >Il problema è che io vorrei poter stampare (in pretty print e
> >automaticamente) tutte le varie versioni su PDF (di solito separati).
> >Per il pretty print non c'è problema (enscript e ps2pdf) ma non so
> >come estrarre le versioni.  Esempio: la soluzione dell'esercizio sta
> >nel file foo.py, di cui ho prodotto quattro versioni (quattro commit
> >in git) e vorrei estrarle (git show?) una alla volta chiamandole (per
> >esempio) foo-1.py ... foo-4.py, così poi con qualche riga di makefile
> >metto a posto tutto.
> 
> Ehm, secondo me, il tuo è un abuso del sistema.
> È vero che con git si può sempre riscrivere la storia, ma se trovassi
> un errore nella vesione 1? Come lo correggeresti senza rompere il
> tuo modo di estrarre le /versioni/?
> 
> Trova un modo comodo di nominare le versioni e basati su quello,
> mi sembra che lo hai già, a dire il vero...
> 
> >Qualcuno ha un esempio dei comandi da usare (ho visto che esiste un
> >"git show master~x:foo.py")?  Va bene sia un esempio diretto in git o,
> >meglio, in gitpython.
> 
> Al limite se vuoi il diff fra le versioni ti basta un piccolo script.
> 
> $ for i in 1 2 3 4; do echo $i > file-$i.txt; done;
> $ LAST=$(find | sort -n | tail -n 1 | sed -e s/[^0-9]//g)
> $ for i in $(seq 2 $LAST); do diff -Nu file-$((i--)).txt file-${i}.txt; done
> 
> Manca qualche check (almeno 2 file...) e in python sicuramente viene
> più elegante! ;-)
> 
> Se hai cura di passare da file-1.txt a file-2.txt in questo modo:
> cp file-1.txt file-2.txt
> git add file-2.txt
> git commit -m 'any message, maybe use copy' file-2.txt
> $EDITOR file-2.txt
> $ git add file-2.txt
> $ git commit -m 'version 2 for file' file-2.txt
> 
> Poi git fa il guessing e correttamente trova che il file 2 viene da una
> copia di 1 se si usa git log --follow file-2.txt
> 
> Esiste anche un opzione per farglielo fare in automatico (è facile
> trovarla).
> 
> Non credo però questo sia ricorsivo, cioè risolve anche che 3 viene da
> 2 che viene da 1... o se sei costretto a passare da 2 a 1 di nuovo con
> un altro comando.
> 
> Poi appunto è un guessing a posteriori che immagino abbia i suoi
> problemi di prestazioni, ma penso che per progetti di medie dimensioni
> sia ragionevole, ma questo, è sua volta un mio guessing...
> 
> Spero di averti convinto, o per lo meno messo qualche dubbio...

Accidenti a voi!

Non ho capito né il problema né la risposta. Mi sa che sto
invecchiando veramente...

Se non mi sbaglio Luca prende per presupposto che stia utilizzando Git
con una storia lineare perfetta. Ma se, tornando indietro scopri che una
data versione ha due genitori (effetto di un merge o rebase) che fai?

Altro dubbio: se nel commit ha cambiato altre cose ma il file suddetto
non cambia, seguendo la crononogia del file avrai dei buchi... che fai?

Ho capito bene o non ho capito niente?

-- 


Marco Ciampa

+--------------------+
| Linux User  #78271 |
| FSFE fellow   #364 |
+--------------------+
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: