-
LAST_MOVED foi movido pela última vez por confirmação. no começo é 0, depois aumentará.
-
obter lista de confirmações:
svn log -q -r $LAST_MOVED:HEAD | grep -o ^r[0-9]*
isso produzirá algo como
r10
r12
r16
r22 -
para cada REVISÃO você precisa obter o diff:
svn diff -c $REVISION
> $ REVISION.diffe envie a mensagem:
svn log -c $REVISION | tail -n -2 | head -n -1
> $ REVISION.txtvocê terá:
r10.diff
r10.txt
r12.diff
r12.txt
r16.diff
r16.txt
r22.diff
r22.txt -
obtenha esses arquivos para segmentar a máquina,
-
execute
svn update
-
para cada
r*.diff
er*.txt
arquivos executados:-
patch -p0 -i r{number}.diff
-
svn commit -a -m --file r{number}.txt
-
Existe um problema que o svn não difere dados binários , portanto, quaisquer dados binários não serão transferidos usando este método. Para cada arquivo binário você irá obter:
Index: caminho / para / file / something.jar
================================================== =================
Não é possível exibir: arquivo marcado como um tipo binário.
svn: mime-type = application / octet-stream
Você deve detectar essa string em arquivos diff e para esses arquivos você pode usar o comando diff externo descrito no link