Examining History in Subversion
Your Subversion repository is like a time machine. It keeps a record of every change ever committed and allows you to explore this history by examining previous versions of files and directories as well as the metadata that accompanies them.
Several commands can provide you with historical data from the repository:
- svn log
- Shows you broad information: log messages with date and author information attached to revisions and which paths changed in each revision
- svn diff
- Shows line-level details of a particular change
- svn cat
- Retrieves a file as it existed in a particular revision number and displays it on your screen
- svn list
- Displays the files in a directory for any given revision
Basic Work Cycle in Subversion (SVN)
Subversion has numerous features, options, bells, and whistles, but on a day-to-day basis, odds are that you will use only a few of them. In this artile, we’ll run through the most common things that you might find yourself doing with Subversion in the course of a day’s work.
The typical work cycle looks like this:
- Update your working copy.
- Make changes.
- svn add
- svn delete
- svn copy
- svn move
- Examine your changes.
- Possibly undo some changes.
- Resolve conflicts (merge others’ changes).
- Commit your changes.
Subversion, once installed, has a number of different pieces. The following is a quick overview of what you get. Don’t be alarmed if the brief descriptions leave you scratching your head—plenty more pages in this book are devoted to alleviating that confusion.
- The command-line client program
- A program for reporting the state (in terms of revisions of the items present) of a working copy
- A tool for directly inspecting a Subversion repository
- A tool for creating, tweaking, or repairing a Subversion repository
- A plug-in module for the Apache HTTP Server, used to make your repository available to others over a network
- A custom standalone server program, runnable as a daemon process or invokable by SSH; another way to make your repository available to others over a network.
- A program for filtering Subversion repository dump streams
- A program for incrementally mirroring one repository to another over a network