|
Version Control with Subversion - Subversion in Action - How Working Copies Track the Repository
How Working Copies Track the Repository
For each file in a working directory, Subversion records
two essential pieces of information in the
.svn/ administrative area:
-
what revision your working file is based on (this is
called the file's working
revision), and
-
a timestamp recording when the local copy was last
updated by the repository.
Given this information, by talking to the repository,
Subversion can tell which of the following four states a
working file is in:
-
Unchanged, and current
-
The file is unchanged in the working directory, and
no changes to that file have been committed to the
repository since its working revision. An
svn
commit
of the file will do nothing, and an
svn update
of the file will do
nothing.
-
Locally changed, and current
-
The file has been changed in the working directory,
and no changes to that file have been committed to the
repository since its base revision. There are local
changes that have not been committed to the repository,
thus an
svn commit
of the file will
succeed in publishing your changes, and an
svn
update
of the file will do nothing.
-
Unchanged, and out-of-date
-
The file has not been changed in the working
directory, but it has been changed in the repository.
The file should eventually be updated, to make it
current with the public revision. An
svn
commit
of the file will do nothing, and an
svn update
of the file will fold the
latest changes into your working copy.
-
Locally changed, and out-of-date
-
The file has been changed both in the working
directory, and in the repository. An
svn
commit
of the file will fail with an
“out-of-date” error. The file should be
updated first; an
svn update
command
will attempt to merge the public changes with the local
changes. If Subversion can't complete the merge in a
plausible way automatically, it leaves it to the user to
resolve the conflict.
This may sound like a lot to keep track of, but the
svn status
command will show you the state
of any item in your working copy. For more information on
that command, see
the section called “
svn status
”.
[an error occurred while processing this directive]
|
|