Generating list of changesets and updating
Remember that the parent nodeids are not the same as the parent Change Set Id.
The reason this comes last is because each revlog entry incldues the Change Set Id for the repository revision it corresponds to, and we didn't have this until the very end.ahh ok, then i guess the big behavior difference in subclipse plugin and cvs plugin at least how we notice it is because of dirs. Is it possible to update only that instead of the dir (and all the children) itself?Can we have an option that dirs are never updated with a change set? Because if the dirs are updated then anything that is below it can also go with it and that is not what one expect to happen if you just say update these files. Then after i updated all the changesets i can do a global update to really also update all the folders.It has no parent, if the changeset is a root in the repository.There may be multiple roots in a repository (normally, there is only one), each representing the start of a branch.The fact that the nodeid requires the complete contents of the new version of the file is the reason that the second stage needs to go from bottom to top.
Nodeids for the new versions of the tracked files are computed first, then the manifest is updated with these new nodeids to create the new version of the manifest.
Project Description I've created this project as an example of how to retrieve changeset information from TFS 2010 using the TFS API.
The example allows you to retrieve all of the changesets committed to a TFS 2010 source control location between two dates (how to do this).
The manifest doesn't store the contents of the files directly, instead it stores a Nodeid for each tracked file.
Just like the manifest nodeid stored in the changelog, each nodeid in the manifest indicates a particular version of that file (i.e., a particular entry in the file's revlog).
It has its own revlog, and the nodeid specified in the changelog uniquely identifies one of the entries in the manifests revlog (i.e., a specific version of the manifest), so the second step is to take the nodeid indicated in the changelog and fetch that version of the manifest.