Version Control with Meta-CVS 1.0-13Kaz Kylheku2003-12-31 |
cd blorg-devel
Then, invoke the command:
mcvs create blorg blorg-initial-version
The create command requires two additional arguments: the name of
the module, and a symbolic name which will identify the baseline of
newly versioned files. This name is known as a tag: more specificaly, a
version tag. Here, we have chosen the tag blorg-initial-version.
Tags are very useful when one makes a module from a specific version of an
existing program. Suppose that you didn't write Blorg yourself; rather, you
have a copy of the Blorg 2.3 sources and would like to begin your own
independent stream of development. It would then behoove you, when creating the
module, to use a tag like blorg-2-3. This tag could prove to be very
important later on; for example, when you want to create a branch from the 2.3
baseline, which will accept a new snapshot from the Blorg developers.
(("c" :DEFAULT)
("lisp" :DEFAULT)
("png" :DEFAULT)
("txt" :DEFAULT))
This is the notation for a list of four elements, as indicated by the
outermost parentheses which enclose the whole thing. Each of the four
elements is itself a list containing a string like "c" and the
symbol :DEFAULT. The string represents a file suffix, and the
symbol indicates how files having that suffix are to be treated.
Above the list, you should see a comment explaining the
various keywords which are supported. The greatest concern is to
identify what files are binary. For example, in the above definition,
the treatment of the suffix .png should be modified to :BINARY
because most likely this suffix indicates a computer graphics image
in the Portable Network Graphics format, which is a binary format
that must not be subject to line ending conversions, nor to keyword expansion.
When you are done editing, save and quit; Meta-CVS will then proceed.
If you create a syntax error, for example by introducing an unbalanced
parenthesis, Meta-CVS will prompt you with an error message, and you will
be given an opportunity to correct the error in a new text editing session.
mcvs co blorg
After a log of messages scrolls by in the terminal window, there should
now exist the subdirectory blorg, and in that subdirectory there
should appear the project's source files. This is a working copy, or a sandbox.
You can check out more than one sandbox; sometimes that is convenient to do
when one needs to work on several completely unrelated tasks in the same
project. The CVS repository doesn't know anything about your sandbox; rather,
each sandbox contains information which points back to the repository from
which it was checked out. It is safe to move the sandbox by applying the mv command to its root directory.
mcvs ci
A text editor starts up, and you are expected to enter a commit comment.
You are interacting with CVS at this point; the procedure is exactly the
same as for CVS commits. However, there is one notable difference. The file names
you see listed in the usual comment lines which begin with CVS: and which
will be removed are the F-file names, rather than the human-readable
names. Alas, CVS doesn't know about the mapping, and this text
is prepared within the innards of CVS! Meta-CVS has a solution, though not an entirely
satisfactory one, in the form of a text filtering command which
reads arbitrary text on standard input, and copies it to standard output,
filtering F-file names to their human-readable counterparts. This command
is filt, abbreviated fi.
Decent text editors allow portions of the text to be easily filtered through
an external command. For example, in the vi editor, the command
:%!mcvs fi command will apply the Meta-CVS filter to the entire edit
buffer. It's trivial to bind this this command to a control character, and
store this definition in the editor's personal configuration file, so that the
action can be repeated by typing one or two keystrokes.
mcvs add macros.lisp README
Unlike CVS, Meta-CVS allows you to add entire subdirectories at a time.
The arguments can be any mixture of files and subdirectories; however,
subdirectories are only added if the -R option is specified.
For example, to add the directories sources, documentation
and the file INSTALL.
mcvs add -R sources documentation INSTALL
Like the create command, the add command scans the files and
symbolic links to be added, and computes a list of the suffixes of the files.
If any hitherto unknown suffixes are discovered, a text editor will
be invoked to allow you to specify the treatment of these files.
The effect of mcvs add is local; the files aren't incorporated
into the repository until a commit takes place.
mcvs --meta status | grep Modified | mcvs fi # list modified files
mcvs status | grep Added | mcvs fi # list added files
The status command takes optional filename and directory arguments.
The status of a directory means all of the files in its tree.
mcvs diff -ub driver.c
shows the modifications in driver.c as a unified diff, treating lines
that differ only in the amount of whitespace as identical.
|
|
This document was translated from LATEX by HEVEA.