/[meta-cvs]/meta-cvs/F-F1216688DF5C31C04736DBD403342A77
ViewVC logotype

Contents of /meta-cvs/F-F1216688DF5C31C04736DBD403342A77

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.9 - (show annotations)
Wed Feb 26 03:46:35 2003 UTC (11 years, 2 months ago) by kaz
Branch: MAIN
CVS Tags: asdf-import-branch~merged-to-HEAD-0, mcvs-1-1-98, asdf-import-branch~branch-point, mcvs-1-1-0, HEAD
Branch point for: asdf-import-branch
Changes since 1.8: +3 -3 lines
Merging from mcvs-1-0-branch.

* code/options.lisp (format-opt): Some one-argument options of
CVS must appear as one command parameter, with no separation
between the option letter and the argument characters.
For example, ``cvs log -r foo::bar'' is invalid, it must
be ``cvs log -rfoo::bar''.  The format-opt function now
formats *all* one-letter options that have one argument
as one string.
1 A Quick Guide to Using Meta-CVS
2
3 Kaz Kylheku
4 January 25, 2002
5
6 "Anything you can do, I can do meta." -- origin unknown
7
8
9 Contents
10
11 1. Introduction . . . . . . . . . . . . . . . . . . . . . . Line 15
12 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
13 3. Filtering F- Names to Readable Names . . . . . . . . . . . . 65
14 4. Getting Started . . . . . . . . . . . . . . . . . . . . . . .
15 4.1 Creating a Module . . . . . . . . . . . . . . . . . . . . .
16 4.2 Checking Out a Module . . . . . . . . . . . . . . . . . . .
17
18 1. Introduction
19
20 This is a guide toward using Meta-CVS. It assumes familiarity with
21 version control concepts and in particular with the CVS software.
22 In particular, it is assumed that you have hands-on experience
23 with CVS and that you have read the Cederqvist manual.
24
25 In principle, Meta-CVS could be understood as a version control
26 tool independently of CVS; in practice it helps to know CVS,
27 particularly because Meta-CVS is relatively new software, and
28 because it is not intended to perfectly hide CVS from the user.
29
30 It is also assumed that you have successfully installed Meta-CVS.
31 For installation instructions see the file INSTALL.
32
33 To gain some understanding of how Meta-CVS represents your data
34 and how it works, read Meta-CVS-PAPER.
35
36
37 2. Overview
38
39 Meta-CVS has a command syntax that is deliberately similar to the
40 CVS command syntax. In general, a Meta-CVS command looks like
41 this:
42
43 mcvs [ mcvs-options ] command [ command-options ] [ arguments ]
44
45 Most of the options are simply passed through to CVS, when
46 appropriate. So for example,
47
48 mcvs -z3 update -A
49
50 will pass through the -z3 and -A options down to CVS when invoking
51 it, so that CVS ends up being called as:
52
53 cvs -z3 update -A
54
55 This passing through of options makes it easy to use Meta-CVS for
56 users who are familiar with CVS, and is also straightforward to
57 deal with in the bowels of Meta-CVS.
58
59 Not all options are passed through to CVS, and there are some that
60 are entirely Meta-CVS-specific. Think of Meta-CVS as implementing
61 an intelligent filter over the CVS options. For example, if you
62 invoke ``mcvs --version'', you don't want ``cvs --version'' to be
63 called. Similarly, if you invoke ``mcvs -Q'', you want Meta-CVS
64 as well as CVS to operate silently, so -Q has to be processed in
65 Meta-CVS as well as passed to CVS.
66
67
68 3. Filtering F- Names to Readable Names
69
70 The Meta-CVS representation brings a readability problem: the
71 cryptic F- names appear in the output produced by CVS, making it
72 difficult to understand what file the output pertains to. For
73 this reason, Meta-CVS includes a filtering command (``mcvs filt'')
74 which can be used in a pipe to filter out the cryptic names and
75 replace them with the paths that they map to. For example:
76
77 mcvs diff | mcvs filt
78
79 produces a human-readable diff.
80
81 The filter works by looking for character sequences consisting of
82 the prefix ``F-'' followed by exactly 32 hex digits. If such a
83 sequence is mapped in the MAP-LOCAL file, then it is replaced by
84 its mapping. Anything which doesn't match or doesn't map is passed
85 through unchanged. F- files can also have suffixes after the 32
86 hex digits; there has to be an exact match on a suffix.
87
88
89 4. Getting Started
90
91 4.1 Creating a Module
92
93 The only way to create a Meta-CVS module is to have an existing set
94 of files, or an empty directory, and invoke the create command
95 in the top level directory.
96
97 1. Change to the topmost directory of the file tree that you want to
98 place under Meta-CVS.
99
100 2. Invoke
101
102 mcvs create <module-name> <release-tag>
103
104 The <module-name> specifies what your module will be called; it
105 need not be the same as the name of the top level directory.
106 When later you check out the module, you will have to specify that
107 name, and by default a directory of that name will be created.
108
109 The <release-tag> is a symbolic revision that is applied to
110 the newly created file revisions; it will come in handy if
111 you ever have to refer to this original baseline.
112
113 (!) Note that CVS vendor branches do not work in Meta-CVS;
114 each mcvs create operation creates a new unique set of files, so doing
115 multiple imports over the same Meta-CVS module will *not* work like it
116 does in CVS. Do not ever run mcvs create on the same module.
117 Meta-CVS has a feature that is superior to CVS vendor branches;
118 this feature is the ``mcvs grab'' command, which takes a snapshot
119 of code onto a normal branch, and handles renamed files.
120
121 3. If your file tree contains any files whose names have suffixes,
122 Meta-CVS will gather a list of these suffixes and bring up a text
123 editor. You are expected to edit the information, save it and
124 exit the editor. This gives you an opportunity to set the CVS keyword
125 expansion mode for each file type. The association is represented
126 as Lisp association list. For example, if your file tree contains
127 C source and header files, you will probably see something like this:
128
129 (("c" :DEFAULT)
130 ("h" :DEFAULT))
131
132 This is a list of sublists. Each sublists contains two elements,
133 a string representing the file suffix, and a Lisp keyword (a colon
134 followed by identifier). The keyword represents how files of that
135 type will be handled, simply edit the keyword. There is helpful
136 comment text at the top of the file which explains what keywords
137 are available and what CVS expansion modes they correspond to.
138
139 4. Now CVS is invoked to do the import. CVS will also bring up a text
140 editor so that you can specify an import comment. This part should
141 be familiar to the CVS user.
142
143 5. The module should now be created, and is ready to be checked out.
144
145 Note that Meta-CVS does not store empty directories at all. This behavior
146 differs from CVS in a subtle way. With CVS, you can create an empty
147 directory structure, and import it. The corresponding structure will be
148 created in the CVS repository, and you can check out that structure
149 (unless you specify prune with -P, or pruning is otherwise implicit).
150 Under Meta-CVS, a directory is treated a filesystem artifact that arises
151 from multi-part path names. Two files appear in the same directory by
152 virtue of having common path components; that directory only exists
153 because those two files exist. Refer to the Meta-CVS-PAPER.
154
155 Thus, if you wish to create a new empty project, don't bother making a
156 multi-level directory tree. Just create one empty directory with no
157 subdirectories, and invoke mcvs create in that directory. It will be
158 easy to add directories later. Under Meta-CVS, the add command is
159 recursive if you specify -R, unlike under CVS which requires directories
160 to be added individually, and then files. The Meta-CVS add command also
161 identifies any new file suffixes and prompts you to edit how they
162 will be handled, similarly to the create command.
163
164
165 4.2 Checking Out a Module

  ViewVC Help
Powered by ViewVC 1.1.5