#!/bin/sh -e BASE_DIR=/opt/svn/checkouts/trunk SVN=${BASE_DIR}/subversion/svn/svn SVNSERVE=${BASE_DIR}/subversion/svnserve/svnserve SVNADMIN=${BASE_DIR}/subversion/svnadmin/svnadmin svnserve_port=$(($RANDOM+1024)) # URL=http://localhost/SOMETHING/repos # URL=svn://localhost:$svnserve_port/repos URL=file:///`pwd`/repos rm -rf repos *-wc import-me ${SVNADMIN} create repos echo "[general]" > repos/conf/svnserve.conf echo "anon-access = write" >> repos/conf/svnserve.conf echo "auth-access = write" >> repos/conf/svnserve.conf svnserve_pid='' clean_exit() { set +e [[ -n "$svnserve_pid" ]] && kill -9 "$svnserve_pid" } trap clean_exit EXIT rm -f .svnserve_pid ${SVNSERVE} --listen-port $svnserve_port --pid-file .svnserve_pid -d -r `pwd` while [[ ! -r .svnserve_pid ]]; do sleep 0.01; done svnserve_pid=`cat .svnserve_pid` echo "### Making a Greek Tree for import..." mkdir import-me mkdir import-me/trunk mkdir import-me/tags mkdir import-me/branches mkdir import-me/trunk/A mkdir import-me/trunk/A/B/ mkdir import-me/trunk/A/C/ mkdir import-me/trunk/A/D/ mkdir import-me/trunk/A/B/E/ mkdir import-me/trunk/A/B/F/ mkdir import-me/trunk/A/D/G/ mkdir import-me/trunk/A/D/H/ echo "This is the file 'iota'." > import-me/trunk/iota echo "This is the file 'A/mu'." > import-me/trunk/A/mu echo "This is the file 'A/B/lambda'." > import-me/trunk/A/B/lambda echo "This is the file 'A/B/E/alpha'." > import-me/trunk/A/B/E/alpha echo "This is the file 'A/B/E/beta'." > import-me/trunk/A/B/E/beta echo "This is the file 'A/D/gamma'." > import-me/trunk/A/D/gamma echo "This is the file 'A/D/G/pi'." > import-me/trunk/A/D/G/pi echo "This is the file 'A/D/G/rho'." > import-me/trunk/A/D/G/rho echo "This is the file 'A/D/G/tau'." > import-me/trunk/A/D/G/tau echo "This is the file 'A/D/H/chi'." > import-me/trunk/A/D/H/chi echo "This is the file 'A/D/H/omega'." > import-me/trunk/A/D/H/omega echo "This is the file 'A/D/H/psi'." > import-me/trunk/A/D/H/psi echo "### Done." echo "" echo "### Importing it..." $SVN mkdir $URL/foo -m "make project-foo" (cd import-me; ${SVN} import -q -m "Initial import." ${URL}/foo) echo "### Done." echo "" echo "### Make a branch off foo/trunk." $SVN cp $URL/foo/trunk $URL/foo/branches/some-branch -m "make branch" echo "### Check out foo trunk." $SVN co $URL/foo/trunk foo-trunk-wc echo "### Check out foo branch." $SVN co $URL/foo/branches/some-branch foo-branch-wc echo "### Delete a file on foo trunk." (cd foo-trunk-wc; $SVN rm iota; $SVN ci -m "delete iota on trunk") echo "### Merge deletion to foo branch." (cd foo-branch-wc; $SVN merge; $SVN ci -m "merge changes from trunk") echo "### Copy all of foo to bar." $SVN cp $URL/foo $URL/bar -m "A new project" echo "### Note that /bar/branches/some-branch has mergeinfo." $SVN pg svn:mergeinfo $URL/bar/branches/some-branch echo "### But sqlite doesn't know about it." echo 'select * from mergeinfo;' | sqlite3 repos/db/indexes.sqlite echo "### Check out some-branch from bar." $SVN co $URL/bar/branches/some-branch bar-branch-wc (cd bar-branch-wc; echo "### Update the branch (not that we changed anything)." $SVN up echo "### Run svn st; note that there are no local mods." $SVN st echo "### But looky here. 'svn mergeinfo .' shows some mergeinfo:" $SVN mergeinfo . echo '### And on the URL? Nothing!' $SVN mergeinfo `$SVN info | grep ^URL: | cut -b 6-`)