regexps.com
update
は開発パスに追いつくための唯一の方法ではありません。
別の選択肢は replay
です:
% cd ~/wd/project-tree % tla replay [....]
これは実際には何を行うものでしょうか。
hello-world
の古いバージョンをチェックアウトしたとしましょう:
% cd ~/wd % tla get hello-world--mainline--0.1--patch-1 hw-patch-1 [...]
結果として得られるツリーが最新のものでは無いことは, 簡単に分かります:
% cd hw-patch-1 % tla missing patch-2 patch-3
さて, hw-patch-1
にローカルに変更を加え, 次に update
を実行してみます.
何が起こるでしょうか?
ローカルの変更は patch-1に対して算出される. 言い換えれば、ここで作られるチェンジセットが記述する変更は, patch-1
リビジョンのプリスティンコピーから, プロジェクトツリーの現在の状態 (hw-patch-1
)へのものです.
patch-3 のコピーがチェックアウトされる. update
は patch-3
リビジョンのプリスティンコピーから開始します.
changeset は patch-3 ツリーに適用される. 最初の段階で算出された変更が, 新しいツリーに行なわれます.
ただし、別の方法があります:
私たちは、patch-1
のローカルコピーを持ってます.
それはは恐らく, ローカルな変更点があります:
% cd ~/wd/hw-patch-1 % tla missing patch-2 patch-3
patch-2
および patch-3
リビジョンは, それぞれ, 特定のチエンジセットに対応し, アーカイブに格納されてることを思いだしてください (それはどのように動作するか -- 新しいリビジョンの commitを参照).
これらの変更をあなたのローカルツリーに追加するには, get-changeset
を使ってそれぞれのチェンジセットを取得し, dopatch
を使って適用することもできるでしょう (get-changeset はアーカイブからチェンジセットを取得する, と dopatch を参照).
とはいえ, これは多量の退屈な作業です.
だから, arch
はもっと自動的な方法を提供して, 同様の効果をもらたします:
% cd ~/wd/hw-patch-1 % tla replay [....] % tla missing [出力無し]
replay
は、ちょうど上に述べたことをします:
アーカイブからパッチを取り出し、次々に適用します.
ただし, 一点注意があります: これらのパッチが衝突を起こすなら,
replay
は停止して, あなたが衝突を解消する必要があります.
その後、replay
が実行停止した地点から,
replay
を再度実行させることができます.
このチュートリアルを最初から追いかけてれば, replay
の作業の方法は大変自明なはずです.
実際, 上で述べただけのことです.
replay
は、missing
を使ってどの変更点がツリーに無いかを見い出し, get-changeset
でチェンジセットを取得し, dopatch
で適用します。
これを実行するのに沢山の"帳簿付け"があります.
そして, その帳簿付けこそが, replay
が自動化する作業です.
regexps.com