Skip to content

Instantly share code, notes, and snippets.

@approximatenumber
Created September 13, 2018 14:01
Show Gist options
  • Save approximatenumber/40cc6377027ea921ccc307a52d3ef4ee to your computer and use it in GitHub Desktop.
Save approximatenumber/40cc6377027ea921ccc307a52d3ef4ee to your computer and use it in GitHub Desktop.
Another way to dump amd load path of SVN repo: creating empty repo, commiting needed commits and update props
#!/bin/bash
# set empty repo with enabled pre-revprop-change hook
# set first last revisions to dump and migrate
first_rev='1'
last_rev='15'
# range of revisions of old repo to migrate
revs="$(svn log -q -r$first_rev:$last_rev | grep -oE '^r[0-9]+' | tr -d 'r' | sort -n)"
# working copy of empty repo where old revisions will be moved
empty_repo='../empty_repo/'
new_rev=1
for rev in $revs; do
svn up -r$rev --force
commit_msg=$(svn log -r$rev | sed '4!d')
commit_author=$(svn log -r$rev | sed '2 !d' | cut -d'|' -f2)
commit_date=$(date -u +"%Y-%m-%dT%H:%M:%S.000000Z" -d "$(LANG=C svn info | grep 'Date' | cut -d' ' -f4-8)")
echo "* Commit info to migrate: $commit_author | $date | $commit_msg"
rsync -av --exclude=".svn/" ./ "$empty_repo"
pushd "$empty_repo"
svn add . --force
svn commit -m "$commit_msg"
svn propset --revprop -r$new_rev svn:author $commit_author
svn propset --revprop -r$new_rev svn:date $commit_date
popd
let new_rev+=1
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment