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

  ViewVC Help
Powered by ViewVC 1.1.5