Provided by: curves_0.8.19build1_amd64 bug


       curves - console UI to CVS source control


       curves [ --debug=value ]


       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.


              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


       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.

              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

              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.

              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).

              Perform  cvs  diff.   Differences  between the current file or marked files and the
              most recent version in the CVS repository appear on the console.

              Perform cvs log.  The CVS log for the current file or marked files appears  on  the

              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.

              Invokes the $(EDITOR) on the .curves program preferences file.

              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.

              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.

              Clears all selection marks.

              Marks/selects  files  that  are  recognized  by  CVS  source  control and have been
              modified in the current directory.

              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

              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

              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.

              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.


       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.


       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.


       Marc Singer <>