On 03/27/2017 10:08 AM, Andrew Reedick wrote:
From: horst.schl...@gmx.de [mailto:horst.schl...@gmx.de]
Sent: Friday, March 24, 2017 4:04 PM
To: users@subversion.apache.org
Subject: How to checkout only the changes
Is there a way to export only the changes, that occured in a specific revision?
Like export or checkout only the added or modified files in their respective
paths? Deletions and cheap copies cannot be treated that way, obviously. Please
CC as I am not subscribed.
FYI, 'svn copy' counts as an Add. That may or may not be a concern?
Mostly Untested But Seems to Work in the Average Case(tm), so user beware:
#!/bin/bash
# usage: foo.sh 1234 http://svn_server/repo_name
REV=$1
SVNREPO=$2
svn log -qv -r $REV $SVNREPO
# Yes we're grepping on XML because :laziness:
# And we're using perl because I can't be bothered with sed/awk subtleties
svn log -qv --xml -r $REV "$SVNREPO" | perl -ne 'chomp; $a=1 if /^ action="[AD]"/; print "$1\n" if ( $a
&& /^ kind="file">(.*)<\/path>/ ); $a=0 if /<\/path>/;' | while read i
do
D=./`dirname "$i"`
mkdir -p "$D"
svn export --force "$SVNREPO/$i@$REV" "$D/"
done
The script just drops to the shell with exit code 0. My perl knowledge
is very limited, but to debug I executed this
$ echo "action=\"A\">/trunk/text.txt</path>" | perl -ne 'chomp; $a=1 if
/^ action="[AD]"/; print "$1\n" if ( $a && /^ kind="file">(.*)<\/path>/
); $a=0 if /<\/path>/;'
I assume that is supposed to do something but for me it just drops to
the shell with exit code 0.