Subversion branching and tagging is basically copying from one repository directory to another.
This is an example of creating a branch from the trunk.
$ svn copy svn+ssh://email@example.com/home/fkim/svn/foo/trunk svn+ssh://firstname.lastname@example.org/home/fkim/svn/foo/branches/stable
This is an example of tagging the trunk.
$ svn copy svn+ssh://email@example.com/home/fkim/svn/foo/trunk svn+ssh://firstname.lastname@example.org/home/fkim/svn/foo/tags/2012-03-06
To compare branches you can simply do something like this svn diff [path] [path]. For example:
$ svn diff http://foo.com/branches/stable http://foo.com/trunk.
To merge from a branch to the trunk you can use svn merge like this. Note that you need to have the trunk checked out.
$ cd trunk $ svn merge -r 3:4 svn+ssh://email@example.com/home/fkim/svn/foo/branches/stable/doc/html doc/html
To merge from the trunk to the branch you can try something like this.
$ cd branches/stable $ svn merge svn+ssh://firstname.lastname@example.org/home/fkim/svn/foo/trunk
You may want to use the --dry-run option when you first run the merge to see how it will go. There might be a lot of conflicts.