ViewVC logotype

Contents of /meta-cvs/F-B3689DBB46386B16F4B2331934B69223

Parent Directory Parent Directory | Revision Log Revision Log

Revision - (hide annotations)
Tue Dec 3 07:21:05 2002 UTC (11 years, 4 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since +3 -0 lines
Discontinuing use of CLISP's ext:run-program function in favor
of a new workalike which doesn't rely on the shell interpreter.

* code/unix-bindings/unix.lisp (unix-funcs:spawn): New C call out
function (unix-funcs:run-program): New function, implemented using

* code/unix-bindings/impl.c (impl_spawn): New function; wraps
up fork, execvp and waitpid.

* code/clisp-unix.lisp: Switch from ext:run-program to
1 kaz 1.115 Release Notes for Meta-CVS
2 kaz 1.1
3 kaz Release 1.0, 200?-??-??:
5     Security fix: read-time evaluation was not suppressed when reading
6     structured data, like MCVS/MAP and MCVS/TYPES. This means that it
7     was possible for Alice to check in something that would execute
8     arbitrary code on Bob's computer.
10 kaz Optimization: use fork and exec to launch CVS rather than CLISP's
11     run-program function, which indirects through the shell interpreter.
13 kaz Release 0.99, 2002-11-17:
14 kaz
15 kaz New link command for creating symbolic links.
17 kaz Global option -n (dry run---don't modify filesystem) is processed
18     internally now, not just passed to CVS.
20 kaz Failure to invoke text editor is handled.
22 kaz The -r option of filt is fixed; it has been broken since the change to the
23     new MAP format, because it was reading the raw map representation, not
24     passing it through the right conversion steps that are needed now.
26 kaz Bugfix to purge and remap commands: they were fooled by CVS-generated
27     files in the MCVS/CVS directory. Specifically, files having F- names, and a
28     the suffix ,t.
30 kaz Bugfix to add logic in directory restructuring: there was the possibility
31     of mistakingly taking a clobbered local file to be a new local version of
32     the added file, instead of replacing it. This could happen if the local
33     file had a future timestamp relative to the one coming from the repository.
35 kaz The prop command does not synchronize or write out map if no options are
36     specified.
38 kaz Help text added for move and branch commands. Help text for grab rewritten.
39 kaz
40 kaz The CVSEDITOR and VISUAL environment variables are now checked, not
41     only EDITOR.
43 kaz Release 0.98, 2002-10-13:
44 kaz
45 kaz The prop command was mistakenly reading from MAP-LOCAL and writing to MAP,
46     which could cause information loss if the two differ. It now reads from MAP
47     and writes to MAP. (The property changes propagate to MAP-LOCAL by the
48     update operation invoked by prop, as before).
50 kaz Invocation of external programs included in debug trace.
51 kaz
52 kaz The filt command does not filter F- names if they are immediately preceded by
53     the MCVS/ prefix; such occurences are clearly concrete, sandbox-relative
54     references to the actual F- links, rather than abstract references.
56 kaz The update command now supports the -C option, to fetch the repository
57     copy, throwing away local changes. It also now honors the --metaonly
58     and --nometa options.
59 kaz
60     The export command has been added, for checking out documents without creating
61     a working copy (no MCVS directory in the root of the checkout).
62 kaz
63 kaz The watch command has been added. Note that its syntax differs from that
64     of CVS.
65 kaz
66     The watchers, editors, edit, and unedit commands have been added.
67 kaz
68     A script called mcvs-upgrade is now included, and installs alongside the mcvs
69     script. This allows the Meta-CVS Lisp image to recompile and patch itself,
70     giving users of binary distributions an easy way to upgrade from source
71     code.
73 kaz 1.127 Release 0.97, 2002-10-06:
74 kaz 1.119
75     Meta-CVS now builds and runs on Microsoft Windows, under Cygwin
76     (www.cygwin.com). It still relies on hard links, which requires
77     Windows 2000 or XP, and the NTFS filesystem. It probably won't
78     work over FAT.
79 kaz 1.120
80     New --debug option for verbose output.
82     Cleaned up of error messages. Error messages don't specify prefixes like
83     ``mcvs-add:'' or ``mcvs-grab:'' any more. Rather, the error handler adds the
84     ``mcvs:'' prefix when printing the messages in a situation when the error is
85     not continuable.
86 kaz 1.119
87 kaz 1.121 Fixed bug introduced in release 0.13: mcvs add -R was adding only
88     directories, effectively ignoring arguments that are regular files.
89 kaz 1.122 The error-continuation behavior of mcvs add has been revised.
90 kaz 1.121
91 kaz 1.125 Trying to rename an object onto itself, or to move the sandbox root
92     directory are no longer silent no-ops, but produce an error.
93 kaz 1.123
94 kaz 1.124 The remap command now preserves property lists, and picks up changes
95     in executable permission.
97     The grab command now notices when a file changes from having execute
98     permission to not having execute permission.
100 kaz 1.126 Operations on the path . now work in a partial sandbox.
102 kaz 1.118 Release 0.96, 2002-09-21:
103 kaz 1.110
104     The restore command was left broken during the change to the new
105     filemap format. It is now fixed.
107 kaz 1.111 The grab command now handles execute permission bits properly.
109 kaz 1.112 Some more commands have detailed help.
111 kaz 1.113 There is now a global option -i which specifies a script to be
112 kaz 1.114 executed. This allows Meta-CVS to be scripted using Lisp. For
113     instance suppose you have the following script and call it
114     list-matching:
115 kaz 1.113
116     #!/usr/local/bin/mcvs -i
117     (in-sandbox-root-dir
118 kaz 1.114 (let ((mapping (mapping-read *mcvs-map*))
119 kaz 1.117 (test-func (eval (read-from-string (pop *args*)))))
120 kaz 1.114 (dolist (entry mapping)
121     (with-slots (path raw-plist) entry
122 kaz 1.117 (when (funcall test-func raw-plist)
123 kaz 1.114 (format t "~a~%" path))))))
125     Then to list the names of files whose "importance" property is
126     a value greater than two, run:
128     ./list-matching '(lambda (plist)
129     (let ((imp (getf plist :importance)))
130     (and imp (> imp 2))))'
131 kaz 1.117
132     WARNING: Scripting accesses the guts of Meta-CVS directly, so scripts may
133     break as Meta-CVS is maintained. There is currently no published set of
134     stable interfaces.
135 kaz 1.113
136 kaz 1.109 Release 0.95, 2002-09-16:
137 kaz 1.104
138 kaz 1.107 The install.sh script no longer uses a borrowed copy of the clisp-link script
139     or the linkkit directory; these have been removed. These materials
140     are available at every CLISP installation; install.sh now finds them
141     and uses them. Users of non-x86 machines ran into problems because of this
142     because linkkit/clisp.h contains architecture-dependent information.
143 kaz 1.104
144 kaz 1.105 A bug in mcvs filt was fixed; it wasn't handling F- names that aren't found
145     in the map.
147 kaz 1.108 A more detailed help system now exists, though it's not complete. The ``mcvs
148     help'' command acts just like ``mcvs --help'' without any arguments. If given
149     an additional parameter which specifies a Meta-CVS command, it produces more
150     detailed documentation for that comand. Help exists already for a few
151     commands.
153 kaz 1.107 The release number is being warped to 0.95, which means that Meta-CVS is now
154     in beta. It is only five updates away from a 1.0 release.
155 kaz 1.106
156 kaz 1.103 Release 0.24, 2002-09-08:
157 kaz 1.98
158 kaz 1.99 The mapping entries for both symlinks and files have extensible property
159     lists now. These are stored in the optional fourth and fifth list elements,
160     respectively of the :FILE and :SYMLINK map entries.
162     Versioning of the execute permission of files is supported, represented as
163     the :EXEC property of a :FILE mapping entry.
164 kaz 1.98
165 kaz 1.100 Some lame syntax is provided for manipulating properties:
167 kaz 1.102 mcvs prop --set foo --clear bar --remove baz main.c list.c
168 kaz 1.100
169     will set the property FOO to true, set the property BAR to false,
170     and remove the property BAZ, in the files main.c and list.c.
171     The execute permission is represented by the property EXEC.
173 kaz 1.97 Release 0.23, 2002-09-02:
174 kaz 1.95
175 kaz 1.96 Bugfix: the grab command notices edited symlinks and incorporates the
176     changes into the mapping.
178     The grab command now figures out moved symlinks. Moved symlinks are those
179     whose pathname has changed, but which continue to point to the same object
180     (which may also have been moved).
181 kaz 1.95
182 kaz 1.94 Release 0.22, 2002-08-31:
183 kaz 1.93
184     Symbolic links are now versioned objects. The format of the MAP file
185     changes to accomodate this; the new Meta-CVS will read old MAP
186     files; when it writes it will write the new format. Old Meta-CVS won't
187     read the new format.
189     When a new module is created from an existing file tree, symbolic
190     links will be recognized and added. The add command will also add
191     symbolic links. Symbolic links can be renamed and moved; this does
192     nothing with their contents. They can point outside of the sandbox
193     using relative or absolute paths.
195 kaz 1.94 TODO:
197 kaz 1.93 There doesn't exist yet a special command to create symbolic links, nor to
198     retarget them; retargetting a link can be done manually by editing MCVS/MAP
199     and updating. Retargetting a link using the ln -s command, won't
200 kaz 1.94 backpropagate to the MAP file; an update will clobber the link.
202     The grab command does not yet compute symbolic link moves; a moved symbolic
203     link is treated as a remove and add. This will be easy to fix.
205     The remap command ignores symlinks.
206 kaz 1.93
207 kaz 1.92 Release 0.21, 2002-08-04:
208 kaz 1.88
209 kaz 1.89 Syntax of grab command changed. The branch is no longer specified as an
210     argument, but using the -r command option. If no revision is specified with
211     -r, then a -A must be specified to make the grab go to the main trunk. This
212     is a safety feature, since grabbing foreign snapshots to the trunk is almost
213     always wrong, though it could be useful during backup recovery, or for fixing
214     mistakes.
216 kaz 1.91 The way operating system functions are targetted has changed. Instead of
217     relying on the ``linuxlibc6'' module provided by CLISP, Meta-CVS now
218     has its own module for calling foreign functions. This module is portable;
219     it does not depend on the layout of glibc data structures. So Meta-CVS
220     is in theory now portable to other Unixes (provided they have /dev/urandom).
222 kaz 1.87 Release 0.20, 2002-07-27:
223 kaz 1.86
224     The commit command does a true global commit when given no file or directory
225     parameters, and not given the --metaonly option. This means commiting all
226     changes in the MCVS directory, even if they are in F-files that are not
227     currently mapped.
229 kaz 1.85 Release 0.19, 2002-07-16:
230 kaz 1.81
231     When moving multiple files or directories to a subdirectory, a
232     restart is now provided to skip over bad ones and continue.
234 kaz 1.83 Grab no longer scans files if there are only added files, or only removed
235     files. There are no moves to deduce in that case.
237 kaz 1.84 Restore properly creates lost+found at the root of a partial sandbox,
238     rather than at the abstract root of the module.
240 kaz 1.83 Some other algorithmic improvements made.
241 kaz 1.82
242     The first few sections of a user guide have been written.
244 kaz 1.80 Release 0.18, 2002-07-07:
245 kaz 1.77
246 kaz 1.78 Cool new feature: checkout takes an extra argument, which specifies a
247     subdirectory of the project. Specifying a subdirectory results in a ``partial
248     sandbox'', whose root directory is the specified subdirectory of the larger
249     project. The rest of the project is ``invisible'' to that sandbox. A
250     subdirectory argument can also be given to mcvs grab, which will cause it to
251     integrate the new source tree against a subtree of the Meta-CVS project
252 kaz 1.79 rather than the entire project. The subtree doesn't have to exist; in
253     that case you get an empty sandbox. Adding files to this sandbox will cause
254     the tree to exist in the project.
255 kaz 1.78
256 kaz 1.77 Bugfix: mcvs grab was not computing moves properly over small file sets,
257     wrongly treating them as removes and adds.
259 kaz 1.76 Release 0.17, 2002-07-02:
260 kaz 1.71
261     The create command no longer takes a vendor branch. Instead the symbol
262     ``Created-by-Meta-CVS'' is used as the vendor tag to satisfy CVS.
264 kaz 1.72 The grab command no longer does useless synchronization on files that
265     are about to be deleted.
267 kaz 1.75 New purge command; does ``cvs rm'' on deleted files, that is to say, F- files
268     that have no mapping.
270     New restore command; re-enters deleted files into the mapping, under
271     the ``lost+found'' directory, using their F- names as sandbox names.
272 kaz 1.73
273 kaz 1.74 Bugfix: when a checkout bails because it is requested over top of an existing
274     working copy, it must not delete that working copy's MCVS sub directory.
276 kaz 1.70 Release 0.16, 2002-06-29:
277 kaz 1.67
278     Added new heuristics to grab command. Paths are analyzed to determine
279     move distance. Greater distances reduce the confidence in a move.
280     These rules help sort out grabs in a project where similar or
281     duplicate files are subject to parallel moves, the ambiguity being
282 kaz 1.68 resolved by favoring shorter moves. Word comparisons are case-insensitive
283     now. Common words (those that appear in many files) are ignored when
284     comparing files.
285 kaz 1.67
286 kaz 1.69 New options, --meta and --metaonly. This area of Meta-CVS is cleaned
287     up a little bit. Most reporting commands like log or diff no longer
288     operate on meta files by default; they must be explicitly told to do
289     so with --meta or --metaonly. Only the commit command implicitly includes
290     metafiles by default, and so if this is not wanted, --nometa must be
291     selected. The update command remains special; if it is given file
292     arguments, it does not include meta files. If given no arguments, it
293     does a global CVS up across the entire project.
295 kaz 1.66 Release 0.15, 2002-06-25:
296 kaz 1.61
297 kaz 1.65 Optimized a string splitting routine which is used heavily for processing
298     paths; the result is a noticeable performance improvement in some commands
299     that process large numbers of files.
300 kaz 1.61
301 kaz 1.62 Renamed ``import'' command to ``create''.
303 kaz 1.65 Bugfix: checkout and create showed errors when removing directory, due to
304     broken :postorder support in directory walking function.
305 kaz 1.63
306 kaz 1.65 Bugfix: on failure, checkout was failing to delete the MCVS directory when
307     the checkout was directed to an existing directory.
309 kaz 1.66 New feature: ``mcvs grab'' command imports third-party snapshots to a
310 kaz 1.65 branch. This is invoked in the root directory of the source tree to import.
311     It determines what files have been added and removed in the snapshot, and
312     tries to compute which removes and adds are actually moves. This is done by
313     analyzing the actual contents of the files according to a crude algorithm to
314     do fuzzy comparisons, so that even files which were modified as well as moved
315     are discovered.
316 kaz 1.64
317 kaz 1.60 Release 0.14, 2002-06-21:
318 kaz 1.59
319     Bugfix: mcvs add was broken for files that have no suffix, causing
320 kaz 1.60 the underlying cvs add to fail. This was broken in 0.7 when type
321     handling was added.
322 kaz 1.59
323 kaz 1.58 Release 0.13, 2002-06-06:
324 kaz 1.55
325     Sandbox synchronization now handles the case of two files having
326     the same timestamp. An error is signaled, with interactive resolution
327     to synchronize either way, or do nothing.
329 kaz 1.56 If a file must be deleted on update, and this cannot be done, it
330     is now a continuable error.
332     Bugfix: pass -I ! to cvs import so that it won't ignore some F- files
333     whose suffix is one of the ones cvs ignores by default.
335 kaz 1.57 New command: mcvs remap. The user can move or delete files directly without
336     going through Meta-CVS. When mcvs remap is invoked, it will hunt down the
337     moves and deletions, and reconstruct the mapping accordingly; that is,
338     it remaps the new structure. This command uses inode numbers to identify
339     files; if a file is copied and then the original is deleted, that won't
340     be recognized as a move.
342 kaz 1.53 Release 0.12, 2002-04-18:
343 kaz 1.51
344     Bugfix: remove was broken in 0.10, fixed now.
346 kaz 1.54 Bugfix: status, diff, etc. work in empty project rather than complaining
347     ``. not known to Meta-CVS''.
349 kaz 1.52 The checkout operation now can now populate an existing directory, including
350     the current working directory (mcvs co -d . modulename). Of course, the
351     target directory cannot be an existing Meta-CVS sandbox.
352     This is a useful feature, which allows sandboxes to blend with an
353     existing directory structure.
355     Checkout now uses the same function for generating the sandbox
356     structure as does update. This is now necessary, because local files
357     can be clobbered by the checkout.
359 kaz 1.50 Release 0.11, 2002-04-12:
360 kaz 1.46
361     Bugfix: when branch invokes rtag, it now takes the CVSROOT information
362     from CVS/Root and passes it via -d. This is necessary because rtag does not
363     look at a local CVS subdirectory for this information, only the
364     -d option or the environment variable.
366 kaz 1.48 Command for listing branches added (list-branches or lb). Also shows
367     what sticky tag the sandbox is updated to.
369     Command for switching branches added (switch or sw).
371     Merge detects that working copy is on non-branch tag and bails.
372 kaz 1.47
373 kaz 1.49 Absolute paths can now be specified as file arguments. These are
374     based from the root directory of the sandbox, not the actual filesystem root
375     directory.
377 kaz 1.45 Release 0.10, 2002-04-03:
378 kaz 1.44
379     Automatic merging implemented. Branch is created using branch command,
380     and merging from another branch is done using simple merge command.
381     Meta-CVS maintains the tags to keep track of what has been merged
382     from what branch to what branch.
383 kaz 1.40
384     Bugfix: checkout -d foo bar was complaining about directory bar already
385     existing, even though it should only care about foo.
387 kaz 1.41 The remove command now requires explicit -R option to recursively remove
388 kaz 1.42 a directory. It has more detailed error reporting.
389 kaz 1.41
390 kaz 1.43 The move command has better error reporting.
392 kaz 1.39 Release 0.9, 2002-03-14:
393 kaz 1.37
394     Bugfix: the .cvsignore file is now subject to tagging, status, etc,
395     (unless --nometa is specified, of course).
396 kaz 1.38
397     The mcvs filt command takes -r <revision> or -D <date> parameters.
398     This means to retrieve the MAP file as of the specified revision or
399     date and use that mapping to perform the filtering translation,
400     rather than using MAP-LOCAL.
401 kaz 1.39
402     The mcvs update command takes filename arguments now and also
403     supports the -p option.
404 kaz 1.37
405 kaz 1.36 Release 0.8, 2002-03-13:
406 kaz 1.28
407 kaz 1.29 Bug fixed in mcvs add; it was not ignoring files that are already
408     listed as :ignore in MCVS/TYPES.
410 kaz 1.34 Bug fixed in mcvs move: a target with a trailing slash is now treated
411     as a directory (if it does not already exist and is a non-directory).
413 kaz 1.30 The -d option of mcvs checkout can now be used to override the checkout
414     directory, which is normally the same as the module name.
416 kaz 1.31 The global options --version, --help, -q, -Q and -e are now supported.
418 kaz 1.33 New global options --error-continue and --error-terminate to disable
419     interactive error handling in two different ways.
421 kaz 1.32 Log level of many messages has changed; many messages have been
422     relegated to debug level.
424 kaz 1.35 The import command now creates a .cvsignore file containing the name
425     MAP-LOCAL.
427 kaz 1.24 Release 0.7, 2002-03-09:
429 kaz 1.27 The import command collects a list of the file suffixes and brings up
430     a text editor to allow the user to edit their CVS keyword expansion
431     behavior. This information is kept in a new metafile called TYPES. The
432     add command also updates TYPES; it identifies any suffixes which are new,
433     and brings up an editor. The F- files now carry suffixes, which
434     simplifies interfacing with CVS, and also allows cvswrappers to work.
436     Recursive add works (mcvs add -R ...).
438     New command line option --nometa allows metafiles to be excluded from
439     diff, tag, and other commands; without the option they are inserted
440     into the list of files to be processed.
441 kaz 1.25
442 kaz 1.27 The commit option now takes an optional list of files or directories,
443     just like tag, diff, and others.
444 kaz 1.26
445 kaz 1.23 Release 0.6, 2002-02-16:
446 kaz 1.19
447 kaz 1.27 The add operation was horribly broken in 0.5, it is fixed.
448 kaz 1.21
449 kaz 1.27 User can interactively select whether to clobber local files or leave
450     everything alone. Effects on the mapping file of a mcvs move are undone,
451     if the restructuring is rolled back, or raises a condition that leads
452     to termination.
454     Meta-CVS now keeps a new meta-file called MCVS/TYPES. This is created
455     during import, and specifies the CVS keyword expansion mode for files
456     having given suffixes, and can also tell Meta-CVS to ignore certain files
457     when importing or adding.
458 kaz 1.22
459 kaz 1.18 Release 0.5, 2002-02-10:
460 kaz 1.14
461 kaz 1.27 Much improved error handling. Filesystem rearranging code performs
462     sanity checks to prevent adds and moves from accidentally clobbering
463     local files. A rearranging gone bad can be rolled back. Effects
464     of a failed mcvs add can also be rolled back.
465 kaz 1.14
466 kaz 1.27 MAP-LOCAL is now sorted in the same way as MAP.
467 kaz 1.15
468 kaz 1.13 Release 0.4, 2002-02-04:
469 kaz 1.10
470 kaz 1.27 CVS is invoked using internal function resembling the xargs utility,
471     which ensures that multiple command lines are generated if necessary to
472     avoid surpassing the operating system limit on argument and environment
473     vector size. This is important when someone wants to diff or stat a
474     subdirectory, which requires Meta-CVS to pick out the individual files
475     at the CVS level.
477     The tag, log, status and annotate commands are now available.
479     The MAP file is sorted on F- file names now, not path names. This
480     improves merging, since files do not move within the file when
481     they are renamed.
482 kaz 1.12
483 kaz 1.5 Release 0.3, 2002-02-02:
485 kaz 1.27 Process termination done is properly in top level handler, by a nonlocal
486     exit. The program properly indicates failed termination when it exits
487     due to an error condition.
489     Corrections are made in the command line option processing. If z is an
490     option that takes an argument, and the argument is -zx, then x is
491     treated as the argument to the option. Long options arguments are
492     recognized properly, according to the --opt=arg convention. The option
493     processing is restructured. Most of the commands now take the
494     appropriate cvs command-specific options.
496     The update algorithm performs dupe checking over the map, which could
497     happen during a merge.
499     Some more bugfixing has been done to the move command. It was still not
500     handling right some cases of an unversioned file being clobbered. Also,
501     it wasn't renaming a directory containing just one file.
503     I did some performance investigation for larger file sets, and
504     ended up rewriting the code that computes filesystem restructuring
505     changes and map duplicates.
506 kaz 1.5
507 kaz 1.4 Release 0.2, 2002-01-30:
509 kaz 1.27 Changed official name from MCVS to Meta-CVS. The move command now
510     performs some filesystem tests so it does the right thing when a versioned
511     file is moved over a non-versioned file, or when a file is moved into
512     a directory not known to Meta-CVS. Factored out reading and writing of
513     map files into functions.
514 kaz 1.4
515 kaz 1.2 Release 0.1, 2002-01-28:
517 kaz 1.27 Support for mcvs diff -u added. The -R option works for mcvs add command.
518     Bug fixed in mcvs mv command; it wasn't working analogously to the Unix
519     mv command when copying a directory to an existing directory.
520 kaz 1.2
521     Release 0.0, 2002-01-27:
522 kaz 1.1
523 kaz 1.27 This is alpha software. It is not complete, and lacks documentation.
524     However, it is already usable in its present state and is being used for
525     version control by its author. If you can program in Common Lisp and would
526     like to help, take a look through the TODO file. Send me patches, ideas,
527     feature requests.

  ViewVC Help
Powered by ViewVC 1.1.5