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

  ViewVC Help
Powered by ViewVC 1.1.5