Provided by: cowdancer_0.89_amd64 bug

NAME

       cow-shell - Start a copy-on-write session and invoke a shell.

SYNOPSIS

       cow-shell [commandline]

DESCRIPTION

       cow-shell  Executes  specified command with cowdancer or a shell if no command-line option
       is given.

       Inside the cowdancer session, files under the current directory are protected in a way  so
       that a write operation to an i-node which existed at the point of running cow-shell is not
       modified.

       Useful for managing hard-linked source-trees and scratch-filesystems.

EXAMPLES

       cp -al cowdancer/ cowdancer.new &&  cd cowdancer.new && cow-shell
              Create a hardlinked tree, and cd into the newly created tree.  After invoking  cow-
              shell  inside  that  tree, a write operation against a file that is hardlinked with
              the original tree will be copied to a new file before write.

       cp -al cowdancer/ cowdancer.new &&  cd cowdancer.new && cow-shell debuild
              Tries to run dpkg-buildpackage on the new tree, to avoid  damage  to  the  original
              tree.

              Configure debuild to ignore .ilist files, through -i or -I option.

FILES

       .ilist Generated  dynamically  in the current directory.  The file contains the list of i-
              node numbers that should be protected from write operation.

       /usr/lib/cowdancer/libcowdancer.so
              The shared library used internally that overrides some functions  that  potentially
              write  to  files.   This  library  implements the COW feature and is preloaded with
              LD_PRELOAD.

       /bin/cp
              Used for copying.  Requires GNU option -a to be functional.

ENVIRONMENT

       COWDANCER_ILISTFILE
              The path to the current .ilist file.

       COWDANCER_IGNORE
              Used internally to work around infinite loops.  It will be unset.

       LD_PRELOAD
              Utilized to preload libcowdancer.so

       COWDANCER_DEBUG
              Debugging option.  Enables debug  messages.   cowdancer  will  give  verbose  debug
              messages in standard error output.

       COWDANCER_SO
              Debugging option.  Specifies a different path for libcowdancer.so.

       COWDANCER_REUSE=yes
              Enables reuse of cowdancer .ilist file found for consecutive runs of cow-shell.

RETURN VALUE

       The  functions  that are overridden with cowdancer will give an errno value of ENOMEM when
       there is a problem.

       System isn't really out of memory, but this error code is chosen  because  this  error  is
       usually handled gracefully by applications.

RESTRICTIONS

       Can only support directories that are scanned by cow-shell command.

       The  operation is not semantically correct when files are originally hardlinked, hardlinks
       are always broken.

       Does not support anything when LD_PRELOAD trick does not work.

       Does not work unless hardlinks are supported on the filesystem.

       Not very user-friendly.

       Leaves .ilist file around.

AUTHOR

       Junichi Uekawa (dancer@debian.org)

       Upstream page is available at http://www.netfort.gr.jp/~dancer/software/cowdancer.html

SEE ALSO

       cowdancer-ilistcreate (1)