doc/hgrc.5.txt
changeset 1293 a6ffcebd3315
parent 1258 1945754e466b
child 1304 a69e5a67685c
equal deleted inserted replaced
1292:141951276ba1 1293:a6ffcebd3315
    65   Filters for transforming files on checkout/checkin. This would
    65   Filters for transforming files on checkout/checkin. This would
    66   typically be used for newline processing or other
    66   typically be used for newline processing or other
    67   localization/canonicalization of files.
    67   localization/canonicalization of files.
    68 
    68 
    69   Filters consist of a filter pattern followed by a filter command.
    69   Filters consist of a filter pattern followed by a filter command.
    70   The command must accept data on stdin and return the transformed
    70   Filter patterns are globs by default, rooted at the repository
    71   data on stdout.
    71   root.  For example, to match any file ending in ".txt" in the root
    72 
    72   directory only, use the pattern "*.txt".  To match any file ending
    73   Example:
    73   in ".c" anywhere in the repository, use the pattern "**.c".
       
    74 
       
    75   The filter command can start with a specifier, either "pipe:" or
       
    76   "tempfile:".  If no specifier is given, "pipe:" is used by default.
       
    77 
       
    78   A "pipe:" command must accept data on stdin and return the
       
    79   transformed data on stdout.
       
    80 
       
    81   Pipe example:
    74 
    82 
    75     [encode]
    83     [encode]
    76     # uncompress gzip files on checkin to improve delta compression
    84     # uncompress gzip files on checkin to improve delta compression
    77     # note: not necessarily a good idea, just an example
    85     # note: not necessarily a good idea, just an example
    78     *.gz = gunzip
    86     *.gz = pipe: gunzip
    79 
    87 
    80     [decode]
    88     [decode]
    81     # recompress gzip files when writing them to the working dir
    89     # recompress gzip files when writing them to the working dir (we
       
    90     # can safely omit "pipe:", because it's the default)
    82     *.gz = gzip
    91     *.gz = gzip
       
    92 
       
    93   A "tempfile:" command is a template.  The string INFILE is replaced
       
    94   with the name of a temporary file that contains the data to be
       
    95   filtered by the command.  The string OUTFILE is replaced with the
       
    96   name of an empty temporary file, where the filtered data must be
       
    97   written by the command.
       
    98 
       
    99   NOTE: the tempfile mechanism is recommended for Windows systems,
       
   100   where the standard shell I/O redirection operators often have
       
   101   strange effects.  In particular, if you are doing line ending
       
   102   conversion on Windows using the popular dos2unix and unix2dos
       
   103   programs, you *must* use the tempfile mechanism, as using pipes will
       
   104   corrupt the contents of your files.
       
   105 
       
   106   Tempfile example:
       
   107 
       
   108     [encode]
       
   109     # convert files to unix line ending conventions on checkin
       
   110     **.txt = tempfile: dos2unix -n INFILE OUTFILE
       
   111 
       
   112     [decode]
       
   113     # convert files to windows line ending conventions when writing
       
   114     # them to the working dir
       
   115     **.txt = tempfile: unix2dos -n INFILE OUTFILE
    83 
   116 
    84 hooks::
   117 hooks::
    85   Commands that get automatically executed by various actions such as
   118   Commands that get automatically executed by various actions such as
    86   starting or finishing a commit.
   119   starting or finishing a commit.
    87   changegroup;;
   120   changegroup;;