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

  • From: Daniele Pizzolli <ors@xxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Thu, 06 Oct 2011 21:47:56 +0200

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...

Buona serata,
Daniele
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: