DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(cvs.info.gz) Binary howto

Info Catalog (cvs.info.gz) Binary why (cvs.info.gz) Binary files
 
 9.2 How to store binary files
 =============================
 
 There are two issues with using CVS to store binary files.  The first
 is that CVS by default converts line endings between the canonical form
 in which they are stored in the repository (linefeed only), and the
 form appropriate to the operating system in use on the client (for
 example, carriage return followed by line feed for Windows NT).
 
    The second is that a binary file might happen to contain data which
 looks like a keyword ( Keyword substitution), so keyword
 expansion must be turned off.
 
    The `-kb' option available with some CVS commands insures that
 neither line ending conversion nor keyword expansion will be done.
 
    Here is an example of how you can create a new file using the `-kb'
 flag:
 
      $ echo '$Id$' > kotest
      $ cvs add -kb -m"A test file" kotest
      $ cvs ci -m"First checkin; contains a keyword" kotest
 
    If a file accidentally gets added without `-kb', one can use the
 `cvs admin' command to recover.  For example:
 
      $ echo '$Id$' > kotest
      $ cvs add -m"A test file" kotest
      $ cvs ci -m"First checkin; contains a keyword" kotest
      $ cvs admin -kb kotest
      $ cvs update -A kotest
      # For non-unix systems:
      # Copy in a good copy of the file from outside CVS
      $ cvs commit -m "make it binary" kotest
 
    When you check in the file `kotest' the file is not preserved as a
 binary file, because you did not check it in as a binary file.  The `cvs
 admin -kb' command sets the default keyword substitution method for
 this file, but it does not alter the working copy of the file that you
 have.  If you need to cope with line endings (that is, you are using
 CVS on a non-unix system), then you need to check in a new copy of the
 file, as shown by the `cvs commit' command above.  On unix, the `cvs
 update -A' command suffices.  (Note that you can use `cvs log' to
 determine the default keyword substitution method for a file and `cvs
 status' to determine the keyword substitution method for a working
 copy.)
 
    However, in using `cvs admin -k' to change the keyword expansion, be
 aware that the keyword expansion mode is not version controlled.  This
 means that, for example, that if you have a text file in old releases,
 and a binary file with the same name in new releases, CVS provides no
 way to check out the file in text or binary mode depending on what
 version you are checking out.  There is no good workaround for this
 problem.
 
    You can also set a default for whether `cvs add' and `cvs import'
 treat a file as binary based on its name; for example you could say
 that files who names end in `.exe' are binary.   Wrappers.
 There is currently no way to have CVS detect whether a file is binary
 based on its contents.  The main difficulty with designing such a
 feature is that it is not clear how to distinguish between binary and
 non-binary files, and the rules to apply would vary considerably with
 the operating system.
 
Info Catalog (cvs.info.gz) Binary why (cvs.info.gz) Binary files
automatically generated byinfo2html