Changes between Version 3 and Version 4 of VersionOne


Ignore:
Timestamp:
01/13/06 18:03:47 (7 years ago)
Author:
lele
Comment:

Trimmed

Legend:

Unmodified
Added
Removed
Modified
  • VersionOne

    v3 v4  
    1 = Forthcoming version of Tailor = 
     1= VersionOne history = 
    22 
    3 What will be tagged as [http://nautilus.homeip.net/~lele/projects/tailor/README.html Tailor version 1.0] is shaping up at http://nautilus.homeip.net/~lele/projects/tailor 
     3See http://www.darcs.net/DarcsWiki/Tailor/VersionOne for earlier steps of VersionOne, since it was branched off CvSync. 
    44 
    5  {i} Please, '''use''' `darcs get --partial` to fetch the sources :-) 
     5= Current information = 
    66 
    7  (!) Or fetch the [http://nautilus.homeip.net/~lele/projects/tailor-0.9.9.tar.gz tarball of version 0.9.9] 
     7You can read the current source:README (also available in [attachment:README.html html format]). 
    88 
    9 == What happened since 0.8 == 
     9= Master repository = 
    1010 
    11 Version 0.9.1, under development, witnessed the following changes: 
    12  
    13  (./) The frontend program name lost the `.py` extension, so it's simply `tailor` now. 
    14  
    15  (./) The execution of external programs now uses Python 2.4 `subprocess` module (or an equivalent on older snakes), instead of the homegrown hack around `popen`, `system` and the like. 
    16  
    17  (./) Tailor is able to store original author and timestamp even committing to Subversion, given a properly configured target repository. 
    18  
    19  (./) All source backends know about a particular revision other than `HEAD`, `INITIAL`, that makes easier to migrate a whole repository. 
    20  
    21  (./) Made simpler bootstrapping toward some VC kinds with new --target-repository and --target-module options. 
    22  
    23 == What happened since 0.9.1 == 
    24  
    25 Version 0.9.2, tagged on Aug 5, early in the morning, was tormented with the following changes: 
    26  
    27  (./) ArX support (target only) thanx to Walter Landry 
    28  
    29  (./) New configuration system in place, even if still mostly untested 
    30  
    31 == What happened since 0.9.2 == 
    32  
    33 Version 0.9.3, tagged on Aug 9, early in the morning, was tattooed with the following changes: 
    34  
    35  (./) Big internals redesign, needs more testing 
    36  
    37  (./) New operational tests: darcs2svn and darcs2hg 
    38  
    39  (./) Darcs backend is more precise in the patch selection 
    40  
    41 == What happened since 0.9.3 == 
    42  
    43 Version 0.9.4, tagged on Aug 13, was heaved by the following changes: 
    44  
    45  (./) Tla support (source only) thanx to Robin Farine 
    46  
    47  (./) The operation tests now cover darcs2bzr, darcs2cdv and a reverse one, svn2darcs 
    48  
    49 == What happened since 0.9.4 == 
    50  
    51 Version 0.9.5, tagged on Aug 16, was cured by the following changes: 
    52  
    53  (./) Lot of little fixes here and there 
    54  
    55  (./) Optimized the state persistence 
    56  
    57  (./) Rectified the README 
    58  
    59  (./) `--bootstrap` and `--update` are gone: now tailor detects what's needed checking the state file existence 
    60  
    61 == What happened since 0.9.5 == 
    62  
    63 Version 0.9.6, tagged on Aug 17, learned these new concepts and gained a promotion to '''beta''': 
    64  
    65  (./) Tiny streams vs giant blobs: now the pending changesets are iterated over loading one by one from the state file. With this change, minus bugs of course, I consider the state file format freezed, that means I'll start using ''this'' version in production. 
    66  
    67  (./) If something cannot be shared, there must be two something: the dual working directory sometime isn't good enough, so now the source and the target repositories may use different directories, and tailor will rsync them as needed. As a bonus, this will happily suck some more megabytes out of your HD :) 
    68  
    69  (./) It's easier if you call things with their name: some more internal cleanup, I'm almost satisfied now. 
    70  
    71  (./) Errors may happen, and better know about them: with `--verbose` you get the "shell" commands, with `--debug` also their stdout and stderr. 
    72  
    73 == What happened since 0.9.6 == 
    74  
    75 Version 0.9.7, tagged on Aug 19, gained some other knowledge: 
    76  
    77  (./) Darcs is beautifully strange: deal with possible conflicts replaying an history patch by patch 
    78  
    79  (./) Two is better than one: a new ''native'' backend for Bazaar-NG, thanx to Johan Rydberg. 
    80  
    81  (./) Flexibility is a virtue: implemented the long awaited changeset transform hooks 
    82  
    83 == What happened since 0.9.7 == 
    84  
    85 [http://nautilus.homeip.net/~lele/projects/tailor-0.9.8.tar.gz Version 0.9.8], tagged on Aug 20, discovered new things: 
    86  
    87  (./) How to make an use of the ``predist`` feature of Darcs: now the tarball contains an HTMLized [http://nautilus.homeip.net/~lele/projects/tailor/README.html README]. 
    88  
    89  (./) How simple it is to break working code: fixed ''brown bag bug'' in the CVS source backend. 
    90  
    91  (./) Interactivity bores users: good bye interactive session! 
    92  
    93 == What happened since 0.9.8 == 
    94  
    95 [http://nautilus.homeip.net/~lele/projects/tailor-0.9.9.tar.gz Version 0.9.9], tagged on Aug 25, explored new countries: 
    96  
    97  (./) Intricated paths may resolve to something linear: monotone source backend, thanks to Riccardo! 
    98  
    99  (./) There are still bugs out there: keep squashing 'em! 
    100  
    101  (./) There are persons who actually use software, don't read it: be kind with them, and write some notes. 
    102  
    103 == What else? == 
    104  
    105 Tailor may be a nice tool, but it's user interface is somewhat cryptic. Version 0.8 has three different ways of storing the state information, and tried to be flexible introducing several command line options as well as an interactive session. This is crazy. 
    106  
    107 So, I'll spend some time to get rid of two or three of them, introducing yet another scheme, probably using a common `.ini` file mixed with plain Python code. 
    108  
    109 This is what I wanna achieve: 
    110  
    111  1. (./) Make it possible to attach arbitrary transforms to the changesets once they are applied and before committing them to the target VC; refilling of the log message, remapping author's names, and in general apply any needed fixup. 
    112  
    113  2. (./) Make it easier to set up a double way bridge 
    114  
    115  3. (./) Remove interactive session machinery: it was funny, but definitively out of scope. 
    116  
    117 == New configuration proposals == 
    118  
    119 Please, do not hesitate to comment and extend this section! 
    120  
    121 === ConfigParser based configuration === 
    122  
    123 The idea is to use a standard Python script, writing the configuration in its documentation string, eventually followed by functions used to massage in some way the changesets. 
     11You can fetch current sources with 
    12412 
    12513{{{ 
    126 #!python 
    127 #!/usr/bin/env tailor 
     14  darcs get --partial http://darcs.arstecnica.it/tailor 
     15}}} 
    12816 
    129 """ 
    130 [DEFAULT] 
    131 verbose = Yes 
    132  
    133 [project1] 
    134 source = svn:projec1repo 
    135 target = darcs:project1repo 
    136 refill-changelogs = Yes 
    137 state-file = project1.state 
    138 before-commit = (maybe_skip, refill, p1_remap_authors) 
    139 after-commit = checkpoint 
    140  
    141 [svn:project1repo] 
    142 repository = svn://some.server/svn 
    143 module = project1 
    144 use-propset = Yes 
    145  
    146 [darcs:project1repo] 
    147 repository = ~/darcs/project1 
    148 """ 
    149  
    150 def maybe_skip(context, changeset): 
    151     for e in changeset.entries: 
    152         if not context.darcs.isBoringFile(e): 
    153             return True 
    154     # What a bunch of boring entries! Skip the patch 
    155     return False 
    156  
    157 def refill(context, changeset): 
    158     changeset.refillChangelog() 
    159     return True 
    160  
    161 p1_authors_map = { 
    162     'lele': 'Lele Gaifax <lele@example.com>', 
    163     'x123': 'A man ... with a name to come', 
    164 } 
    165  
    166 def p1_remap_authors(context, changeset): 
    167     global p1_authors_map 
    168     if p1_authors_map.has_key(changeset.author): 
    169         changeset.author = p1_authors_map[changeset.author] 
    170     return True 
    171  
    172 def checkpoint(context, changeset): 
    173     if changeset.log.startswith('Release '): 
    174         context.target.tagWithCheckpoint(changeset.log) 
    175     return True 
    176 }}}