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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.157.2.1 - (show annotations)
Sat Aug 24 22:37:32 2002 UTC (11 years, 8 months ago) by kaz
Branch: symlink-branch
Changes since 1.157: +15 -4 lines
* code/clisp-unix.lisp (link-error): New slot, kind. Holds
the string "symbolic" or "hard".
(initialize-instance link-error): Use new slot in constructing
message.
(link): Specify "hard" value for :kind slot of condition.
(symlink): New function.

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

  ViewVC Help
Powered by ViewVC 1.1.5