New patch, fixes a few issues detected so far. Not ready to be merged,
but good enough for testing.

The next thing I am going to do is split up the ".commits" file
generation for merging.

Please comment,

Changes:
- Currently assumes that revision 1.1.1.1 is the same as 1.1 (cvs import
was only used at initial repository creation). otherwise it's hard
to convert
any branches because cvs puts tags on 1.1.1.1 when file is not modiifed.
This needs to be made optional.
- Support for vendor branches has been disabled (due to above)
- Nested branches are not yet tested
- Timestamps not handled correctly yet
- Some passes share data and can't be restarted
- Doesn't yet break up commits if they are tagged differently
- Handlings of tags on subset is not optimal (reverts to file by file copy
even when subtree copy would be possible).

def tree_completed(self):
"The revision tree has been parsed. Analyze it for consistency."
@@ -136,6 +163,9 @@
# links that we have recorded and validate that the timestamp on the
# previous revision is before the specified revision

+# for a,b in self.prev.items():
+# print "PREV: ", a, b
+
# if we have to resync some nodes, then we restart the scan. just keep
# looping as long as we need to restart.
while 1:
@@ -171,6 +201,7 @@
return