ViewVC logotype

Contents of /meta-cvs/F-B3689DBB46386B16F4B2331934B69223

Parent Directory Parent Directory | Revision Log Revision Log

Revision 1.128 - (hide annotations)
Sat Oct 12 20:34:23 2002 UTC (11 years, 6 months ago) by kaz
Branch: MAIN
Changes since 1.127: +8 -0 lines
Merging from mcvs-1-0-branch.

* code/filt.lisp (mcvs-filt): Do not filter F- names if
immediately preceded by MCVS/ prefix.

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

  ViewVC Help
Powered by ViewVC 1.1.5