Alice in changesets
In our last episode, we discussed the checkin process. Of course, checking in changes isn't the end of the process; it's really just a new beginning. Changesets represent discrete points in time and can be used refer to a specific state of the repository. As such, you use changesets to specify a particular version of files and folders.
From the command line, if we want to see changeset 10, we run h changeset 10
. This brings up the "changeset details" dialog, which looks very similar to the checkin dialog. Since we already exhaustively looked through all the tabs and options here, suffice it to say that all the data is in the same place, only now it's a record of what was checked in. However, we're able to update the checkin comment and checkin notes if we're either the person who checked in originally or a project administrator.
One of the very exciting features of the changeset dialog is the "compare" functionality. For each item, we have the option to compare with the previous version (if it existed before), with the last version we downloaded ("workspace version"), or with the latest version. You can also view an item or get its properties, as seen here.
We should also here elaborate on the fact that since changesets are defined to be atomic, they represent a snapshot in time of the entire repository. Even if a file wasn't changed in a particular changeset, it still has a discrete version that existed when the checkin occurred. Suppose, for example, a file "Progam.cs" was modified in changesets 7 and 14. Running h get Program.cs /version:C10
will get us the most recently changed version of Program.cs before changeset 10 (in this case 7).
As we noted in our discussion of the checkin process, a changeset can be associated with a work item. Suppose, however, that you want to create an association after the initial checkin. You navigate to the particular bug, task, etc, and then go to the "Links" tab. From here, you can link to a changeset. What if you don't know the changeset number offhand? We'll get to that in a moment.
Let's say you're trying to "Get specific version..." on a file or folder from within Visual Studio. Choose "Changeset" in the "version" dropdown, and then you can enter or search for a changeset number. Also, you can apply a label to an item as of a particular changeset number.
Searching for changesets brings up the "Find Changeset" dialog. In this dialog, we can search with several different options. We can specify a particular file or directory (wildcards allowed), particular users, and then search for all matching, only those between two changesets, or only those between two dates (inclusive). For example, we could do this or we could try this. In this dialog, we can resort the results as well as get details on the individual changesets.
That's all for now. Tune in next time, (hopefully not too far in the future) when we delve into the history command!
Comments
- Anonymous
April 14, 2005
Visual Studio Team System
I’ve kicked-off a series of posts that I’ve dubbed “A Hitchhiker’s... - Anonymous
April 15, 2005
A follow-up question from my most recent post- How often do you think you'll want to edit the comments... - Anonymous
June 20, 2005
Very interesting article. One question though,
is there a way to compare two changesets or labels (2 different states of the repository) to obtain only the files that were changed in between? - Anonymous
June 27, 2005
Is there and easy way to get only the files/folder that were changed between two changesets?
Thanks
Pablo - Anonymous
August 05, 2005
The comment has been removed