| 1 | = Notes/SubversionAndRCS = |
| 2 | |
| 3 | MarkCalabretta put together a list of points of difficulty he sees with migrating from RCS. |
| 4 | |
| 5 | 1) The one-to-one association between a file and its RCS version |
| 6 | (,v) file is used by the Miriad makefiles to define rules that |
| 7 | keep the plain-text sources up-to-date automatically. These |
| 8 | rules are used explicitly when rebuilding the system and |
| 9 | implicitly in the dependency analysis. For example, an included |
| 10 | header file (.h) is checked out automatically if necessary, even |
| 11 | if it resides in a different directory, simply by appearing as a |
| 12 | dependency of the target. Without a one-to-one association, there |
| 13 | is no way to implement these rules in svn. |
| 14 | |
| 15 | 2) There is no equivalent for gmake's inbuilt rule to update the |
| 16 | makefile and no way to implement it short of hacking gmake itself |
| 17 | because it must work in the absence of any makefile. |
| 18 | |
| 19 | 3) Per-file versioning in RCS has been replaced by global versioning |
| 20 | in svn which, for Miriad, involves a loss of historical information. |
| 21 | In contrast, the effect of global versioning is available in RCS via |
| 22 | the '-d' option specifying a date. |
| 23 | |
| 24 | 4) Version dates for revisions 0.0 to 1.0 in the svn repository are |
| 25 | incorrect, apparently because svn and/or cvs2svn appear to require |
| 26 | that increasing global version numbers correspond to increasing |
| 27 | times. RCS does not have this limitation. |
| 28 | |
| 29 | 5) Lack of per-file versioning will make it inconvenient to perform |
| 30 | the common task of determining at what revision a particular change |
| 31 | to a source file was made. Currently I do a binary chop on the RCS |
| 32 | version number for the file, but with svn, changes to a file are |
| 33 | tagged with non-consecutive global version numbers. |
| 34 | |
| 35 | 6) Presumably because of global versioning, 'svn log' provides no |
| 36 | indication of the extent of changes made to a file at each |
| 37 | revision. 'rlog' does and it's a handy feature that I often use. |
| 38 | |
| 39 | 7) In svn, $Id$ tags must be enabled explicitly for each individual |
| 40 | file that needs it. Bizarrely, svn allows this to be set up |
| 41 | automatically via auto-props in config files on a per-user or |
| 42 | per-host basis, but not for the repository itself. This means |
| 43 | that manual intervention is required on a per-file, per-user, or |
| 44 | per-host basis. |
| 45 | |
| 46 | 8) The $Id$ tags are not replaced in source files visible on the web |
| 47 | site e.g. http://svn.atnf.csiro.au/miriad/trunk/prog/clean.for |
| 48 | |
| 49 | 9) Currently the Miriad RCS repository co-resides with Miriad in the |
| 50 | same directory tree and the whole lot can easily be propagated via |
| 51 | rsync. In contrast, with svn they are separated, on different |
| 52 | machines even. |
| 53 | |
| 54 | 10) It's not possible to provide third-parties with a copy of the RCS |
| 55 | version files as is now done from the ftp area. E.g. Peter Teuben |
| 56 | uses them to track my changes. |
| 57 | |
| 58 | 11) In the same vein, the Miriad RCS repository is currently cached at |
| 59 | the observatories (and on my computer at home) and revision history |
| 60 | can be consulted even if the link is down (or non-existent). |
| 61 | |
| 62 | 12) Where have the defunct RCS version files gone? I.e. those with a |
| 63 | ',x' suffix. |
| 64 | |
| 65 | 13) svn's internal format is undocumented and inscrutible. In |
| 66 | contrast, RCS's version information is stored in a well-defined |
| 67 | and well-documented format ('man rcsfile'). It is readily |
| 68 | understandable and amenable to external manipulation and that has |
| 69 | proved invaluable in the past. |
| 70 | |
| 71 | 14) I am particularly concerned that version information stored in |
| 72 | svn's internal format will not be transferable to another revision |
| 73 | control system should that ever prove desirable - remember how |
| 74 | "wonderful" CVS used to be when it was the latest shiny pebble? |
| 75 | (But at least CVS is based on the RCS version format.) |
| 76 | |
| 77 | 15) Ownership of the Miriad repository has been transferred from |
| 78 | mirmgr to www-data and presumably so will administration of the |
| 79 | repository. This places an extra, unwanted layer of bureaucracy |
| 80 | between me and the work I have to do. (Alternatively, I'm quite |
| 81 | happy to let you have it all back!) For example, Malte was away |
| 82 | on Tuesday so I had to wait till Wednesday to have an svn account |
| 83 | created. Also, it wouldn't let me do a checkout anonymously. |
| 84 | |
| 85 | |
| 86 | [wiki:Notes Notes Home] |