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

Contents of /meta-cvs/F-0AA69D6C8A0A864344D90F45C18B8B58

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.85 - (show annotations)
Sun Apr 13 14:39:10 2003 UTC (11 years ago) by kaz
Branch: MAIN
Changes since 1.84: +0 -3 lines
Merging from mcvs-1-0-branch.

* code/mapping.lisp (mapping-read): Provide a restart for
file errors, which lets the user interactively substitute an
empty map if the file can't be read. This is intended to handle
the case when MCVS/MAP is missing; for example, the user
updated to a sticky date for which no revision of the MAP
exists. The effect of continuing will be that all files
will disappear.
(mapping-synchronize): New :direction key
parameter, passed down to synchronize-filed. The new :no-sync
return value from synchronize-files is handled.
(mapping-update): Select the :right direction for synchronizing
moves, adds or rollbacks.

Revamped the synchronization logic. Synchronization now happens
in a specific direction.  For example, if we are doing a diff,
we just need to push changes from the tree to the MCVS directory,
not the other way around. Or: before an update or commit, we push from
the tree to MCVS, then after the update, in the other direction.

* code/update.lisp (mcvs-update): The before update is done
in the :left direction only, and the after update in the :right.

* code/move.lisp (mcvs-move): The just-in-case sync is done
in the :left direction only.

* code/link.lisp (mcvs-link): Likewise.

* code/remove.lisp (mcvs-remove): Likewise.

* code/add.lisp (mcvs-add): Get rid of mapping-synchronize call;
it's completely unnecessary, since the new files are not even
in the MAP-LOCAL, and the add logic explicitly links them into
the MCVS directory.

* code/generic.lisp (mcvs-generic): New keyword parameter,
need-sync-before. Before-synchronization done in :left direction,
after-synchronization in :right direction. Before-synchronization
is now not done by default; need-sync-before must be specified.
(mcvs-commit-wrapper): Specify before and after sync.
(mcvs-diff-wrapper, mcvs-status-wrapper,
mcvs-edit-wrapper): Explicitly specify before sync.
(mcvs-tag-wrapper, mcvs-annotate-wrapper): Implicitly specify no sync.
(mcvs-unedit-wrapper): Add before sync.

* code/sync.lisp (synchronize-files):  New key parameter :direction,
values can be :left, :right or :either. Default is :either.
If the value is :left or :right, then a sync is done only in that
direction, otherwise the value :no-sync is returned.
Behavior change: if the left file is missing (F- file in MCVS
directory) it is not re-created, but rather :no-sync is returned.
Also, if both files exist, have the same timestamp, and are
distinct objects, if the direction is :left or :right, then
the appropriate restart is automatically chosen. So this will
do the right thing on filesystems where link() is performed by
copying, without bothering the user with the error.
1 Things to do in short time frame:
2
3 - import should know things about some suffixes, like what is ``obviously''
4 binary, and what should probably be ignored.
5 - When an add wants to clobber a local file with a newly added file, provide a
6 restart which does the reverse clobber instead. Also interactive handling
7 to do this on a file by file basis might be nice. [2002.06.21]
8 - optimize split-words similarly to split-fields.
9 - Automatically synchronize sandbox symlink changes back to map [2002.08.25]
10 - Do something with symlinks in remap command [2002.08.26]
11 - Recognize when running over a case-insensitive filesystem, and adjust
12 the path-equal function accordingly. Also make sure the right comparison
13 function is used everywhere. The posix.lisp module should also export a
14 function that is suitable as an argument to :test for make-hash-table.
15 [2002.09.25]
16 - Substitute more informative messages for low-level file access messages
17 coming out of CLISP [2002.10.05]
18 - Now that everything is in a package, clean away the MCVS- prefixes from
19 symbol names. [2002.10.30]
20 - Repository branching command [2003.03.24].
21 - Local and repository ``ls'' [2003.03.24].
22 - Support for rtag and rlog commands [2003.03.24].
23 - After a commit, a synchronize should be done, because CVS can modify
24 the working copies of commited files. [2003.03.29]
25 - I think there really need to be two semantics for the hard link sync,
26 push and pull. [2003.03.29]
27
28 Longer term things:
29
30 - stop representing paths as strings, at least internally! This is sheer
31 stupidity.
32 - confusing behavior: mcvs mv * subdir causes all files from the
33 current directory to be removed, which causes the current directory
34 itself to be removed. The directory is then re-created with subdir,
35 and the files moved there. However, the shell is left in an orphaned
36 directory.
37 - cvs unedit has funny reverting behavior with respect to the time stamp.
38 it doesn't behave like update -C; rather it reverts the contents and
39 the timestamp too, so Meta-CVS thinks the reverted F-file is older.
40 - deferred cvs add: do not invoke cvs add for new files until commit
41 time. This will work around a nasty cvs add bug.
42 [2002.04.04] [Coded and tested, put in deferred-adds-branch]
43 - when files are added on a managed branch and committed, the special tags
44 should be set in these files accordingly. [2002.04.03]
45 - optimize move command, it performs badly when the number of
46 arguments is large. [2002.02.02]
47 - make *argument-limit* controllable from command line.
48 - dirwalk-fi function should put out canonicalized path names. [2002.01.27]
49 - develop repository-side migration tool to convert CVS module to Meta-CVS
50 form. [2002.01.27]
51 - investigate problems running CVS as pipe coprocess from CLISP. [2002.04.03]

  ViewVC Help
Powered by ViewVC 1.1.5