rsync の -C オプションは CVS と似たアルゴリズムで同期対象からファイルを除外してくれる。
- $HOME/.cvsignore
- CVSIGNORE 環境変数
- 各 SRC ディレクトリの .cvsignore
を参照してくれるが、それ以外にもデフォルトで除外してくれるパターンもある。
少なくとも rsync 3.0.7 では
-C, --cvs-exclude
This is a useful shorthand for excluding a broad range of files
that you often don't want to transfer between systems. It uses a
similar algorithm to CVS to determine if a file should be
ignored.
The exclude list is initialized to exclude the following items
(these initial items are marked as perishable -- see the FILTER
RULES section):
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS
.make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak
*.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe
*.Z *.elc *.ln core .svn/ .git/ .bzr/
が対象になっている。ということで
- RCS
- SCCS
- CVS
- Subversion
- Git
- Bazzar
これらはデフォルトで対応しているが Mercurial は対応していない。ことが分かった。ちぃ、……覚えられない。