In an ideal world, you only ever work on one thing at a time, and your
working copy contains only one set of logical changes. OK, back to reality.
It often happens that you have to work on several unrelated tasks at once,
and when you look in the commit dialog, all the changes are mixed in together.
The changelist feature helps you group files together,
making it easier to see what you are doing. Of course this can only work if
the changes do not overlap. If two different tasks affect the same file, there
is no way to separate the changes.
You can see changelists in several places, but the most important ones are
the commit dialog and the check-for-modifications dialog. Let's start
in the check-for-modifications dialog after you have worked on several
features and many files. When you first open the dialog, all the changed
files are listed together. Suppose you now want to organise things and
group those files according to feature.
Select one or more files and use
→
to add an item to a changelist. Initially there will be no changelists,
so the first time you do this you will create a new changelist.
Give it name which describes what you are using it for, and click
OK. The dialog will now change to show
groups of items.
Once you have created a changelist you can drag and drop items into it,
either from another changelist, or from Windows Explorer. Dragging from
Explorer can be useful as it allows you to add items to a changelist
before the file is modified. You could do that from the check-for-modifications
dialog, but only by displaying all unmodified files.
In the commit dialog you can see those same files, grouped by changelist.
Apart from giving an immediate visual indication of groupings, you can
also use the group headings to select which files to commit.
On XP, there is a context menu when you right click on a group heading
which gives you the choice to check or uncheck all group entries. On Vista however
the context menu is not necessary. Click on the group header to select all
entries, then check one of the selected entries to check all.
TortoiseSVN reserves one changelist name for its own use, namely
ignore-on-commit
. This is used to mark versioned
files which you almost never want to commit even though they have local
changes. This feature is described in Section 4.4.3, “Excluding Items from the Commit List”.
When you commit files belonging to a changelist then normally you would expect
that the changelist membership is no longer needed. So by default, files are
removed from changelists automatically on commit. If you wish to retain the
file in its changelist, use the Keep changelists
checkbox at the bottom of the commit dialog.
| Tip |
---|
Changelists are purely a local client feature. Creating and removing
changelists will not affect the repository, nor anyone else's working
copy. They are simply a convenient way for you to organise your files.
|