NAME¶
curves - console UI to CVS source control
SYNOPSIS¶
curves [
--debug=value ]
DESCRIPTION¶
curves provides a simple console UI to the CVS source control program.
Its purpose is to simplify everyday source control tasks and minimize the most
frequent errors. These errors include users forgetting to add new files when
committing, and adding binary files without setting the
-kb switch that
tells CVS to leave line endings alone and to suppress substituting keywords.
OPTIONS¶
- --debug=value
- Sets the debug output value to value which may be
either decimal, or hexadecimal if prefixed with 0x. The interesting
settings of the debug value may be found in the source.
USAGE¶
The top line of the
curves screen describes the menu of available
commands. Below the menu are two panes that list the sub-directories and files
in the current directory. Beneath these is a status line describing either the
current directory or file where the cursor is pointing. The bottom line is for
user input.
The menu bar begins with the colon delimited name of the menu. The main menu is
labeled
CurVeS while each sub-menu is labeled with the name as it
appears in the main menu. Each menu command has one capitalized letter.
Pressing this key invokes the respective command. For example, when the main
menu is active the
F key invokes the
File menu and the
Q
key quits
CurVeS.
A right pointing arrow,
>, indicates which of the two primary panes is
active. Use the
<tab> key to change the active pane. While the
directory pane is active, the up and down arrow keys move through the
directory list and
<enter> changes to that directory. The status
line reports the the name of the current directory, the number of
subdirectories in it, the number of files, and the number of selected files in
parenthesis. While the file pane is active, the arrow keys move around the
list and either
<space> or
<enter> toggles the
selection mark for the current file. The selection mark is a usually grave
accent
` but changes to an ampersand
& when it coincides
with the cursor. The status line reports the name and size of the file, the
time and date it was last modified, and the most current status of the file.
Each filename also bears a prefix mark to indicate its current status (see
File Status and Marks).
Menu Commands¶
- Cvs
- Chooses the sub-menu of CVS commands. These commands
operate either on the marked files or on the current file if none are
marked.
- CVS->Add
- Perform cvs add. The current file or marked files
are queued for addition to the module for the current directory. The
output of the command is displayed to the console.
- CVS->BinaryToggle
- For uncontrolled files that are not excluded by .cvsignore,
CurVeS attempts to determine if the file contains binary or ASCII
data. The result of its analysis is shown in the status of the file,
either New Add (B) for binary or New Add (T) for text. This
command toggles the status of the file in the unlikely event that the
heuristic failed.
Note that this status toggle persists only as long as the current
CurVeS session. This information is passed to CVS only when the
file is added to the module. See the CVS->Add menu command.
- CVS->Commit
- Perform cvs commit. The current file or marked files
are committed to CVS. CurVeS prompts the user for a commit comment
using the preferred editor. See the CommitCommentEditor preference
in curves(5).
- CVS->Diff
- Perform cvs diff. Differences between the current
file or marked files and the most recent version in the CVS repository
appear on the console.
- CVS->Log
- Perform cvs log. The CVS log for the current file or
marked files appears on the console.
- CVS->Update
- Perform cvs update. This command synchronizes the
current directory with the CVS repository. It is important to do this
before committing changes.
- File
- Chooses the sub-menu for File commands. These perform
general file operations pertaining to the operating system.
- File->Change dir
- Prompts the user for a directory to make the current one.
- File->Options
- Invokes the $(EDITOR) on the .curves program
preferences file.
- File->View
- Pipes the contents of the current or selected files to
less.
- Mark
- Chooses the sub-menu for Mark (select) commands. These
change the file selection according to the class of each file.
- Mark->AddedNotYet
- Marks/selects the not-yet-added files. These are the files
that CurVeS determines may be new to the project but have not been
added.
- Mark->Clear
- Clears all selection marks.
- Mark->Edited
- Marks/selects files that are recognized by CVS source
control and have been modified in the current directory.
- Mark->Uncommitted
- Marks/selects files that have either been edited, added, or
removed from the current directory and have not yet been committed.
- Sort
- Change the file sort criteria. The menu bar changes to
display the key options and the user input area prompt for a new value.
The first sort key is always used. The second and successive keys are used
to break ties where the previous keys are ambiguous. For example, an alpha
sort is unambiguous and will never use any other keys. Usually, there are
many files in each class, so the class key usually requires another key.
If an insufficient number of keys is given for an unambiguous sort, a file
'a' alpha key is inferred.
The keys are as follows:
- a
- sort alphabetically without regard to case. Thus 'abe'
sorts before 'AXE'.
- A
- sort alphabetically according to ASCII lexical order. Thus
'AXE' sorts before 'abe'.
- c
- sort by file classification mark. The order of these marks
is defined internally to CurVeS and is from most interesting to
least interesting. Source controlled files are more interesting than
uncontrolled files. Edited files are more interesting that unedited,
added, removed, or out-of-sync files.
- n
- sort newest files first.
- o
- sort oldest files first.
- l
- sort longest files first, those with the greatest file
size.
- s
- sort shortest files first, those with the smallest file
size.
- Version
- Display CurVeS version number in the user entry
area.
- Quit
- terminates the program.
Search Commands¶
CurVeS provides a quick method to search for a particular name in the
current pane. The solidus '/' key executes a simple forward search command.
Enter a string and the cursor moves to the next filename that contains that
string. The question mark '?' key executes a simple reverse search.
File Status and Marks¶
The status of each file is coded in three ways. It is displayed in the status
area when the cursor points to the file. The single character prefix for each
file indicates the file status. When available, each file is displayed in a
color for it's status.
This table shows the name of the file status, the character prefix for that
status, the color used for the Linux console, and the color used in X-Windows.
- Added '+' Magenta / Red
- File has been scheduled to be added to the module. This
addition will propagate to the repository on commit.
- Checkout '=' Magenta / Red
- File exists in the repository, but has never been
checked-out into the working directory. This occurs in multi-developer
projects when others add a new files to a module.
- Conflict '*' Red / Red
- Changes committed to the repository conflict with local
changes to the file. Look through the source file for
<<<<<<< filename
... local changes
=======
... repository changes
>>>>>>> revision
where filename is the name of the local file and revision is
the number of the most recent revision comitted to the repository.
These conflicts must be resolved before committing local changes to this
file.
- Edited '>' Yellow / Blue
- File has been locally modified and no changes have been
committed to the file since it was checked-out.
- Lost '^' Red / Red
- The local copy of the file is missing even though it had
been checked-out at one time. The CVS->Update command will
restore the latest copy of this file.
- NewAdd (T) '?' Green / Green
- File has not been added to the module and is not excluded
by any of the cvsignore lists. CurVeS has analyzed the file and
determined it to be ASCII text. This is the normal mode for new files, but
can be changed before it is added to the module by using the
CVS->BinaryToggle menu command.
- NewAdd (B) '?' Green / Green
- File has not been added to the project and is not excluded
by any of the cvsignore lists. CurVeS has analyzed the file and
determined it to contiain binary data. When added to the module, this file
will not experience line-ending changes nor will it have CVS keywords
substituted. CurVeS sets the -kb CVS switch for binary files
when adding them to a module. This mode may be changed before it is added
to the module by using the CVS->BinaryToggle menu command.
- Merge '!' Magenta / Red
- File has been locally modified and has had changes
committed to the repository. The changes from the repository must
be merged with the local file copy before CVS commit local changes. Use
the CVS->Update commands to merge the repository changes into
the local copy of this file.
- Patch '<' Magenta / Red
- Changes to this file have been committed to the repository
since it was last checked-out and no local modification have been made.
Use the CVS->Update command to incorporate the repository
changes into the local copy of this file.
- Removed '-' Magenta / Magenta
- File has been scheduled to be removed from the repository.
The removal will propagate on commit.
- UpToDate ':' Cyan / Cyan
- File is controlled by CVS but has neither been changed
locally nor have changes been committed to the repository.
Built-in Line Editor¶
When prompting the user for input,
CurVeS uses simple, built-in line
editor that emulates the most interesting EMACS keystrokes. If there is a
default or current setting for the prompt it is shown highlighted to show
selection. Typing a new value will replace the selected value. The left arrow
or ^B move the cursor to the left. The right arrow or ^F move the cursor to
the right. HOME or ^A moves the cursor to the beginning of the line. END or ^E
moves the cursor to the end of the line. DELETE and ^D delete the character
under the cursor. BACKSPACE and ^H delete the previous character. ^K deletes
the character under the cursor and all characters to the end of the line. ESC
and ^G cancel the input. ENTER accepts the new value.
Terminal Emulation¶
CurVeS does use the termcap and terminfo databases when available, but it
does not use either the curses or ncurses packages to interpret them. The
program first looks in the terminfo database for the current terminal type. If
it isn't found, it then looks for a termcap entry.
ENVIRONMENT VARIABLES¶
CurVeS uses the TERM variable to select the correct terminal type. It
uses EDITOR, or VISUAL if EDITOR value is empty, as the editor for the
preferences file.
BUGS¶
CurVeS always scans the current directory for the latest status for each
file. If access to the repository has a high latency or the directory is
large, this scan may take much time. In addition, if the repository is remote
and the user's access to it is through a dial-up connection,
CurVeS may
initiate a dial-out. The solution to this problem involves the use of a cached
(and potentially stale) view of the repository's latest log entries.
CurVeS has no method for working with trees of files. It is not possible
to perform a commit on more than one directory at a time.
AUTHOR¶
Marc Singer <elf@debian.org>
SEE ALSO¶
curves(5)