/[meta-cvs]/meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3
ViewVC logotype

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.157.2.2 - (show annotations)
Sun Aug 25 16:07:04 2002 UTC (11 years, 7 months ago) by kaz
Branch: symlink-branch
Changes since 1.157.2.1: +46 -0 lines
Support for symbolic links added to the mapping module.  The format of
the map file has changed to accomodate this.  The new format of the
list entries is (:keyword "id" "path" ...) where the keyword is either
:file or :symlink (for now, extensible obviously), "id" is a unique
identifier (for regular files, it is their MCVS/F-* name) and "path" is
the sandbox path. Other things can follow; for symlinks, there is a
string representing the symlink target.  Internally, a new data type
called mapping-entry is used; this is a struct. So the functions which
read and write maps now convert between the struct format and the above
format.

* code/unix-bindings/unix.lisp (unix-funcs:readlink): New function.

* code/unix-bindings/impl.c (impl_readlink): New function.

* code/clisp-unix.lisp (readlink-error): New condition.
(initialize-instance readlink-error): New method for
initialize-instance generic function, specialized for readlink-error.
(readlink): New function.

* code/mapping.lisp (mapping-entry): New struct, with slots
file, id, path and target.
(mapping-same-object-p): Renamed to mapping-same-id-p.
(mapping-object-lookup, mapping-moved-p): Unused functions removed.
(mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
mapping-prefix-matches, mapping-same-path-p, mapping-rename-files,
mapping-removed-files): Functions updated to use the new data
structure.
(mapping-dupe-checks): Rewritten for new data structure, and to
use hashes rather than silly sorting.
(mapping-convert-old-style-in, mapping-convert-in,
mapping-convert-out): New functions.
(mapping-read): Handle new and old style representations,
handle conversion to internal representation.
(mapping-write): Convert to new-style external representation
before writing out.
(mapping-synchronize): Handle symbolic links. If a link is missing,
create it. If it's present but different from what it should be,
erase it and re-create it.
(mapping-update): Use new data structure. Handle symbolic links.

* code/remove.lisp (mcvs-remove): Refer to new function
name, mapping-same-id-p.
1 2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
2
3 Support for symbolic links added to the mapping module. The format of
4 the map file has changed to accomodate this. The new format of the
5 list entries is (:keyword "id" "path" ...) where the keyword is either
6 :file or :symlink (for now, extensible obviously), "id" is a unique
7 identifier (for regular files, it is their MCVS/F-* name) and "path" is
8 the sandbox path. Other things can follow; for symlinks, there is a
9 string representing the symlink target. Internally, a new data type
10 called mapping-entry is used; this is a struct. So the functions which
11 read and write maps now convert between the struct format and the above
12 format.
13
14 * code/unix-bindings/unix.lisp (unix-funcs:readlink): New function.
15
16 * code/unix-bindings/impl.c (impl_readlink): New function.
17
18 * code/clisp-unix.lisp (readlink-error): New condition.
19 (initialize-instance readlink-error): New method for
20 initialize-instance generic function, specialized for readlink-error.
21 (readlink): New function.
22
23 * code/mapping.lisp (mapping-entry): New struct, with slots
24 file, id, path and target.
25 (mapping-same-object-p): Renamed to mapping-same-id-p.
26 (mapping-object-lookup, mapping-moved-p): Unused functions removed.
27 (mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
28 mapping-prefix-matches, mapping-same-path-p, mapping-rename-files,
29 mapping-removed-files): Functions updated to use the new data
30 structure.
31 (mapping-dupe-checks): Rewritten for new data structure, and to
32 use hashes rather than silly sorting.
33 (mapping-convert-old-style-in, mapping-convert-in,
34 mapping-convert-out): New functions.
35 (mapping-read): Handle new and old style representations,
36 handle conversion to internal representation.
37 (mapping-write): Convert to new-style external representation
38 before writing out.
39 (mapping-synchronize): Handle symbolic links. If a link is missing,
40 create it. If it's present but different from what it should be,
41 erase it and re-create it.
42 (mapping-update): Use new data structure. Handle symbolic links.
43
44 * code/remove.lisp (mcvs-remove): Refer to new function
45 name, mapping-same-id-p.
46
47 2002-08-23 Kaz Kylheku <kaz@ashi.footprints.net>
48
49 * code/clisp-unix.lisp (link-error): New slot, kind. Holds
50 the string "symbolic" or "hard".
51 (initialize-instance link-error): Use new slot in constructing
52 message.
53 (link): Specify "hard" value for :kind slot of condition.
54 (symlink): New function.
55
56 * code/clisp-linux.lisp: Likewise.
57
58 2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
59
60 * code/posix.lisp (execute-program): Function removed.
61 * code/clisp-linux.lisp (execute-program): Function added. Works
62 in terms of CLISP's run-program function rather than the shell
63 function, thus eliminating the need to build a command string
64 and escape shell characters.
65 * clisp-unix.lisp (excecute-program): Likewise.
66
67 2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
68
69 * code/posix.lisp (edit-file): Function renamed to invoke-file-on,
70 because this name clashes with a standard Common Lisp symbol.
71 * code/types.lisp (types-let-user-edit): Updated to use new name.
72
73 2002-08-05 Kaz Kylheku <kaz@ashi.footprints.net>
74
75 Use getcwd to to implement mcvs-locate.
76
77 * code/unix-bindings/unix.lisp (getcwd): New call out,
78 invokes impl_getcwd.
79
80 * code/unix-bindings/impl.c (impl_getcwd): New function,
81 use getcwd() to obtain current working directory, resizing dynamic
82 buffer if necessary to get the entire path.
83
84 * code/clisp-unix.lisp (getcwd): New wrapper function.
85
86 * code/dirwalk.lisp (go-up): Function removed.
87
88 * code/mapping.lisp (mcvs-locate): Rewritten to obtain
89 path using getcwd, then try looking for MCVS directory
90 in successively shorter prefixes of that path.
91
92 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
93
94 Working back support for CLISP 2.27.
95
96 * code/install.sh: Bogus *null-pointer* hack is no longer added
97 to the generated mcvs script, since we have our own FFI functions for
98 doing the test.
99
100 * code/unix-bindings/unix.lisp (unix-funcs:null-pointer-p): New
101 function, tests a C pointer for null, returns T or NIL.
102 * code/unix-bindings/impl.c (impl_null_pointer_p): New function,
103 C implementation of unix-funcs:null-pointer-p.
104
105 * code/clisp-unix.lisp (pointer-null): New macro, uses
106 ffi:foreign-address-null under CLISP 2.28 or greater, or
107 unix-funcs:null-pointer-p, under an older CLISP.
108
109 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
110
111 Fixes to get clean build from fresh checkout.
112
113 * code/unix-bindings/link.sh: Remove test for presence of unix.c;
114 this was causing the failure to add the unix module to the module
115 list, which caused it to generate an empty modules.h file under
116 code/unix-bindings-linking-set, resulting in a bad build of lisp.run.
117
118 * code/unix-bindings/Makefile: Add ``clean'' target, so we
119 can do a make clean here.
120
121 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
122
123 Retargetting CVS with new system call bindings that are not GNU/Linux
124 specific.
125
126 * code/install.sh: The way Meta-CVS is installed changes now.
127 The argument is now a prefix above a bin and lib directory.
128 Invokes clisp-link to build a new CLISP linking set in the
129 directory code/unix-bindings-linking-set. The lisp executable
130 (lisp.run) is copied to $TARGET/lib/clisp/meta-cvs/ and the Meta-CVS
131 memory image is also copied there under the name lispinit.mem.
132 The mcvs script is then generated in $TARGET/bin, correctly referring
133 to these images.
134
135 * code/system.lisp: Choose the new clisp-unix module, if running
136 under a CLISP image which has the new bindings loaded. Otherwise fall
137 back on the old clisp-linux, which uses the linuxlibc6 module.
138
139 * code/clisp-unix.lisp: New file, closely based on clisp-linux.lisp,
140 but targetting new bindings in the unix-funcs package.
141
142 * code/clisp-link: New file. Script borrowed from CLISP distribution,
143 needed for building CLISP executables with custom modules added.
144
145 * code/linkkit: New directory. This is needed by by clisp-link.
146 * code/linkkit/modules.c: Borrowed file from CLISP, needed
147 by clisp-link.
148 * code/linkkit/clisp.h: Likewise.
149 * code/linkkit/modules.d: Likewise.
150
151 * code/unix-bindings: New directory. This is a module kit used
152 by clisp-link to extend the Lisp executable and memory image
153 with new C functions.
154
155 * code/unix-bindings/link.sh: Definitions of variables needed
156 by clisp-link.
157
158 * code/unix-bindings/unix.lisp: The glue module which defines the Lisp
159 interface to the external C functions. Most of the functions call
160 directly into the system's C library, but a few call to wrapper
161 functions. Compiling unix.lisp produces a unix.c file which is
162 compiled and linked into the CLISP executable, and a unix.fas which
163 contains the Lisp interface bits that are loaded as part of the Lisp
164 image.
165
166 * code/unix-bindings/Makefile: Rules for compiling the module, invoked by clisp-link.
167
168 * code/unix-bindings/impl.c: Some special functions that help
169 implement the binding.
170
171 2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
172
173 More changes to syntax of grab command. Now -A must be
174 specified to do a grab onto main trunk.
175
176 * code/mcvs-main.lisp (*grab-options*): -A option added.
177
178 * code/grab.lisp (mcvs-grab): Test for presence of -A
179 option. Check that either -A or -r is present, but not both.
180
181 2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
182
183 Syntax of grab command changed. The branch is no longer
184 specified as an argument after the module name. Rather,
185 it is specified using the -r option.
186
187 * code/mcvs-main.lisp (*grab-options*): -r added to list.
188
189 * code/grab.lisp (mcvs-grab, mcvs-grab-wrapper): Argument
190 syntax change, support -r option.
191
192 * INSTALL: Instructions change, since building the GNU/Linux libc
193 into CLISP is no longer required.
194
195 2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
196
197 * docs/meta-cvs.latex: Rewrote most of Introduction.
198
199 2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
200
201 New scripts for building LaTeX document. These do the right thing
202 to minimize the number of times latex is run. Make proved useless.
203
204 * docs/generate.sh: New file.
205 * docs/cleanup.sh: New file.
206
207 2002-07-20 Kaz Kylheku <kaz@ashi.footprints.net>
208
209 * INSTALL: Revising CLISP installation instructions to the
210 easier method using --build.
211
212 2002-07-18 Kaz Kylheku <kaz@ashi.footprints.net>
213
214 * README: Renaming file to QUICK-GUIDE.
215
216 2002-07-17 Kaz Kylheku <kaz@ashi.footprints.net>
217
218 * code/generic.lisp (mcvs-generic): Support new keyword,
219 :no-fix-empty-file-list. Specifies that if no files are passed,
220 and the --metaonly option is not present, the CVS command is to be
221 executed without any file arguments.
222 (mcvs-commit-wrapper): Specify :no-fix-empty-file-list t when
223 calling mcvs-generic. Thus commit now has the behavior that
224 when it is passed no file arguments, it does a true global commit.
225
226 2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
227
228 * code/restore.lisp (mcvs-restore): Work properly with
229 partial sandboxes; that is, move things to lost+found
230 directory at the top of the partial sandbox, rather than
231 the abstract root.
232
233 2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
234
235 * code/mcvs-main.lisp (usage): Updated to describe restore
236 command.
237
238 2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
239
240 * code/grab.lisp (mcvs-grab): If there are only added files
241 or only removed files, don't bother scanning any files,
242 since there are no moves to compute.
243
244 2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
245
246 * code/find-bind.lisp (vector-bind): New macro, binds symbols
247 to elements of a vector.
248 (find-bind-extract-vals): Rewrite using vectors. Fixes
249 a bug: the old version was not handling duplicate keys
250 properly.
251 (find-bind): Integrate with new find-bind-extract-vals.
252
253 2002-07-11 Kaz Kylheku <kaz@ashi.footprints.net>
254
255 Directory structure rearrangement; source files are moved
256 under code/ subdirectory. A documentation directory is added.
257
258 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
259
260 * move.lisp (move-guts): When moving multiple sources to
261 a target directory, provide a restart to skip a bad source.
262
263 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
264
265 * seqfuncs.lisp (intersection-difference): Support a new
266 keyword parameter :squash-nil.
267
268 * mapping.lisp (mapping-difference): Filter non-moved pairs
269 directly in intersection-difference call using :squash-nil,
270 eliminating the need to do a second remove-if pass.
271
272 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
273
274 * mapping.lisp (mapping-difference): Rewrite using
275 intersection-difference.
276
277 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
278
279 * grab.lisp (added-removed): Function removed.
280 (mcvs-grab): Use new intersection-difference function
281 instead of added-removed.
282
283 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
284
285 * seqfuncs.lisp (intersection-difference): New function.
286
287 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
288
289 * grab.lisp (mcvs-grab): Upgraded to work with partial sandbox.
290 Extra parameter added to specify subdirectory. File analysis
291 is only done on visible files.
292 (mcvs-grab-wrapper): Take optional parameter to specify
293 subdirectory.
294
295 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
296
297 * mapping.lisp (mapping-update): If no-delete-removed is
298 true, nevertheless print the ``* removing...'' messages
299 to show that removal from the mapping is going on.
300
301 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
302
303 * remap.lisp (mcvs-remap): Remap only the visible sandbox,
304 and combine resulting map with the invisible portion.
305
306 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
307
308 * remove.lisp (mcvs-remove): Added path conversions to support
309 partial sandboxes.
310
311 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
312
313 * generic.lisp (mcvs-generic): Added path conversions to support
314 partial sandboxes.
315
316 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
317
318 * add.lisp (mcvs-add): Added path conversions to support
319 partial sandboxes.
320
321 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
322
323 * grab.lisp (mcvs-grab): Bugfix: determination of common words
324 was failing on small file sets because the min function was
325 used instead of the max to compute the threshold.
326
327 2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
328
329 * move.lisp (source-check): Use real source path for checking
330 against MCVS/ area.
331 (mcvs-move): Ditto for destination path.
332
333 2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
334
335 * mapping.lisp (mapping-update): Make sure only those files
336 are processed which are visible in the sandbox. If a file
337 is moved out of or into visibility, this is indicated in the
338 diagnostic output.
339
340 2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
341
342 * mapping.lisp (real-path-exists): Use path-prefix-equal, because
343 that handles all the tricky cases.
344 (abstract-to-real-path): Handle the case when abstract path
345 is the same as the path prefix, with or without the trailing
346 slash.
347
348 2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
349
350 Start of experimental ``partial sandbox'' work.
351
352 * mapping.lisp (*mcvs-displaced-name*, *mcvs-displaced*): New
353 constants, hold name of administrative file MCVS/DISPLACED which stores
354 the displaced path prefix.
355 (*displaced-path-prefix*): New special variable, holds displaced
356 path prefix read from MCVS/DISPLACED.
357 (*displaced-path-length*): New special variable, holds length
358 of string stored in *displaced-path-prefix*.
359 (real-path-exists, abstract-to-real-path, real-to-abstract-path):
360 New functions for mapping between actual sandbox path, and
361 the abstract sandbox path stored in the mapping.
362 (in-sandbox-root-dir): Macro modified to read *mcvs-displaced*
363 administrative file, and set up the new special variables.
364 (mapping-synchronize): Only operate on files that are present
365 in the sandbox; i.e. that have real paths corresponding to their
366 abstract paths. Convert to the real path when calling lower
367 level file manipulation functions.
368 (mapping-update): Likewise, but this conversion is not complete.
369 (displaced-path-read, displaced-path-write): New functions for
370 reading and writing MCVS/DISPLACED.
371
372 * checkout.lisp (mcvs-checkout): One extra optional parameter.
373 Specifies the subdirectory for executing a partial checkout.
374 (mcvs-checkout-wrapper): Parse out optional parameter.
375
376 * grab.lisp (mcvs-grab): For now, when calling mcvs-checkout,
377 specify the new parameter as nil. Eventually, grab will work
378 over partial checkouts.
379
380 * move.lisp: Upgraded to work with partial sandboxes.
381 (source-check): Convert source parameter to real path for
382 existence check.
383 (move-guts): Convert destination parameter to real path before
384 invoking (stat ...) on it.
385 (mcvs-move): Map all path arguments to abstract paths.
386
387 2002-07-04 Kaz Kylheku <kaz@ashi.footprints.net>
388
389 * find-bind.lisp (find-bind-extract-vals): Rewrite for
390 efficiency. No impact on Meta-CVS, just done for the sake of improving
391 the quality of this highly reusable code. There is specialized
392 code now depending on whether the input sequence is a list or
393 a vector. A single pass is made over the sequence, with multiple
394 passes over the search values. The sequence could be large,
395 whereas the list of search values is typically going to be small.
396 (find-bind): Modified to reflect slight interface change
397 in find-bind-extract-vals.
398
399 2002-07-03 Kaz Kylheku <kaz@ashi.footprints.net>
400
401 * mcvs-main.lisp (*usage*): Describe --meta and --metaonly options.
402
403 2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
404
405 * purge.lisp (mcvs-purge): Factor out code for computing
406 deleted files.
407
408 * mapping.lisp (mapping-removed-files): New function, contains
409 code factored from mcvs-purge.
410
411 * restore.lisp: New file.
412 (mcvs-restore, mcvs-restore-wrapper): New functions.
413
414 2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
415
416 * checkout.lisp (mcvs-checkout): Don't delete the MCVS directory
417 of an existing checkout.
418
419 2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
420
421 Adding purge command.
422
423 * mcvs-main.lisp (*purge-options*): New constant.
424 (*mcvs-command-table*): New entry.
425 (*usage*): Update.
426
427 * purge.lisp: New file.
428 (mcvs-purge, mcvs-purge-wrapper): New functions.
429
430 2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
431
432 Grab no longer synchronizes to recreate deleted files immediately
433 before blowing them away.
434
435 * grab.lisp (mcvs-grab): Specify :no-sync t when calling mcvs-remove.
436
437 * remove.lisp (mcvs-remove): Support new no-sync keyword. This tells
438 mcvs-remove that the files being removed from the mapping,
439 don't exist in the sandbox. So it's not necessary to call
440 mapping-synchronize, and mapping-update can be told via
441 :no-delete-removed t not to try to remove deleted files.
442
443 * mapping.lisp (mapping-update): New no-delete-removed keyword
444 parameter.
445
446 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
447
448 * create.lisp (mcvs-create): Take out vendor branch parameter,
449 use "Created-by-Meta-CVS" as the vendor tag.
450 (mcvs-create-wrapper): Take out vendor branch parameter.
451
452 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
453
454 * generic.lisp (mcvs-tag-wrapper): This one needs to include
455 meta files by default.
456
457 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
458
459 Moving toward sane, user-friendly handling of meta-files.
460 Two new options are added --meta and --metaonly.
461 All reporting commands---diff, log, annotate---default to
462 not including the meta files. The update command remains special.
463 It does not include meta files if given filename arguments.
464 If invoked with no arguments, it does a global CVS up.
465 The commit command defaults to including the meta files.
466 The three options simply override default behavior.
467
468 * options.lisp (*nometa-option*): Eliminated useless docstring.
469 (*meta-option*): New variable.
470 (*nometa-option*): New variable.
471 (filter-global-options): Clean rewrite using find-bind.
472
473 * generic.lisp (mcvs-generic): New keyword parameters
474 default-include-meta-files, need-update-after. Implements new logic
475 related to the new options. Performs (mapping-update) if
476 need-update-after is true and metafiles were subject to cvs update.
477 (mcvs-commit-wrapper): Calls mcvs-generic with
478 :default-include-meta-files t.
479
480 * update.lisp (mcvs-update): No longer overrides the *nometa-option*
481 special variable. Passes :need-update-after t to mcvs-generic.
482
483 * mcvs-main.lisp (*cvs-options*): New options entered into list.
484
485 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
486
487 * memoize.lisp (memoize-expander): Use ordinary hash for memoizing
488 monadic functions.
489
490 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
491
492 Word comparisons are case-insensitive in mcvs grab now.
493 Also, common words are determined and eliminated from the correlation.
494 Common words are those that appear in at least 5 of the
495 added or removed files, or 20% of them, whichever is greater.
496
497 Noticed some unnecessary use of string-lessp on F-file names in
498 mapping.lisp.
499
500 * grab.lisp (read-word-hash): Use #'equalp test for case-insensitive
501 string comparisons.
502 (added-removed): Use string< instead of string-lessp for comparing
503 paths.
504 (determine-common-words, eliminate-common-words): New functions.
505 (move-candidates): Acceptance threshold reduced to 30%, since
506 elimination of common words reduces the similarity correlation.
507 (mcvs-grab): Use string< instead of string-lessp when sorting paths.
508 Do the common words computation.
509
510 * mapping.lisp (mapping-dupe-check, mapping-write,
511 mapping-difference): Use string< instead of string-lessp.
512
513 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
514
515 * memoize.lisp (factor-memo-labels): New function, rips apart
516 functions generated by memoize-expander, in order to factor
517 out the multi-hash defining let blocks.
518 (memoized-labels): Interface corrected. Also, use new function to
519 generate a labels block that allows for mutually recursive memoized
520 functions which preserve hash contents across arbitrarily mutually
521 recursive calls. This is done by enclosing the functions in one big
522 let block which binds all the hashes.
523
524 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
525
526 * seqfuncs.lisp (lcs-list): Specify #'eq test for memoization
527 parameters.
528
529 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
530
531 Adding some cool code: a multi-hash datatype which implements
532 multi-dimensional sparse arrays using a tree of hash tables,
533 and a function memoizer which uses multi hash to index on
534 function arguments.
535
536 * multi-hash.lisp (multi-hash): New class.
537 (initialize-instance): New method on multi-hash.
538 (multi-hash-common-code): New macro.
539 (get-multi-hash, set-multi-hash): New functions.
540
541 * memoize.lisp (define-memoized-function,
542 memoized-labels): New macros.
543 (remove-key-aux-rest strip-lambda-list, extract-tests,
544 remove-tests, memoize-expander): New functions.
545
546 * seqfuncs.lisp (lcs-list): Function is now correctly
547 memoized using define-memoized-function.
548
549 2002-06-26 Kaz Kylheku <kaz@ashi.footprints.net>
550
551 * grab.lisp (read-word-hash): Memory use optimizations: use smaller
552 initial size for tokens; re-use the same token object when the
553 hash already contains a duplicate.
554 (correlate): Renamed to correlate-word-hashes.
555 (correlate-paths): New function; computes a confidence-reducing
556 factor based on the differences between two paths.
557 (move-candidates): Use correlate-paths to lower the confidence
558 for distant moves. This could help sort out ambiguities when
559 projects contain very similar or duplicate files which are subject
560 to parallel moves.
561
562 * seqfuncs.lisp (lcs-list, lcs-vector,
563 longest-common-subsequence): New functions.
564
565 2002-06-25 Kaz Kylheku <kaz@ashi.footprints.net>
566
567 New feature: grab command. Takes snapshot of code and imports
568 it to a branch, trying to determine which of the added and
569 removed files are actually moves.
570
571 * grab.lisp: New file.
572 (read-word-hash, word-hash-file, correlate, added-removed,
573 move-candidates, mcvs-grab, mcvs-grab-wrapper): New functions.
574
575 * mcvs-main.lisp (*grab-options*): New constant.
576 (*mcvs-command-table*): New entry.
577 (*usage*): New text.
578
579 * checkout.lisp (mcvs-checkout): Write out MAP-LOCAL even
580 if :no-generate t is specified.
581
582 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
583
584 * checkout.lisp (mcvs-checkout): New key parameter, no-generate.
585 Tells the checkout function not to unpack the MCVS directory.
586 This will be useful when mcvs-checkout is used as a subfunction
587 of the new grab command. Failed CVS call is now turned into
588 an error. The MCVS subdirectory is *always* deleted, even if the
589 checkout did not create the checkout directory.
590
591 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
592
593 * dirwalk.lisp (dirwalk-fi): Bugfix: top call was not
594 passing down keyword parameters to recursive call.
595
596 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
597
598 * posix.lisp (canonicalize-path): Use concatenate-string
599 instead of format.
600
601 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
602
603 * posix.lisp (parse-posix-namestring): Clean rewrite.
604
605 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
606
607 The ``import'' command is renamed to ``create''.
608
609 * mcvs.main (*create-options*): Renamed to *import-options*.
610 (*mcvs-command-table*): Updated.
611 (*usage*): Updated.
612
613 * import.lisp: File renamed to create.lisp.
614 (mcvs-import): Renamed to mcvs-create; some arguments renamed.
615 (mcvs-import-wrapper): Renamed to mcvs-create-wrapper.
616
617 * README: Updated.
618
619 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
620
621 * split.lisp (split-fields): Optimized to extract tokens directly
622 from the input string using subseq rather than construct them
623 character by character.
624
625 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
626
627 * find-bind.lisp (find-bind): Use #'values instead of #'(lambda (x) x).
628
629 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
630
631 * clisp-linux.sh (:clisp-old): Added to *features*
632 for CLISP 2.28 or higher.
633 (*null-pointer*): Only defined when :clisp-old is present.
634 (pointer-null): Use new ffi:foreign-pointer-null if :clisp-old
635 feature is not present.
636
637 * install.sh: Don't do *null-pointer* workaround hack
638 unless :clisp-old feature is present in the memory image.
639
640 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
641
642 * types.lisp (types-make-cvs-adds): Serious bugfix. Forgot
643 to strip MCVS/ prefix from those F- files which don't match
644 any type entries. This caused cvs add to fail for unsuffixed
645 files.
646
647 2002-06-08 Kaz Kylheku <kaz@ashi.footprints.net>
648
649 * types.lisp (types-to-import-wrapper-args): Don't use backquote
650 template to generate a list that will be destructively catenated
651 by mapcan.
652
653 2002-05-22 Kaz Kylheku <kaz@ashi.footprints.net>
654
655 * checkout.lisp (mcvs-checkout): If a checkout directory is
656 created and then the CVS checkout fails, the directory is
657 then removed.
658
659 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
660
661 * find-bind.lisp (find-bind-extract-vals, find-bind): Process default
662 values in find-bind-extract-vals, instead of in the expansion of
663 find-bind, thereby reducing some macro bloat.
664
665 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
666
667 * remap.lisp (mcvs-remap): Loads MAP as well as MAP-LOCAL.
668 If it the mappings differ, an error is signaled. The user can choose
669 to ignore the error, in which case MAP is clobbered.
670
671 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
672
673 Adding mcvs remap command.
674
675 * dirwalk.lisp (dirwalk-fi, dirwalk, for-each-file-info): Default
676 behavior is now preorder (visit directory before its entries).
677 A keyword is provided to select the old postorder behavior.
678 A catch is provided in dirwalk-fi that allows the caller to
679 skip processing the currently traversed directory. The for-each-*
680 macros provide a local function called (skip) to do this.
681 (delete-recursive): This function depends on postorder behavior
682 in for-each-file-info, so it explicitly selects it now.
683
684 * mcvs.lisp (*remap-options*): New constant.
685 (*mcvs-command-table*): Add entry for new function.
686 (*usage*): Describes new function.
687
688 * remap.lisp: New file.
689 (mcvs-remap, mcvs-remap-wrapper): New functions.
690
691 2002-05-15 Kaz Kylheku <kaz@ashi.footprints.net>
692
693 * sync.lisp (synchronize-files): Signal an error when the two files
694 to be synchronized have the same time stamp. Provide two restarts
695 for doing the synchronization either way.
696
697 2002-05-06 Kaz Kylheku <kaz@ashi.footprints.net>
698
699 * mapping.lisp (in-sandbox-root-dir): Fix symbol macro
700 sandbox-down-path; it was referring to the (quote #:DOWNPATH-NNN)
701 rather than #:DOWNPATH-NNN.
702
703 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
704
705 * import.lisp (mcvs-import): Specify -I ! argument to cvs import
706 so that it does not ignore any F- files.
707
708 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
709
710 * mapping.lisp (mapping-update): Provide restart that allows
711 user to ignore file removal error.
712
713 2002-04-19 Kaz Kylheku <kaz@ashi.footprints.net>
714
715 Porting to CMUCL.
716
717 * system.lisp: Conditionally load new module cmucl-unix.
718
719 * mapping.lisp (mapping-dupe-check, mapping-write,
720 mapping-difference): Fixes related to sort function; we were
721 relying on CLISP's preservation of the cons cell order.
722
723 * cmucl-unix.lisp: New file.
724
725 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
726
727 * checkout.lisp (mcvs-checkout): Allow -d to specify current
728 directory as the checkout directory. Do not complain if the
729 target directory exists, just try to use it anyway,
730 unless it is the root of an existing Meta-CVS sandbox. Use
731 the mapping-update function to update the sandbox.
732 These changes allow a Meta-CVS sandbox to blend with an existing
733 directory structure, a useful feature.
734
735 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
736
737 * generic.lisp (mcvs-generic): Change how empty file argument list
738 is handled. Rather than rewriting it to '(".") we do a proper
739 map-prefix-lookup. Synchronizing and invoking CVS is elided
740 if the resulting list of files to process is empty and the --nometa
741 option is specified.
742
743 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
744
745 * branch.lisp (parse-sticky): New function.
746 (read-cvs-entries): New function.
747 (same-tag-check): New function.
748 (what-tag-are-we-on): Renamed to what-are-we-sticky-to. Calls
749 parse-sticky to return structured tag.
750 (mcvs-merge): Make use of structured tags.
751 (mcvs-list-branches): Make use of structured tags. Indicate
752 when sandbox is inconsistently sticky.
753
754 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
755
756 * remove.lisp (mcvs-remove): Corrected careless bracketing
757 introduced on 2002-03-15 that rendered this function ineffective.
758
759 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
760
761 Absolute paths resolved against sandbox root.
762
763 * posix.lisp (path-absolute-p): New function. Predicate to
764 test whether a path is absolute.
765
766 * mapping.lisp (in-sandbox-root-dir): sandbox-translate-paths
767 function detects absolute path, and treats it as relative to
768 sandbox root.
769
770 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
771
772 New switch command added, plus sticky tag related
773 bugfixes and enhancement of mcvs list-branches.
774
775 mcvs-main.lisp (*switch-options*): New constant.
776 (*mcvs-command-table*): New entries.
777 (*usage*): New help text.
778
779 branch.lisp (what-branch-are-we-on): Function renamed to
780 what-tag-are-we-on. Tests the first letter which is T or N; if
781 it is not T, then it's not a branch tag. If there is a tag,
782 it returns two values; the second value is NIL if it is not
783 a branch tag, T otherwise.
784 (mcvs-merge): Modified to use what-tag-are-we-on.
785 (mcvs-list-branches): Show additional information about the
786 current sticky tag.
787 (mcvs-merge-wrapper): Fix wrong parenthesization introduced
788 earlier today.
789 (mcvs-switch-wrapper): New function.
790
791 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
792
793 * branch.lisp (branch-tag-check): Check reserved symbol HEAD.
794
795 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
796
797 New command to list branches.
798
799 * mcvs-main.lisp (*list-branches-options*): New constant.
800 (*mcvs-command-table*): Entries for new command added.
801 (*usage*): Help text added.
802
803 * branch.lisp (mcvs-list-branches,
804 mcvs-list-branches-wrapper): New functions.
805
806 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
807
808 * branch.lisp (where-is-the-repository): New function.
809 (cvs-make-or-advance-tag): Pass down CVSROOT to cvs rtag using
810 the -d global option.
811
812 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
813
814 * branch.lisp (what-module-is-this): New function.
815 (cvs-make-or-advance-tag): Use rtag rather than tag for tagging
816 the branch being merged. This fixes the failure to merge added files.
817 (mcvs-merge): Use mcvs-update rather than directly using cvs.
818
819 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
820
821 Implemented remerge command; redo a merge without moving
822 around any tags.
823
824 * branch.lisp (mcvs-merge): New keyword parameter remerge-p
825 to indicate that a re-merge should be done, plus logic for
826 doing so.
827 (mcvs-remerge-wrapper): New function.
828
829 * mcvs-main.lisp (*remerge-options*): New constant.
830 (*mcvs-command-table*): New entry for remerge command.
831
832 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
833
834 First cut at implementing more automated branching and merging.
835
836 * mcvs-main.lisp (*branch-options*, *merge-options*): New constants.
837 (*mcvs-command-table*): New entries for branch and merge commands.
838 (*usage*): New help text.
839
840 * branch.lisp: New file.
841 (*branch-char*): New constant.
842 (tags-from-cvs-log, what-branch-are-we-on, branch-tag-check,
843 mcvs-branch, mcvs-branch-wrapper, cvs-make-or-advance-tag, mcvs-merge,
844 mcvs-merge-wrapper): New functions.
845
846 2002-04-01 Kaz Kylheku <kaz@ashi.footprints.net>
847
848 checkout.lisp (mcvs-checkout): Emit informational message
849 when checkout completes, because it's not obvious what directory
850 was just created.
851
852 2002-02-38 Kaz Kylheku <kaz@ashi.footprints.net>
853
854 Error checking added to mcvs move: verifies that all
855 sources exist and are known to Meta-CVS.
856
857 * move.lisp (source-check): New function.
858 (simple-rename, simple-move-to-dir): Use new function.
859
860 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
861
862 * rcsparse.lisp: File renamed to rcs-utils.lisp.
863 (rcs-delta): New slot, delta-hash.
864 (rcs-make-delta-hash): New function.
865 (rcs-parse): Calls rcs-make-delta-hash to set up new slot.
866
867 * convert.lisp: require changed to match file rename.
868
869 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
870
871 Some new macros for slot access.
872
873 * slot-refs.lisp: New file.
874 (with-slot-refs): New macro.
875 (with-multi-slot-refs): New macro.
876
877 * rcsparse.lisp (rcs-parse-newphrases, rcs-parse-admin,
878 rcs-parse-delta): Replace uses
879 of symbol-macrolet by with-slot-refs and with-multi-slot-refs.
880
881 2002-03-19 Kaz Kylheku <kaz@ashi.footprints.net>
882
883 Adding delta parsing to RCS parser.
884
885 * rcsparse.lisp (rcs-delta): New struct.
886 (rcs-file): New slot, deltas.
887 (rcs-parse-newphrases): New function, factors out parsing of
888 ``newphrases'' syntactic element out of rcs-parse-admin.
889 (rcs-parse-admin): Use rcs-parse-newphrases.
890 (rcs-parse-delta, rcs-parse-deltas): New functions.
891 (rcs-parse): Parse both admin and deltas; store deltas in new
892 rcs-file slot.
893
894 2002-03-18 Kaz Kylheku <kaz@ashi.footprints.net>
895
896 * posix.lisp (parse-posix-namestring): New function. Converts POSIX
897 path to CL Path object.
898
899 * rcsparse.lisp: New file, implements RCS version file parser.
900 (rcs-admin, rcs-file, rcs-token, rcs-token-stream): New structs.
901 (rcs-peek-token, rcs-read-token): New generic functions.
902 (rcs-extract-id-sym-or-num, rcs-extract-string,
903 rcs-match-optional, rcs-match-token, rcs-parse, rcs-parse-admin,
904 rcs-special-p): New functions.
905
906 * convert.lisp (classify-tags): Work with association list rather
907 than raw strings.
908 (mcvs-convert): Use rcs-parse to extract tags. Fix call to
909 mapping-generate name. Use parse-posix-namestring when opening
910 version file. Generate informative chatter.
911
912 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
913
914 * remove.lisp (mcvs-remove): More detailed error checking.
915 Checks for remove attempts against MCVS/ area, removes of local
916 files not versioned under Meta-CVS, and nonexistent files.
917
918 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
919
920 * add.lisp (mcvs-add): Error message changed to tell user to use
921 -R to add directory.
922
923 * remove.lisp (mcvs-remove): New generalized boolean parameter
924 indicates to do a recursive remove. This is controlled by the
925 -R option which already exists. Behavior changed to not act
926 on directories unless recursion is explicitly requested.
927 (mcvs-remove-wrapper): Extract "R" option, pass down new boolean
928 to mcvs-remove.
929
930 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
931
932 * remove.lisp (mcvs-remove-wrapper): Remove bogus error check.
933
934 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
935
936 * checkout.lisp (mcvs-checkout): Bugfix: must use checkout-dir, not
937 module, when testing whether directory exists or was created properly.
938
939 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
940
941 Update takes file arguments now.
942
943 * update.lisp (mcvs-update): If filename arguments are given, then
944 just call mcvs-generic to do the work, but suppress the operation on
945 meta files. If no filename arguments are given, then update everything.
946 If the -p option is present, no synchronization is needed, before or
947 after.
948 (mcvs-update-wrapper): Pass command arguments down to mcvs-update.
949
950 * mcvs-main.lisp (*update-options*): Add "p" option.
951
952 * generic.lisp (mcvs-generic): New keyword parameter need-sync-after,
953 a generalized boolean which can tell the function to do a
954 mapping-synchronize after executing the CVS command.
955
956 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
957
958 * filt.lisp (filt-select-map): Do allow a date and revision to be
959 specified; the revision could be a branch tag.
960
961 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
962
963 * mapping.lisp (malformed-map): New function.
964 (mapping-dupe-check): Perform extra error checks when reading
965 mapping, and turn them into a condition with a ``nice'' error message.
966
967 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
968
969 * mcvs-filt.lisp (filt-select-map): Handle error gracefully
970 when reading map. It's easy to give CVS is a nonexistent tag.
971
972 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
973
974 The filt command takes arguments to select alternate revision
975 of map.
976
977 * mcvs-main.lisp (*filt-options*): New constant.
978 (*mcvs-command-table*): Updated with new options.
979 (mcvs-debug-shell): Restart name changed during debugging of filt
980 changes.
981
982 * filt.lisp (filt-select-map): New function. Loads either the
983 local mapping, or retrieves an alternate mapping from CVS based
984 on command line options.
985 (mcvs-filt): Use filt-select-map rather than mapping-read.
986
987 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
988
989 * generic.lisp (mcvs-generic): Add .cvsignore to the list of
990 metafiles.
991
992 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
993
994 * import.lisp (mcvs-import): Create a .cvsignore file for ignoring
995 MAP-LOCAL.
996
997 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
998
999 Fix trailing slash bug in mcvs mv.
1000
1001 * move.lisp (simple-move-to-dir): Canonicalize path after catenating
1002 destination and file base name. This nukes a double slash if
1003 we move to a name with a trailing slash.
1004 (move-guts): Treat a destination name that has a trailing slash
1005 as a directory, unless it exists already as a non-directory.
1006
1007 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1008
1009 * mcvs-main.lisp (*cvs-options*): Added "error-terminate" and
1010 "error-continue".
1011 (*usage*): Update and reformat help text.
1012 (mcvs-execute): Process "error-terminate" and "error-continue"
1013 options.
1014
1015 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1016
1017 * mapping.lisp (mapping-update): Messages related to moving,
1018 adding or removing files promoted to terse level, so only -Q
1019 can suppress them.
1020
1021 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1022
1023 * update.lisp (mcvs-update): Changing level of chatter messages.
1024 * move.lisp (mcvs-move): Likewise.
1025 * add.lisp (mcvs-add): Likewise.
1026 * remove.lisp (mcvs-remove): Likewise.
1027 * checkout.lisp (mcvs-checkout): Likewise.
1028 * generic.lisp (mcvs-generic): Likewise.
1029 * import.lisp (mcvs-import): Likewise.
1030 * mapping.lisp (mapping-dupe-check): Likewise.
1031 (mapping-update): Likewise.
1032
1033 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1034
1035 Support for -q, -Q and -e global options.
1036
1037 * posix.lisp (*editor*): New special variable.
1038 (edit-file): Check *editor* variable; if not nil, use it.
1039
1040 * mcvs-main.lisp (*usage*): Update help text.
1041 (mcvs-execute): Set *mcvs-chatter-level* according to -q or -Q.
1042 Set *editor* if -e is specified.
1043
1044 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1045
1046 * mcvs-main.lisp (*cvs-options*): Remove obsolete "a".
1047 (*cvs-options-arg*): Add missing "r".
1048 (*usage*): New constant, help text.
1049 (mcvs-execute): Process help and version command line options.
1050
1051 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1052
1053 * options.lisp (parse-opt): Make error messages more consistent.
1054
1055 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1056
1057 * find-bind.lisp (find-bind): Make rem-var optional; sometimes
1058 the user might not care about the remaining unmatched list.
1059
1060 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1061
1062 * find-bind.lisp (find-bind): Documentation string change. Clarify
1063 that default values are substituted whenever a variable would
1064 otherwise be bound to the value NIL, even through an explicit
1065 match.
1066
1067 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1068
1069 Sane filtering of -d option in checkout.
1070
1071 * find-bind.lisp (find-bind): Variable bindings can specify
1072 a third element, which provides a default value for any variables
1073 that turn out NIL.
1074
1075 * checkout.lisp (mcvs-checkout): Filter out the -d dir option,
1076 and use it to override the name of the checkout directory,
1077 the way CVS checkout does it.
1078
1079 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1080
1081 Bugfix: mcvs add was not processing existing :ignore's in MCVS/TYPES.
1082
1083 * add.lisp (mcvs-add): Use old types as well as new types
1084 to filter for ignores.
1085
1086 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1087
1088 * find-bind.lisp: New file.
1089 (find-bind-extract-vals): New function.
1090 (find-bind): New macro.
1091
1092 * error.lisp (restart-destructure): Macro removed.
1093 (mcvs-error-handler): Uses generic find-bind instead of
1094 restart-destructure.
1095
1096 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1097
1098 * filt.lisp (mcvs-filt): Bugfix: do not stop processing line
1099 if F- file name is not found in hash table.
1100
1101 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1102
1103 Commit is handled through mcvs-generic, so it can take
1104 filename arguments, and honor --nometa.
1105
1106 * commit.lisp: File removed.
1107 (mcvs-commit): Function removed.
1108 (mcvs-commit-wrapper): Moved to generic.lisp.
1109
1110 * generic.lisp (mcvs-commit-wrapper): Moved from commit.lisp,
1111 changed to invoke mcvs-generic.
1112 (mcvs-generic): Only add TYPES file to list if it actually
1113 exists.
1114
1115 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1116
1117 New --nometa command line option.
1118
1119 * mcvs-main.lisp (*cvs-options*): Add "nometa" to list.
1120 (mcvs-execute): Filter global options to recognize
1121 Meta-CVS-specific ones.
1122
1123 * options.lisp (*nometa-option*): New special variable.
1124 (filter-global-options): New function.
1125
1126 * generic.lisp (mcvs-generic): Honor *nometa-option* special
1127 variable.
1128
1129 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1130
1131 * generic.lisp (mcvs-generic): Make sure TYPES file is
1132 included in list of files.
1133
1134 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1135
1136 * mcvs-main.lisp (*add-options*): Support -R option for add.
1137 Thus, recursive add works now.
1138
1139 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1140
1141 Fix mcvs filt so it handles suffixed F- files properly.
1142
1143 * filt.lisp (make-filt-hash): New function.
1144 (mcvs-filt): After matching hex digits, also check for
1145 a suffix match.
1146
1147 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1148
1149 Support for file type keyword treatment under mcvs add.
1150
1151 * add.lisp (mcvs-add): Restructured to build up list of new file
1152 suffixes, allow the user to edit the file which determines how
1153 they are treated, filter out ignored files and pass -k options
1154 to multiple cvs adds.
1155
1156 * types.lisp (*mcvs-new-types*): New constant.
1157 (*types-comments*): Constant moved here from import.lisp.
1158 (types-remove-ignores): New function. Code factored out from
1159 mcvs-import.
1160 (types-let-user-edit): Likewise.
1161 (types-make-cvs-adds): New function.
1162
1163 * import.lisp (*types-comments*): Constant removed. Moved to
1164 types.lisp
1165 (mcvs-import): Code factored out to new functions in types.lisp, which
1166 are also used by add.lisp.
1167
1168 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1169
1170 * print.lisp: New file.
1171 (print-assoc-list): New function.
1172 * types.lisp: Use print-assoc-list to nicely print the types.
1173 * import.lisp (mcvs-import): Don't bother getting user to
1174 edit the types if the type list is empty. In fact, don't
1175 even create the file.
1176
1177 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1178
1179 * add.lisp (mcvs-add): Use new form of mapping-generate-name.
1180
1181 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1182
1183 * import.lisp (mcvs-import): Fix broken restart for re-editing
1184 the types file.
1185 (*types-comments*): Drastically shorten the help text.
1186
1187 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
1188
1189 Support for filetypes in import.
1190
1191 * posix.lisp (suffix): Separator character parameter is optional;
1192 multiple occurences of character lead to one big suffix like
1193 ".tar.gz" instead of ".gz". A leading dot means it's not a suffix but
1194 a hidden file like ".exrc".
1195 (edit-file): New function, brings up text editor for specified file.
1196
1197 * clisp-linux.lisp (env-lookup): New function for environment
1198 variable lookup.
1199
1200 * types.lisp: New source file.
1201 (*mcvs-types-name*, *mcvs-types*): New constants for TYPES filename.
1202 (types-read, types-write, types-sanity-check,
1203 types-to-import-wrapper-args): New functions.
1204
1205 * import.lisp (*types-comments*): New constant.
1206 (mcvs-import): Restructured to build up list of file suffixes,
1207 allow the user to edit the file which determines how they
1208 are treated, filter out ignored files and pass -W options to cvs import
1209 to handle the rest. Failed cvs import is turned into restartable
1210 condition.
1211
1212 * mapping.lisp (mapping-generate-name): Takes a suffix parameter.
1213 The F-files now carry a suffix obtained from the original file,
1214 because I have concluded that this was the only reasonable way
1215 to integrate with CVS.
1216
1217 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
1218
1219 * add.lisp (mcvs-add): Last change completely broke add due
1220 to not breaking out of the retry loop.
1221
1222 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
1223
1224 * move.lisp (mcvs-move): If the mapping-update operation returns
1225 nil, or terminates by a non-local jump, restore the filemap.
1226 * mapping.lisp (mapping-update): When returning normally,
1227 return t. When returning after doing a rollback, return nil.
1228
1229 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
1230
1231 * error.lisp (mcvs-error-handler): Bugfix. We were closing over
1232 a binding of the iteration variable of a dolist, which has only
1233 one binding over the entire loop.
1234
1235 * mapping.lisp (mapping-update): Gathers up info all local
1236 clobbered files, and then throw the error. Provides restart
1237 which allows user to print the list of clobbered files, and
1238 a restart which allows the user to have those files clobbered.
1239
1240 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
1241
1242 * checkout.lisp (mcvs-checkout-wrapper): Bugfix for last bugfix.
1243
1244 2002-02-11 Kaz Kylheku <kaz@ashi.footprints.net>
1245
1246 * checkout.lisp (mcvs-checkout-wrapper): Bugfix for bad
1247 destructuring-bind if there are no arguments.
1248
1249 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1250
1251 * mapping.lisp (mapping-difference): Reformatted documentation string.
1252 (mapping-update): Implemented a continue restart which rolls back
1253 the changes done to the local filesystem.
1254
1255 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1256
1257 * error.lisp (mcvs-error-handler): Rearranging the menu,
1258 so "T" is clumped with the main options, and any special restarts
1259 are clearly separated. Changed wording.
1260
1261 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1262
1263 * update.lisp (mcvs-update): Re-print the "Invoking CVS" chatter
1264 if the user re-tries the error.
1265
1266 * add.lisp (mcvs-add): CVS failure is now a restartable error;
1267 user can decide whether to roll back the effects or retry the
1268 CVS add, or terminate to keep the effects anyway despite
1269 the failed add.
1270
1271 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1272
1273 * install.sh: Stop the script if there are compilation errors.
1274
1275 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1276
1277 * error.lisp (*mcvs-errors-occured-p*): New special variable.
1278 (mcvs-error-handler): Set *mcvs-errors-occured-p* to T.
1279 * mcvs-main.lisp (mcvs): Take *mcvs-errors-occured-p* into
1280 account in computing termination status.
1281
1282 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1283
1284 * update.lisp: Remove spurious newlines from error messages.
1285 * add.lisp: Likewise.
1286 * options.lisp: Likewise.
1287 * mapping.lisp: Likewise.
1288
1289 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1290
1291 Adding some restarts around cvs update.
1292
1293 * posix.lisp (execute-command-xargs): Bail with nil return
1294 value if any command line fails.
1295
1296 * update.lisp (mcvs-update): Tests return value of execute-program
1297 and signal condition if it's nil. Provides a continue restart
1298 as well as a retry restart to try the command again.
1299
1300 * error.lisp (mcvs-error-handler): Show retry restarts as
1301 a special menu item "R".
1302
1303 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1304
1305 Added a much improved error handling routine in anticipation
1306 of better use of restarts.
1307
1308 * error.lisp: New file
1309 (restart-destructure): New macro.
1310 (*mcvs-error-treatment*): Special variable, moved here from
1311 mcvs-main.
1312 (mcvs-error-handler): New function.
1313
1314 * mcvs-main.lisp (mcvs-top-error-handler): Function removed.
1315 (mcvs-execute): Bind error to new mcvs-error-handler instad
1316 of mcvs-top-error-handler.
1317
1318 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1319
1320 * mcvs-main.lisp (*mcvs-command-table*): The "stat" abbreviation
1321 for status command added.
1322
1323 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1324
1325 Hooking conversion tool into command structure.
1326
1327 * mcvs-main.lisp (*convert-options*): New constant.
1328 (*mcvs-command-table*): New entry for mcvs-convert-wrapper.
1329 * convert.lisp (mcvs-convert): Fix reference to nonexistent variable.
1330 (mcvs-convert-wrapper): New function.
1331
1332 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
1333
1334 Beginning work on repository conversion utility.
1335
1336 * convert.lisp: New file. Contains conversion utility
1337 to make an Meta-CVS repository from an ordinary CVS repository,
1338 while preserving all history, tags and branches.
1339 (remove-attic-component, classify-tags, read-tags,
1340 mcvs-convert): New functions.
1341
1342 * posix.lisp (suffix): New function. Computes suffix of file.
1343 (execute-program-xargs): New optional parameter, for specifying
1344 fixed part added at the end of each generated command line.
1345
1346 * mapping.lisp (*mcvs-map-name*, *mcvs-local-map-name*): New constants.
1347 (*mcvs-map*, *mcvs-map-local*): Redefined in terms of new constants.
1348 (mapping-generate-name): New key parameter no-dir for not adding
1349 the directory prefix.
1350
1351 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
1352
1353 * checkout.lisp (mcvs-checkout): Ensure local mapping is
1354 sorted when written out, for easier comparisons.
1355
1356 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
1357
1358 * sync.lisp (synchronize-files): Return :dir symbol when either
1359 argument is a directory.
1360 * mapping.lisp (mapping-synchronize): Chatter output messages
1361 are shorter. Handles :dir return value from synchronize-files.
1362 (mapping-update): New sanity checks for moved and added
1363 files, to avoid clobbering local files. Removed redundant
1364 call to ensure-directories-exit in move logic, because
1365 synchronize-files will do it anyway. Chatter messages reordered
1366 to occur before their corresponding action is done.
1367
1368 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
1369
1370 Improve error handling, and builtin ``debug shell''.
1371
1372 * mcvs-main.lisp (*mcvs-error-treatment*): Special variable
1373 can have new domain value, namely :decline.
1374 (mcvs-top-error-handler): Print error message when terminating
1375 non-restartable error. Handle new :decline treatment by
1376 simply returning.
1377 (mcvs-debug-shell): Set *mcvs-error-treatment* to :decline
1378 so that errors are caught by debugger.
1379
1380 2002-02-04 Kaz Kylheku <kaz@ashi.footprints.net>
1381
1382 * mapping.lisp (mapping-sort): Removed function.
1383 (mapping-write): Sort written map by F- file names,
1384 not by path names. This is far better for merging, because
1385 files stay in the same place when they are renamed.
1386
1387 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
1388
1389 Added status, log and annotate.
1390
1391 * mcvs-main.lisp: (*log-options*, *status-options*,
1392 *annotate-options*): New constants.
1393 (*mcvs-command-table*): Add new entries.
1394
1395 * generic-lisp (mcvs-log-wrapper, mcvs-status-wrapper,
1396 mcvs-annotate-wrapper): New functions.
1397
1398 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
1399
1400 Added tag command.
1401
1402 * diff.lisp: File renamed to generic.lisp.
1403 (mcvs-diff): Function renamed to mcvs-generic.
1404
1405 * generic.lisp (mcvs-generic): Function no longer dedicated to
1406 diffing only; takes CVS command to execute as an argument,
1407 also takes arguments and files as separate lists.
1408 (mcvs-diff-wrapper): Modified to invoke mcvs-generic properly.
1409 (mcvs-tag-wrapper): New function, uses mcvs-generic to implement
1410 tag command.
1411
1412 * mcvs-main.lisp (*tag-options*): New constant.
1413 (*mcvs-command-table*): New entry for tag command.
1414
1415 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
1416
1417 Added workaround for operating system argument passing limitations,
1418 resembling the Unix xargs utility. Also, trimmed some fat
1419 from the basename function.
1420
1421 * clisp-linux.lisp: (*argument-limit*): New constant added.
1422 (arglist-to-command-string): Function removed.
1423 (execute-program): Function removed.
1424 (shell-interpreter): New function, wrapper for CLISP's shell
1425 function, turns exit status into T (success) or NIL (failure).
1426
1427 * diff.lisp (mcvs-diff): Uses execute-program-xargs instead
1428 of execute-program.
1429
1430 * posix.lisp (basename): Does not canonicalize path name. This
1431 turns out to be an unnecessary performance hit in some cases.
1432 (arglist-to-command-string): New function. Similar to what was
1433 removed from clisp-linux, but this one properly escapes all
1434 shell metacharacters.
1435 (execute-program): New function, calls shell-interpreter.
1436 (execute-program-xargs): New function. Takes two argument lists.
1437 Forms one or more command lines by combining the first argument list
1438 with one or more pieces of the second argument list, and
1439 executes each command. The length of the pieces is determined
1440 by the argument passing limit.
1441
1442 * dirwalk.lisp (ensure-directories-gone): Add use of
1443 canonicalize-path because basename doesn't do it.
1444
1445 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
1446
1447 Algorithmic efficiency improvements. No longer using
1448 abstract set operations to update file structure or find
1449 duplicates in the maps. Could still streamline the sorting.
1450
1451 * mapping.lisp (mapping-sort): Express more succinctly using key.
1452 (mapping-dupe-check): Rewrite using loop over sorted lists.
1453 (mapping-difference): New function for computing mapping change.
1454 (mapping-update): Modify to use mapping-difference.
1455
1456 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
1457
1458 * mapping.lisp (mapping-update): When moving files, ensure
1459 that the target is unlinked if it exists.
1460
1461 * move.lisp (simple-rename): No longer do target unlinking
1462 here. Also bugfix: it wasn't handling renames of directories
1463 containing just one file.
1464
1465 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
1466
1467 * mapping.lisp (mapping-dupe-check): New function for
1468 detecting duplicate objects or paths in a mapping.
1469 (mapping-sane-p): Function removed.
1470 (mapping-read): Use mapping-dupe-check to verify a map
1471 when asked by the sanity-check keyword.
1472 (mapping-update): Specify sanity check when reading MCVS/MAP.
1473
1474 * checkout.lisp (mcvs-checkout): Checkout also performs
1475 sanity check.
1476
1477 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
1478
1479 * mcvs-main.lisp (mcvs): Use CLISP's exit function correctly
1480 to establish proper termination status.
1481
1482 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1483
1484 * mcvs-main.lisp (mcvs-execute): Parse command-specific options
1485 properly based on knowledge of each command's set of options.
1486 (parse-args): Function removed.
1487
1488 * options.lisp (parse-opt): Correctly process long options with
1489 arguments. Argument is part of the string, separated by = symbol.
1490
1491 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1492
1493 * options.lisp (parse-opt): When multiple options characters are
1494 bunched up into one argument, and one of them other than the
1495 last one takes an argument, then the remaining ones are
1496 considered to constitute a string which is an argument to that
1497 option. For instance -y32 means -y 32, not -y -3 -2, assuming
1498 that y is an option that requires an argument.
1499
1500 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1501
1502 Top level handler terminates by non-local exit back to
1503 mcvs function, rather than by calling (exit).
1504
1505 * mcvs-main.lisp (mcvs-top-error-handler): Restructured
1506 to call (throw 'mcvs-exit t).
1507 (mcvs-execute): Ensure that NIL is returned by normal exit.
1508 (mcvs): Catches 'mcvs-exit throw, and calls (exit 0) or (exit 1)
1509 accordingly.
1510
1511
1512 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1513
1514 Renamed all ``filemap-'' functions to ``mapping-'' prefix.
1515
1516 * mapping.lisp (filemap-generate-name, filemap-sort,
1517 filemap-extract-paths, filemap-lookup, filemap-prefix-lookup,
1518 filemap-prefix-matches, filemap-object-lookup,
1519 filemap-same-object-p, filemap-same-path-p, filemap-moved-p,
1520 filemap-rename-files, filemap-sane-p): Old names removed.
1521 (mapping-generate-name, mapping-sort,
1522 mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
1523 mapping-prefix-matches, mapping-object-lookup,
1524 mapping-same-object-p, mapping-same-path-p, mapping-moved-p,
1525 mapping-rename-files, mapping-sane-p): New names created.
1526 (mapping-read, mapping-write, mapping-synchronize,
1527 mapping-update): Edit calls to renamed functions.
1528 * add.lisp (mcvs-add): Likewise.
1529 * diff.lisp (mcvs-diff): Likewise.
1530 * filt.lisp (mcvs-filt): Likewise.
1531 * import.lisp (mcvs-import): Likewise.
1532 * move.lisp (simple-rename, simple-move-to-dir, move-guts): Likewise.
1533 * remove.lisp (mcvs-remove): Likewise.
1534
1535 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
1536
1537 Factored out repeated code for reading and writing of the MAP and
1538 MAP-LOCAL files.
1539
1540 * mapping.lisp (mapping-read, mapping-write): New functions.
1541 (mapping-synchronize, mapping-update): Use new functions.
1542 * move.lisp (mcvs-move): Likewise.
1543 * filt.lisp (mcvs-filt): Likewise.
1544 * add.lisp (mcvs-add): Likewise.
1545 * remove.lisp (mcvs-remove): Likewise.
1546 * checkout.lisp (mcvs-checkout): Likewise.
1547 * diff.lisp (mcvs-diff): Likewise.
1548 * import.lisp (mcvs-import): Likewise.
1549
1550 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
1551
1552 * filt.lisp (mcvs-filt): use *mcvs-dir* variable instead of
1553 hard coding "MCVS" string.
1554
1555 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
1556
1557 * MCVS-PAPER: Renamed to Meta-CVS-PAPER
1558
1559 * README: Change all references to MCVS to Meta-CVS, the
1560 new official name of the program.
1561 * add.lisp: Likewise
1562 * chatter.lisp: Likewise
1563 * checkout.lisp: Likewise
1564 * clisp-linux.lisp: Likewise
1565 * commit.lisp: Likewise
1566 * diff.lisp: Likewise
1567 * dirwalk.lisp: Likewise
1568 * filt.lisp: Likewise
1569 * import.lisp: Likewise
1570 * INSTALL: Likewise
1571 * mapping.lisp: Likewise
1572 * mcvs-main.lisp: Likewise
1573 * Meta-CVS-PAPER: Likewise
1574 * move.lisp: Likewise
1575 * options.lisp: Likewise
1576 * posix.lisp: Likewise
1577 * RELEASE-NOTES: Likewise
1578 * remove.lisp: Likewise
1579 * restart.lisp: Likewise
1580 * seqfuncs.lisp: Likewise
1581 * split.lisp: Likewise
1582 * sync.lisp: Likewise
1583 * system.lisp: Likewise
1584 * update.lisp: Likewise
1585
1586 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
1587
1588 * move.lisp (move-guts): test the actual filesystem as well
1589 as the map for existence of a directory or file. This makes
1590 the move operation behave better. Files can be moved to an
1591 existing directory that is not known to MCVS, and a file
1592 can properly clobber a target file that is not known to MCVS.
1593
1594 * clisp-linux.lisp (directory-p, regular-p, symlink-p): define
1595 methods for these generic functions for a NIL argument, such
1596 that they return NIL.
1597
1598 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
1599
1600 * move.lisp (simple-move-to-dir): eliminated a bunch of code
1601 with the result that mcvs mv now works more like the Unix mv
1602 when moving a directory to another directory.
1603
1604 * mcvs-main.lisp (mcvs-execute): fix bogus error message
1605 when options are given but no command.
1606
1607 * README: don't use -z3 in example because this style of
1608 specifying an argument to an option doesn't work.
1609
1610 2002-01-27 Kaz Kylheku <kaz@ashi.footprints.net>
1611
1612 * add.lisp (mcvs-add): Remove bogus test for NIL or T; allow
1613 recursivep to be a generalized boolean variable. This allows
1614 mcvs add -R to work properly.
1615
1616 * mcvs-main.lisp (*cvs-command-options-arg*): add support
1617 for -u parameter, useful in cvs diff.
1618 (*mcvs-command-table*): Add "fi" shorthand for "filt".

  ViewVC Help
Powered by ViewVC 1.1.5