Added a description for my extensions (README-my-extensions.html).
[parsecvs/imz-RCS2git-use-cases.git] / README
blob078592ea1f667e3a19a338928bdf5d3406bc09a8
1                                 Parsecvs
2                            keithp@keithp.com
3                               April, 2006
5 This directory contains code which can directly read RCS ,v files and
6 generate a git-style rev-list structure from them. Revision lists can be
7 merged together to produce a composite revision history for an arbitrary
8 collection of files.
10 Optional behaviors are controlled by editing the source and recompiling.
12 If arguments are supplied, parsecvs assumes they're all ,v files and reads
13 them in. If no arguments are supplied, parsecvs reads filenames from stdin,
14 one per line.
16 Working features:
18         Attic support. Files found in the Attic are not dealt with specially
19         at all; they should be renamed in the output, and the terminal
20         revision noted so that they don't appear in later revision. I think
21         fixing this will be reasonably straightforward.
23         Disjoint branch resolution. Branches occurring in a subset of the
24         files are not correctly resolved; instead, an entirely disjoint
25         history will be created containing the branch revisions and all
26         parents back to the root. I'm not sure how to fix this; it seems
27         to implicitly assume there will be only a single place to attach as
28         branch parent, which may not be the case. In any case, the right
29         revision will have a superset of the revisions present in the
30         original branch parent; perhaps that will suffice.
32         Connection to git. As mentioned above, the code doesn't actually
33         connect to git yet, so while it can generate lovely graphs, it won't
34         do anything useful. I think this is reasonably straight forward as
35         well; we've got a revision history containing the necessary version
36         of every file at each point in time. This could either be done by
37         emitting git commands and sending them to a shell, or by linking
38         against a git library and doing everything internally.
40         Author translation. Just as git cvsimport does.
41         
43 Missing features:
45         Reasonable command line syntax. The current lack of command line
46         parsing should be fixed to align with the usual git tools.
48         Testing. I'm sure there are plenty of additional bugs to be found;
49         I've tested with valgrind and eliminated memory leaks and other
50         errors.