The reader may note that this format is very similar to existing
ignore list file formats, such as those for
rsync etc., and wonder if another set of ignore lists is
justified. However there are good reasons why Stow does not simply
check for the presence of say, .cvsignore, and use that if it
exists. Firstly, there is no guarantee that a stow package would
contain any version control meta-data, or permit introducing this if
it didn’t already exist.
Secondly even if it did, version control system ignore lists generally reflect build-time ignores rather than install-time, and there may be some intermediate or temporary files on those ignore lists generated during development or at build-time which it would be inappropriate to stow, even though many files generated at build-time (binaries, libraries, documentation etc.) certainly do need to be stowed. Similarly, if a file is not in the version control system’s ignore list, there is no way of knowing whether the file is intended for end use, let alone whether the version control system is tracking it or not.
Therefore it seems clear that ignore lists provided by version control systems do not provide sufficient information for Stow to determine which files and directories to stow, and so it makes sense for Stow to support independent ignore lists.