プレシャス、バックアップ、ジャンクの具体的な意味

プレシャス属性

GNU arch のファイルグループの一つに「プレシャス」がある。こ れはローカルにコピーされる場合にソースと共にコピーされるという性質 を与えられたものだが、「ローカルにコピーする」とは一体正確にはどの ような状況を指すのかを議論する。

プレシャスのコピーに関係したソースファイルは、

./src/tla/libarch/copy-project-tree.c

にある

arch_copy_project_tree()

関数であり、これが呼び出されるのは、以下の四つの場所である。

cmd-apply-delta.c:        arch_copy_project_tree (upon, dest, 1, 1);
cmd-join-branch.c:        arch_copy_project_tree (upon, dest, 1, 1);
cmd-sync-tree.c:        arch_copy_project_tree (upon_root, dest, 1, 1);
cmd-update.c:        arch_copy_project_tree (upon_root, dest, 1, 1);

つまり、これらのコマンドでは既存のプロジェクトツリー上で処理 を実行するかわりに --dest オプションで新規ディレクトリを指定して実 行することもできるが、この場合元になるプロジェクトツリー中のソース とプレシャスがそこにコピーされた後、それぞれのコマンドが実行される。

バックアップ属性とジャンク属性

バックアップとジャンクの属性の違いは、ジャンク属性が「安全 に削除できる」ということで示されている。が、現時点(tla-1.2) のソー スコードを見てもバックアップとジャンクのどちらかが特別に扱われて いる気配はない。これについて説明する。

現時点ではこの両者にははっきりした区別はない。ただし tla は内部的に ,, で始まるファイルを一時的なファイルとして利用してお り、これは =tagging-method などの設定がどうであれ必ず junk と見 なされる約束がある。このため、上記の意味にしたがって junk 属性を =tagging-method の中で適切に設定すれば、今後将来にわたっても

$ tla inventory -j | xargs rm -r

として、tla を内部的な一時ファイルを含むジャンクファイルす べてを削除することができる。そのような利用方法を狙っている。