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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5