roll-back to a previous version (e.g. 3421) of a file myfile:
svn up -r 3421 myfile
Create a repository
use the filesystem backend
svnadmin create --fs-type=fsfs PATH
Import a revision
svn import -m "Initial import" Eccos file:///ih/funk/svn/projects
Check out a revision
svn co file:///ih/funk/svn/projects
Dump a repository
svnadmin dump /ih/funk/svn/projects | gzip -9 > dump.gz
svnadmin dump /ih/funk/svn/projects | gzip -9 > `date "+Eccosdump%Y-%m-%d_%H:%M:%S.gz"`
svnadmin dump /ih/funk/svn/projects | gzip -9 > `date "+projects_dump%Y-%m-%d_%H:%M:%S.gz"`
Load contents of a dump into a repository
gunzip -c dump.gz | svnadmin load /data/svn/projects
Import from an existing directory, no need to check it out again
It should work, but you could also check it out right into /etc.
$ svnadmin create /var/svnrepos/admin
$ svn mkdir -m "initial setup" file:///var/svnrepos/admin/trunk
c:> svn mkdir -m "initial setup" file:///c:/fhs/svn_repos/trunk
$ cd /etc
$ svn co file:///var/svnrepos/admin/trunk .
$ svn add passwd group
$ svn commit -m "start loading it in"
I tested the 'svn co' into '.' just now. Works great.
svn propset svn:keywords "LastChangedDate LastChangedRevision Id Author" weather.txt
svn propset svn:keywords "LastChangedDate LastChangedRevision Id" slides.tex
Before an update you could use the following to get the log messages
of the changes:
svn log -rBASE:HEAD
Upgrade to a new subversion version
$ mv repos repos.tmp
$ svnadmin create repos
$ svnadmin-old dump repos.tmp | svnadmin load repos
$ # copy over any hook scripts and stuff from repos.tmp to repos
Checkout from a repository over ssh
svn co svn+ssh://felix/home/reichr/svn_repos/XSteveData/trunk data
Change the path of the repository for a working copy
svn switch --relocate file:///original/path/to/repos file:///new/path
WARNING: this will not work if
file:///original/path/to/repos is not exactly the original URL.
BE sure to check before with svninfo.
Network a repository via svn+ssh:
create the repository on the repository host:
svnadmin create rp1 -- this is located at /home/svtest/rp1
Import data to the repository:
svn import -m"Initial import" svn+ssh://svtest@host/rp1/trunk
Checkout the project:
svn co svn+ssh://svtest@host/home/svtest/rp1/trunk p1
Generate a patch to undo some local changes and redo them later: What
usually happens to me is that I've changed N files in M different >
directories distributed all over the filesystem, and I want to check
in N-1 of them. If I need to commit all but one file, I do this:
% svn diff path/to/file_not_committing > /tmp/patch.txt
% svn revert path/to/file_not_committing
% svn ci -m "committing all the stuff i wanted to"
% patch -p0 < /tmp/patch.txt
Revert is your friend. Learn it, use it, looooooooooove it.
Revert to a previous version
svn co project
<edit foo.c, adding bugs>
svn ci foo.c (commits to r348)
<realize terrible error>
svn merge -r348:347 foo.c
svn ci foo.c (commits 349)
note the ordering of the revision numbers in the merge command. what
this really says is "make a diff between revision 348 and 347, and
apply it immediately to foo.c" if you are trying to revert a
directory tree with moves or deletes in it, and are getting arcane
errors, try the --ignore-ancestry flag.
Edit the commit/log messages after the commit Read chapter 7,
regarding unversioned properties attached to revisions. You want to
change the svn:log property:
$ svn propedit -r N --revprop svn:log URL