延期

望んでいなくても、今までの作業を中断し、他の作業に取り掛からなくてはならないことがあります。例えば、すぐ対処が必要な深刻な問題が発生し、新機能に関する作業を中断しなければならない場合などです。可能であれば、完了した変更をコミットしてから緊急の課題に取り掛かるべきですが、しばしばそれらの変更はビルドを破壊したり、そもそもまだコミットできる状態ではなかったりします。

So if you can't commit your local changes yet, you have to put them aside while you're working on the urgent issue. The shelving feature helps you do exactly that: you can store your local changes on a shelve, get your working copy in a clean state again and work on the issue. After you're finished with the urgent issue and you've committed those changes, you can unshelve your shelved work and continue working on your previous task again.

Two new commands are implemented for this. One for shelving and one for unshelving.

To shelve your local changes, select your working copy and use Context MenuShelve The following dialog allows you to select the files you want to shelve and give a name under which you want to store them.

図4.16 延期ダイアログ

延期ダイアログ


If you select an existing shelf, then a new version is created for that shelf. If you provide a new name, a new shelf is created for the selected files.

If you click the Shelve button, the shelf is created and your working copy files are reset to a clean state. If you click the Checkpoint button, the shelf is created but your local modifications are kept.

To unshelve your changes, use Context MenuUnshelve to get the unshelve dialog. This dialog shows you a list of all shelved items. Select the shelved item you want and the version to apply back to your working copy and click Apply.

図4.17 延期の解除ダイアログ

延期の解除ダイアログ


ヒント

Shelves are purely a local client feature. Creating and removing Shelves will not affect the repository, nor anyone else's working copy.

Experimental

The shelving feature is still marked as experimental.

That means that while shelving works as advertised, it is still in a stage where it's heavily improved and worked on. That also means that there's no guarantee that the shelves you create are upwards compatible and future versions might not be able to use them. And of course the UI might change as well in future versions to accommodate new features and behaviors.