名前

tla mv — ファイル(あるいはディレクトリ、シンボリックリン ク)を移動と、付随する明示的なインベントリidの移動

用法

tla mv [options] from to
tla mv [options] from1 from2 ... dir

説明

このコマンドは Unix コマンド mv(1) と同じ意味を持ちま すが、タグづけの方法を問わず tla プロジェクトツリー中の任意 のファイルの移動を正しく行います。これは明示的にタグづけされ たファイル以外では mv(1)そのものですが、明示的にタグづけされ たファイルの場合にはそのインベントリid情報ファイルも含めた移 動を行います。これで移動後のファイルが移動前と同じインベント リidを持つことを保証します。

明示的なインベントリidを持つファイルを間違って unix コ マンドの mv(1) によって移動してしまった場合には、元のインベ ントリid情報ファイルが孤立してしまいます。この場合でも tla move-idを利用すれば修復することができます。いずれにしてもこ のコマンドはプロジェクトツリー内にしか書き込みが発生しないの で、どうしてもわからなくなった場合には tla undo すれば良いだ けの話しです。

別名

なし

変更: [-W--]

スイッチ

なし

いま、あるバージョンの patch-4 にいます。唯一のファイ ル foo.c がプロジェクトツリー内にあり、明示的なタグによって タグづけされています。

$ ls
foo.c  {arch}
$ tla inventory --ids
S  foo.c        x_foo_bar_<octopus@bluegate.org>_Mon_Apr__5_15:57:35_2004_12242.0
$ tla changes
* looking for octopus@bluegate.org--2004/test--proj--1.0--patch-4 to compare with
* comparing to octopus@bluegate.org--2004/test--proj--1.0--patch-4
$

ここで tla mv コマンドを使って foo.c を bar.c という名 前に変更してみます。

$ tla mv foo.c bar.c
$ tla inventory --ids
S  bar.c        x_foo_bar_<octopus@bluegate.org>_Mon_Apr__5_15:57:35_2004_12242.0
$

変更後の bar のインベントリidが foo.c と同じものである ことに注意してください。ここで tla changes を実行すると、GNU arch が foo.c -> bar.c のファイル名称変更を正しく認識してい ることがわかります。

$ tla changes
* looking for octopus@bluegate.org--2004/test--proj--1.0--patch-4 to compare with
* comparing to octopus@bluegate.org--2004/test--proj--1.0--patch-4
=> .arch-ids/foo.c.id   .arch-ids/bar.c.id
=> foo.c        bar.c
$

今度は unix コマンドの mv(1) で直接 foo.c を bar.c に 変更してみましょう:

$ mv foo.c bar.c
$ tla inventory --ids
P? bar.c        ???
$ tla changes
* looking for octopus@bluegate.org--2004/test--proj--1.0--patch-4 to compare with
* comparing to octopus@bluegate.org--2004/test--proj--1.0--patch-4
D  foo.c

foo.c に対応した明示的なインベントリidを同時に移動しな かったので bar.c が孤立してしまいました。"P?" がこれを示して います。また foo.c から bar.c への名称変化を把握することがで きずに tla changes の表示で foo.c が削除されたと表示されてい ます。

CVS対応コマンド

なし