List all history

= How Do I List All History? =

Listing all changes in the entire history of the repository isn't a terribly common task. But it's easy to understand and easy to do with most systems, and also starts to hint at the philosophical differences between the different VC systems.

CVS
From a working directory:

cvs log

shows all history of all files in and under that directory across all branches. For a whole-project view, obviously, you should run that command from your top-level working directory.

If you don't have a working directory:

cvs -d rlog

will give you the same information. (As always with CVS commands outside of a working directory, you don't need to supply -d if you have $CVSROOT set to the right repository.)

git
By default, git-log only shows you the history of the current branch. (That's not quite the same as showing commits on the current branch: see recipe List history on branch for details.) To see commits on all branches, both local and remote (?):

git-log --all

Subversion
Like git-log, svn log only shows the history of the current branch. It appears that the only way to change this is to "step outside" of your working directory and supply the root URL of the repository (i.e. the parent of trunk, branches, and tags):

svn log <repo-url>

Of course, when you supply a repository URL, Subversion doesn't care if you're in a working directory or not, so this is more analogous to cvs rlog </tt> than it is to git-log --all</tt>.

Having to supply the full URL for this operation is mildly annoying, but it highlight's one of Subversion's nicer features, namely that many commands operate quite happily without a working directory. All you have to do is provide an absolute repository URL instead of a relative path.