Apache Subversion 1.15のPristines On Demandは、クライアントに保存していたファイルの基準版を必要に応じてダウンロードし、ローカルストレージの使用量を減らす機能だ。Apacheは、この方式を選ぶと作業コピーの容量を最大50%削減できるとしている。実際の削減率を保証する数値ではない。
Apache Software Foundationは2026年10月14日の発表で、1.15がダウンロード可能になったと伝えた。容量の削減対象は開発者の端末にある作業コピーであり、サーバーのリポジトリを小さくする機能ではない。
ローカルでの差分表示を支えていたBASEキャッシュ
従来の作業コピーは、編集対象のファイルに加え、各ファイルのBASEリビジョンも保持する。BASEはローカルの変更を比較したり取り消したりする際の基準となる版で、このファイルのコピーをpristineと呼ぶ。
リリースノートによると、標準構成の.svnディレクトリは、チェックアウトしたファイル群よりも少し多くの容量を占める。その大半はBASEキャッシュであり、これを減らすかなくせば容量を節約できる一方、ローカルで完結していた操作にリポジトリとの通信が必要になる場合がある。
Apacheの比較表では、BASEとの差分表示(diff)や変更の取り消し(revert)が、リポジトリに接続しない操作から、必要な基準版をダウンロードする操作に変わる。このダウンロードをリリースノートではhydrationと呼んでいる。
毎回すべてのファイルを取得するという意味ではない。ローカルで内容を変更したファイルに必要なpristineがなければダウンロードし、取得したコピーは必要な間、キャッシュに残る。
ただし、初期実装では操作対象を含むサブツリー内で、ほかのダウンロード対象ファイルも一緒に取得する場合がある。Apacheは、ファイルサイズとネットワーク速度によっては、体感できる遅延が生じ得ると説明している。
コミットも変わる。変更部分だけを送る方式に代わり、ローカルで変更した各ファイルの内容全体を送信する。
チェックアウト時の選択で変わる互換性
svn checkoutの--store-pristine=noオプションは、作業コピー全体に適用される。この選択ではFormat 32を使うため、その作業コピーを扱うクライアントはすべて1.15以降であることが条件となる。
標準のチェックアウトは、BASEをすべてキャッシュするFormat 31を維持し、1.8以降のクライアントと互換性がある。Format 32でも全体をキャッシュできるため、形式番号だけでは必要に応じて取得するモードかどうかは判断できない。
Apacheの機能一覧では、必要なサーバーとリポジトリのバージョンはいずれも制限なしとされている。サーバーのアップグレードが前提となる機能ではなく、古いクライアントは別のFormat 31作業コピーを引き続き利用できる。
したがって、チェックアウト方針の変更を検討する対象は、大きく変更頻度の低いファイルが多く、ローカル容量は不足しているものの、リポジトリへの接続は高速で安定している環境だ。ファイルを頻繁に変更する場合、基準版のダウンロードと変更ファイル全体のアップロードが、容量削減の利点を上回る負担になり得る。
オフラインでのdiffやrevertも、必要な基準版がローカルにあるかどうかで利用可否が変わる。チーム全体の既定値を変えるより、ファイルの変更頻度と接続条件が合う作業コピーから選択的に導入する判断が妥当だと考えられる。
確認した資料には、ディスク使用量や通信量を比較する測定方法とベンチマークはなく、本記事でも実行テストは行っていない。
サーバーのリポジトリが大きいという事実だけでは、ローカルでの削減量は分からない。実際のファイル構成で確保できる容量と、ダウンロード・アップロードの待ち時間は、別途確認する項目となる。
別の作業コピーでの設定確認
1.15以降のクライアントで別のパスにチェックアウトすれば、既存の作業コピーを保ったまま設定を確認できる。次のコマンドは、リリースノートに記載されたオプションと情報表示コマンドを使っている。
svn checkout --store-pristine=no <repository-url> <working-copy-path>
cd <working-copy-path>
svn infoApacheのsvn infoの例は、Working Copy Formatが32、Working Copy Store Pristineがnoの構成を示している。この確認で分かるのは、必要に応じて基準版を取得する設定かどうかだけであり、容量の50%削減や性能向上を実証するものではない。
1.15の変更は、すべてのチームに同じ利点をもたらすというより、ローカルキャッシュとリポジトリとの通信の間で選べる範囲を広げるものだ。導入の判断では、確保できた容量に加え、基準版のダウンロード、コミットの送信量、チームで使うツールのクライアントバージョンが検討項目となる。
Pristines On Demandの導入基準は最大削減率ではなく、BASEキャッシュの削減が、増える通信負荷とクライアント互換性のコストに見合うかどうかだ。
