ViewVC logotype

Contents of /meta-cvs/F-B3689DBB46386B16F4B2331934B69223

Parent Directory Parent Directory | Revision Log Revision Log

Revision - (show annotations)
Mon Oct 21 04:46:05 2002 UTC (11 years, 6 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since +4 -0 lines
Fix broken ``filt -r''.

* code/mapping.lisp (mapping-read-raw-map): New function; reads
map from stream and does sanity check.
(mapping-read): Argument can be a filename or stream. Call to
mapping-read-raw-map to factor out common code for both cases.

* code/filt.lisp (filt-select-map): This was still just
reading the raw structure from the cvs coprocess, which worked under
the old map format, when the internal and external representations
were the same. Now it calls mapping-read on the stream.
1 Release Notes for Meta-CVS
3 Release 0.99, 2002-1?-??:
5 Failure to invoke text editor is handled.
7 The -r option of filt is fixed; it has been broken since the change to the
8 new MAP format, because it was reading the raw map representation, not
9 passing it through the right conversion steps that are needed now.
11 Release 0.98, 2002-10-13:
13 The prop command was mistakenly reading from MAP-LOCAL and writing to MAP,
14 which could cause information loss if the two differ. It now reads from MAP
15 and writes to MAP. (The property changes propagate to MAP-LOCAL by the
16 update operation invoked by prop, as before).
18 Invocation of external programs included in debug trace.
20 The filt command does not filter F- names if they are immediately preceded by
21 the MCVS/ prefix; such occurences are clearly concrete, sandbox-relative
22 references to the actual F- links, rather than abstract references.
24 The update command now supports the -C option, to fetch the repository
25 copy, throwing away local changes. It also now honors the --metaonly
26 and --nometa options.
28 The export command has been added, for checking out documents without creating
29 a working copy (no MCVS directory in the root of the checkout).
31 The watch command has been added. Note that its syntax differs from that
32 of CVS.
34 The watchers, editors, edit, and unedit commands have been added.
36 A script called mcvs-upgrade is now included, and installs alongside the mcvs
37 script. This allows the Meta-CVS Lisp image to recompile and patch itself,
38 giving users of binary distributions an easy way to upgrade from source
39 code.
41 Release 0.97, 2002-10-06:
43 Meta-CVS now builds and runs on Microsoft Windows, under Cygwin
44 (www.cygwin.com). It still relies on hard links, which requires
45 Windows 2000 or XP, and the NTFS filesystem. It probably won't
46 work over FAT.
48 New --debug option for verbose output.
50 Cleaned up of error messages. Error messages don't specify prefixes like
51 ``mcvs-add:'' or ``mcvs-grab:'' any more. Rather, the error handler adds the
52 ``mcvs:'' prefix when printing the messages in a situation when the error is
53 not continuable.
55 Fixed bug introduced in release 0.13: mcvs add -R was adding only
56 directories, effectively ignoring arguments that are regular files.
57 The error-continuation behavior of mcvs add has been revised.
59 Trying to rename an object onto itself, or to move the sandbox root
60 directory are no longer silent no-ops, but produce an error.
62 The remap command now preserves property lists, and picks up changes
63 in executable permission.
65 The grab command now notices when a file changes from having execute
66 permission to not having execute permission.
68 Operations on the path . now work in a partial sandbox.
70 Release 0.96, 2002-09-21:
72 The restore command was left broken during the change to the new
73 filemap format. It is now fixed.
75 The grab command now handles execute permission bits properly.
77 Some more commands have detailed help.
79 There is now a global option -i which specifies a script to be
80 executed. This allows Meta-CVS to be scripted using Lisp. For
81 instance suppose you have the following script and call it
82 list-matching:
84 #!/usr/local/bin/mcvs -i
85 (in-sandbox-root-dir
86 (let ((mapping (mapping-read *mcvs-map*))
87 (test-func (eval (read-from-string (pop *args*)))))
88 (dolist (entry mapping)
89 (with-slots (path raw-plist) entry
90 (when (funcall test-func raw-plist)
91 (format t "~a~%" path))))))
93 Then to list the names of files whose "importance" property is
94 a value greater than two, run:
96 ./list-matching '(lambda (plist)
97 (let ((imp (getf plist :importance)))
98 (and imp (> imp 2))))'
100 WARNING: Scripting accesses the guts of Meta-CVS directly, so scripts may
101 break as Meta-CVS is maintained. There is currently no published set of
102 stable interfaces.
104 Release 0.95, 2002-09-16:
106 The install.sh script no longer uses a borrowed copy of the clisp-link script
107 or the linkkit directory; these have been removed. These materials
108 are available at every CLISP installation; install.sh now finds them
109 and uses them. Users of non-x86 machines ran into problems because of this
110 because linkkit/clisp.h contains architecture-dependent information.
112 A bug in mcvs filt was fixed; it wasn't handling F- names that aren't found
113 in the map.
115 A more detailed help system now exists, though it's not complete. The ``mcvs
116 help'' command acts just like ``mcvs --help'' without any arguments. If given
117 an additional parameter which specifies a Meta-CVS command, it produces more
118 detailed documentation for that comand. Help exists already for a few
119 commands.
121 The release number is being warped to 0.95, which means that Meta-CVS is now
122 in beta. It is only five updates away from a 1.0 release.
124 Release 0.24, 2002-09-08:
126 The mapping entries for both symlinks and files have extensible property
127 lists now. These are stored in the optional fourth and fifth list elements,
128 respectively of the :FILE and :SYMLINK map entries.
130 Versioning of the execute permission of files is supported, represented as
131 the :EXEC property of a :FILE mapping entry.
133 Some lame syntax is provided for manipulating properties:
135 mcvs prop --set foo --clear bar --remove baz main.c list.c
137 will set the property FOO to true, set the property BAR to false,
138 and remove the property BAZ, in the files main.c and list.c.
139 The execute permission is represented by the property EXEC.
141 Release 0.23, 2002-09-02:
143 Bugfix: the grab command notices edited symlinks and incorporates the
144 changes into the mapping.
146 The grab command now figures out moved symlinks. Moved symlinks are those
147 whose pathname has changed, but which continue to point to the same object
148 (which may also have been moved).
150 Release 0.22, 2002-08-31:
152 Symbolic links are now versioned objects. The format of the MAP file
153 changes to accomodate this; the new Meta-CVS will read old MAP
154 files; when it writes it will write the new format. Old Meta-CVS won't
155 read the new format.
157 When a new module is created from an existing file tree, symbolic
158 links will be recognized and added. The add command will also add
159 symbolic links. Symbolic links can be renamed and moved; this does
160 nothing with their contents. They can point outside of the sandbox
161 using relative or absolute paths.
163 TODO:
165 There doesn't exist yet a special command to create symbolic links, nor to
166 retarget them; retargetting a link can be done manually by editing MCVS/MAP
167 and updating. Retargetting a link using the ln -s command, won't
168 backpropagate to the MAP file; an update will clobber the link.
170 The grab command does not yet compute symbolic link moves; a moved symbolic
171 link is treated as a remove and add. This will be easy to fix.
173 The remap command ignores symlinks.
175 Release 0.21, 2002-08-04:
177 Syntax of grab command changed. The branch is no longer specified as an
178 argument, but using the -r command option. If no revision is specified with
179 -r, then a -A must be specified to make the grab go to the main trunk. This
180 is a safety feature, since grabbing foreign snapshots to the trunk is almost
181 always wrong, though it could be useful during backup recovery, or for fixing
182 mistakes.
184 The way operating system functions are targetted has changed. Instead of
185 relying on the ``linuxlibc6'' module provided by CLISP, Meta-CVS now
186 has its own module for calling foreign functions. This module is portable;
187 it does not depend on the layout of glibc data structures. So Meta-CVS
188 is in theory now portable to other Unixes (provided they have /dev/urandom).
190 Release 0.20, 2002-07-27:
192 The commit command does a true global commit when given no file or directory
193 parameters, and not given the --metaonly option. This means commiting all
194 changes in the MCVS directory, even if they are in F-files that are not
195 currently mapped.
197 Release 0.19, 2002-07-16:
199 When moving multiple files or directories to a subdirectory, a
200 restart is now provided to skip over bad ones and continue.
202 Grab no longer scans files if there are only added files, or only removed
203 files. There are no moves to deduce in that case.
205 Restore properly creates lost+found at the root of a partial sandbox,
206 rather than at the abstract root of the module.
208 Some other algorithmic improvements made.
210 The first few sections of a user guide have been written.
212 Release 0.18, 2002-07-07:
214 Cool new feature: checkout takes an extra argument, which specifies a
215 subdirectory of the project. Specifying a subdirectory results in a ``partial
216 sandbox'', whose root directory is the specified subdirectory of the larger
217 project. The rest of the project is ``invisible'' to that sandbox. A
218 subdirectory argument can also be given to mcvs grab, which will cause it to
219 integrate the new source tree against a subtree of the Meta-CVS project
220 rather than the entire project. The subtree doesn't have to exist; in
221 that case you get an empty sandbox. Adding files to this sandbox will cause
222 the tree to exist in the project.
224 Bugfix: mcvs grab was not computing moves properly over small file sets,
225 wrongly treating them as removes and adds.
227 Release 0.17, 2002-07-02:
229 The create command no longer takes a vendor branch. Instead the symbol
230 ``Created-by-Meta-CVS'' is used as the vendor tag to satisfy CVS.
232 The grab command no longer does useless synchronization on files that
233 are about to be deleted.
235 New purge command; does ``cvs rm'' on deleted files, that is to say, F- files
236 that have no mapping.
238 New restore command; re-enters deleted files into the mapping, under
239 the ``lost+found'' directory, using their F- names as sandbox names.
241 Bugfix: when a checkout bails because it is requested over top of an existing
242 working copy, it must not delete that working copy's MCVS sub directory.
244 Release 0.16, 2002-06-29:
246 Added new heuristics to grab command. Paths are analyzed to determine
247 move distance. Greater distances reduce the confidence in a move.
248 These rules help sort out grabs in a project where similar or
249 duplicate files are subject to parallel moves, the ambiguity being
250 resolved by favoring shorter moves. Word comparisons are case-insensitive
251 now. Common words (those that appear in many files) are ignored when
252 comparing files.
254 New options, --meta and --metaonly. This area of Meta-CVS is cleaned
255 up a little bit. Most reporting commands like log or diff no longer
256 operate on meta files by default; they must be explicitly told to do
257 so with --meta or --metaonly. Only the commit command implicitly includes
258 metafiles by default, and so if this is not wanted, --nometa must be
259 selected. The update command remains special; if it is given file
260 arguments, it does not include meta files. If given no arguments, it
261 does a global CVS up across the entire project.
263 Release 0.15, 2002-06-25:
265 Optimized a string splitting routine which is used heavily for processing
266 paths; the result is a noticeable performance improvement in some commands
267 that process large numbers of files.
269 Renamed ``import'' command to ``create''.
271 Bugfix: checkout and create showed errors when removing directory, due to
272 broken :postorder support in directory walking function.
274 Bugfix: on failure, checkout was failing to delete the MCVS directory when
275 the checkout was directed to an existing directory.
277 New feature: ``mcvs grab'' command imports third-party snapshots to a
278 branch. This is invoked in the root directory of the source tree to import.
279 It determines what files have been added and removed in the snapshot, and
280 tries to compute which removes and adds are actually moves. This is done by
281 analyzing the actual contents of the files according to a crude algorithm to
282 do fuzzy comparisons, so that even files which were modified as well as moved
283 are discovered.
285 Release 0.14, 2002-06-21:
287 Bugfix: mcvs add was broken for files that have no suffix, causing
288 the underlying cvs add to fail. This was broken in 0.7 when type
289 handling was added.
291 Release 0.13, 2002-06-06:
293 Sandbox synchronization now handles the case of two files having
294 the same timestamp. An error is signaled, with interactive resolution
295 to synchronize either way, or do nothing.
297 If a file must be deleted on update, and this cannot be done, it
298 is now a continuable error.
300 Bugfix: pass -I ! to cvs import so that it won't ignore some F- files
301 whose suffix is one of the ones cvs ignores by default.
303 New command: mcvs remap. The user can move or delete files directly without
304 going through Meta-CVS. When mcvs remap is invoked, it will hunt down the
305 moves and deletions, and reconstruct the mapping accordingly; that is,
306 it remaps the new structure. This command uses inode numbers to identify
307 files; if a file is copied and then the original is deleted, that won't
308 be recognized as a move.
310 Release 0.12, 2002-04-18:
312 Bugfix: remove was broken in 0.10, fixed now.
314 Bugfix: status, diff, etc. work in empty project rather than complaining
315 ``. not known to Meta-CVS''.
317 The checkout operation now can now populate an existing directory, including
318 the current working directory (mcvs co -d . modulename). Of course, the
319 target directory cannot be an existing Meta-CVS sandbox.
320 This is a useful feature, which allows sandboxes to blend with an
321 existing directory structure.
323 Checkout now uses the same function for generating the sandbox
324 structure as does update. This is now necessary, because local files
325 can be clobbered by the checkout.
327 Release 0.11, 2002-04-12:
329 Bugfix: when branch invokes rtag, it now takes the CVSROOT information
330 from CVS/Root and passes it via -d. This is necessary because rtag does not
331 look at a local CVS subdirectory for this information, only the
332 -d option or the environment variable.
334 Command for listing branches added (list-branches or lb). Also shows
335 what sticky tag the sandbox is updated to.
337 Command for switching branches added (switch or sw).
339 Merge detects that working copy is on non-branch tag and bails.
341 Absolute paths can now be specified as file arguments. These are
342 based from the root directory of the sandbox, not the actual filesystem root
343 directory.
345 Release 0.10, 2002-04-03:
347 Automatic merging implemented. Branch is created using branch command,
348 and merging from another branch is done using simple merge command.
349 Meta-CVS maintains the tags to keep track of what has been merged
350 from what branch to what branch.
352 Bugfix: checkout -d foo bar was complaining about directory bar already
353 existing, even though it should only care about foo.
355 The remove command now requires explicit -R option to recursively remove
356 a directory. It has more detailed error reporting.
358 The move command has better error reporting.
360 Release 0.9, 2002-03-14:
362 Bugfix: the .cvsignore file is now subject to tagging, status, etc,
363 (unless --nometa is specified, of course).
365 The mcvs filt command takes -r <revision> or -D <date> parameters.
366 This means to retrieve the MAP file as of the specified revision or
367 date and use that mapping to perform the filtering translation,
368 rather than using MAP-LOCAL.
370 The mcvs update command takes filename arguments now and also
371 supports the -p option.
373 Release 0.8, 2002-03-13:
375 Bug fixed in mcvs add; it was not ignoring files that are already
376 listed as :ignore in MCVS/TYPES.
378 Bug fixed in mcvs move: a target with a trailing slash is now treated
379 as a directory (if it does not already exist and is a non-directory).
381 The -d option of mcvs checkout can now be used to override the checkout
382 directory, which is normally the same as the module name.
384 The global options --version, --help, -q, -Q and -e are now supported.
386 New global options --error-continue and --error-terminate to disable
387 interactive error handling in two different ways.
389 Log level of many messages has changed; many messages have been
390 relegated to debug level.
392 The import command now creates a .cvsignore file containing the name
395 Release 0.7, 2002-03-09:
397 The import command collects a list of the file suffixes and brings up
398 a text editor to allow the user to edit their CVS keyword expansion
399 behavior. This information is kept in a new metafile called TYPES. The
400 add command also updates TYPES; it identifies any suffixes which are new,
401 and brings up an editor. The F- files now carry suffixes, which
402 simplifies interfacing with CVS, and also allows cvswrappers to work.
404 Recursive add works (mcvs add -R ...).
406 New command line option --nometa allows metafiles to be excluded from
407 diff, tag, and other commands; without the option they are inserted
408 into the list of files to be processed.
410 The commit option now takes an optional list of files or directories,
411 just like tag, diff, and others.
413 Release 0.6, 2002-02-16:
415 The add operation was horribly broken in 0.5, it is fixed.
417 User can interactively select whether to clobber local files or leave
418 everything alone. Effects on the mapping file of a mcvs move are undone,
419 if the restructuring is rolled back, or raises a condition that leads
420 to termination.
422 Meta-CVS now keeps a new meta-file called MCVS/TYPES. This is created
423 during import, and specifies the CVS keyword expansion mode for files
424 having given suffixes, and can also tell Meta-CVS to ignore certain files
425 when importing or adding.
427 Release 0.5, 2002-02-10:
429 Much improved error handling. Filesystem rearranging code performs
430 sanity checks to prevent adds and moves from accidentally clobbering
431 local files. A rearranging gone bad can be rolled back. Effects
432 of a failed mcvs add can also be rolled back.
434 MAP-LOCAL is now sorted in the same way as MAP.
436 Release 0.4, 2002-02-04:
438 CVS is invoked using internal function resembling the xargs utility,
439 which ensures that multiple command lines are generated if necessary to
440 avoid surpassing the operating system limit on argument and environment
441 vector size. This is important when someone wants to diff or stat a
442 subdirectory, which requires Meta-CVS to pick out the individual files
443 at the CVS level.
445 The tag, log, status and annotate commands are now available.
447 The MAP file is sorted on F- file names now, not path names. This
448 improves merging, since files do not move within the file when
449 they are renamed.
451 Release 0.3, 2002-02-02:
453 Process termination done is properly in top level handler, by a nonlocal
454 exit. The program properly indicates failed termination when it exits
455 due to an error condition.
457 Corrections are made in the command line option processing. If z is an
458 option that takes an argument, and the argument is -zx, then x is
459 treated as the argument to the option. Long options arguments are
460 recognized properly, according to the --opt=arg convention. The option
461 processing is restructured. Most of the commands now take the
462 appropriate cvs command-specific options.
464 The update algorithm performs dupe checking over the map, which could
465 happen during a merge.
467 Some more bugfixing has been done to the move command. It was still not
468 handling right some cases of an unversioned file being clobbered. Also,
469 it wasn't renaming a directory containing just one file.
471 I did some performance investigation for larger file sets, and
472 ended up rewriting the code that computes filesystem restructuring
473 changes and map duplicates.
475 Release 0.2, 2002-01-30:
477 Changed official name from MCVS to Meta-CVS. The move command now
478 performs some filesystem tests so it does the right thing when a versioned
479 file is moved over a non-versioned file, or when a file is moved into
480 a directory not known to Meta-CVS. Factored out reading and writing of
481 map files into functions.
483 Release 0.1, 2002-01-28:
485 Support for mcvs diff -u added. The -R option works for mcvs add command.
486 Bug fixed in mcvs mv command; it wasn't working analogously to the Unix
487 mv command when copying a directory to an existing directory.
489 Release 0.0, 2002-01-27:
491 This is alpha software. It is not complete, and lacks documentation.
492 However, it is already usable in its present state and is being used for
493 version control by its author. If you can program in Common Lisp and would
494 like to help, take a look through the TODO file. Send me patches, ideas,
495 feature requests.

  ViewVC Help
Powered by ViewVC 1.1.5