Prskavčí blog

Jan 19, 2009 - Comments

Export poslední revize ze Subversion

Dneska za mnou přišel kolega, že mu vadí na SVN, že neumí exportovat poslední revizi s plnou cestou. Potřebuje to na server kde nemá shell aby mohl spustit patch, který si můžeme vygenerovat pomocí svn diff. A nechce všechny soubory jak to standardně dělá svn export, ale jen ty které se změnili.

Trochu jsem se na to díval a myslím si, že řešení přímo jen pomocí SVN není, pokud někdo ví jak to udělat elegantně ať mi dá vědět. Já jsem na to napsal jednoduchý shell skript, který to řeší, třeba to bude někomu také ku prospěchu.

EXPORTPATH=/tmp/testexport/
REPOS=file:///home/prskavecl/repos/project/
REPOSPATH=/home/prskavecl/repos/project/
REV=“$( svnlook youngest $REPOSPATH )”

function to list and export file by file

pathexport() # $1 { mkdir -p $EXPORTPATH${2%/*} svn export –force $1$2 $EXPORTPATH$2 }

make export path

mkdir -p $EXPORTPATH

list all changed files

for i in $( svnlook changed -r $REV $REPOSPATH ); do if [ “${#i}” -gt “2” ] then pathexport $REPOS $i fi done

Na začátku skriptu se nastaví proměnné s cestami. Před svnlook si skript zjistí poslední revizi a projde všechny soubory, které se v revizi změnili. K nim vytvoří příslušné adresáře a vyexportuje jednotlivé soubory. Neměl by být problém napsat obdobný skript i pro windows.

Více o exportu také najdete na svn.prskavec.net.