Man Linux: Main Page and Category List


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


       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

              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.

              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

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

              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

              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

       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

              s    sort  shortest  files  first,  those with the smallest file

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