オープンソースソフトウェアの悩みを解決する

最新のオープンソースソフトウェア情報と安心のサポート提供


コラム

Subversion 1.12リリースノート

ページ更新日:2019-07-29

「Apache Subveriosn 1.12リリースノート」

現在、Apache Foundationで開発が進められております、Apache Subvesrion 1.12のリリースノートの日本語翻訳を掲載します。冗長な表現などは意訳しています。
(翻訳:Shin)
Version1.6からの変遷今後のリリースサイクルの変更も掲載しています。合わせてどうぞ。

Apache Subversion 1.12の新機能とは


・改善されたシェルフ(実験的)(*訳注:TortoiseSVNでは「延期」メニュー)
・チェックポイントをコミットする(実験的)
・競合解消の改善
・多くの機能拡張とバグ修正
・リリースの既知の課題


Apache Subversion 1.12はApache Subversion 1.11以前のすべてのSubversionリリースのスーパーセットであり、現在の「ベスト」と見なされるリリースです。 1.0.x〜1.11.xの機能やバグフィックスも1.12に含まれています。また、1.12には以前のリリースにはない機能やバグフィックスが含まれています。新しい機能は、最終的に無料のSubversionブック(svnbook.red-bean.com)の1.12バージョンで文書化されます。

このページでは、大きな変更点についてのみ説明します。変更の完全なリストについては、CHANGESファイルの1.12セクションを参照してください。

コンパチビリティ(互換性)に関して

古いクライアントとサーバーは、1.12サーバーとクライアントと透過的に相互に情報通信が可能です。ただし、クライアントとサーバーの両方が最新バージョンでないと、新しい1.12機能の一部が使用できない場合があります。クライアントが新しくサーバーが古い場合は新しい機能は効率的に動作しないことがあります。
リポジトリをdump,reloadする必要はありません。 Subversion 1.12サーバーは、以前のバージョンで作成されたリポジトリに読み書きできます。既存のサーバーをアップグレードするには、最新のライブラリとバイナリを古いものに上書きしてください。
Subversion 1.12は、新しい機能を追加するだけで、古い機能を削除することなく、以前のリリースとのAPI / ABIの互換性を維持します。以前の1.x APIに書き込まれたプログラムは、1.12のライブラリを使用してコンパイルおよび実行できます。しかし、1.12用に書かれたプログラムは、古いライブラリに対してコンパイルあるいは実行できるとは限りません。
古いAPIの動作が以前のリリースから若干変更されたケースは限定されています。これらの機能がバグであるとみなされ、したがって改善または削除されたケースです。これらのAPIの内容と、これらの変更がもたらす影響についての詳細は、API erretaを参照してください。

新機能のコンパチビリティテーブル

新機能 最小クライアント1 最小サーバー 最小リポジトリ ノート
Shelving 1.12 any any Shelves created by 1.10 are not compatible
Commit Checkpointing( Experimental) 1.12 any  any   

作業コピーのアップグレード

Subversion 1.12は、Subversion 1.8〜1.10と同じ作業コピーフォーマットを使用します。
既存のSubversion 1.7以前の作業コピーでSubversion 1.12を使用する前に、作業コピーのメタデータを新しい形式にアップグレードするため、svn upgradeコマンドを実行する必要があります。このコマンドは、場合によってはしばらく時間がかかることがあり、ユーザーによっては、新しい作業コピーを単にチェックアウトするほうが実用的かもしれません。

注意: 1.6でsvn クリーンアップを事前に行わなかった為にアップグレードできなかった作業コピーを、Subversion 1.12ではアップグレードすることはできません。つまり、1.8以上にアップグレードする前に、1.6以前の古いクライアントを使用して、クリーンアップが必要なすべての1.6以前の作業コピーに対してsvn cleanupを実行する必要があります。同様に、Subversion 1.12は破損した作業コピーをアップグレードすることはできません。 .svnディレクトリ内のメタデータがないか破損しているため、修正不可能な問題が発生する可能性があります。このような作業コピーへのダメージは永続的であり、アップグレード前にsvnクリーンアップを実行しても修正できません。

作業コピーが正常にアップグレードされない場合は、新しいものをチェックアウトし直してください。

改善とバグフィックス(コマンドライン・クライアント)

シェルフの改善(実験)

シェルビング(Issue #3625)は、Subversion1.10で紹介され、1.12でより多くの変更をより安定して扱えるように改善されました。

警告:本機能は1.12では「実験的」の扱いです。初期版の扱いでリリースされており、開発中のものです。1.12より後のバージョンで大きく変更される可能性があります。後のバージョンとの互換性は保証されません。

コミット・チェックポインティング(実験的)

コミット・チェックポインティング(Issue #3626)は、Subversion 1.11にて紹介され、1.12にてより多くの変更をより安定して扱えるように改善されました。

警告:本機能は1.12では「実験的」の扱いです。初期版の扱いでリリースされており、開発中のものです。1.12より後のバージョンで大きく変更される可能性があります。後のバージョンとの互換性は保証されません。

対話型コンフリクト・リゾルバの改善

対話型コンフリクト・リゾルバは、アイテムが全く異なるロケーションに移動した場合のケースをサポートしました。作業コピーにあるバージョニングされていないアイテムの扱いについても改善されました。下の表は、今回新しくサポートされたコンフリクト解消のケースについて記載します。
Local Chnage incoming Change Operation Resolution Options
move file move file update, merge Merge:テキストの変更のみ適用し、作業コピーのツリー構造はそのまま

Move and Merge:変更をマージする前に作業コピーのフィアルのロケーションをマージ元のロケーションと一致するよう変更する
move directory move directory merge Merge:変更を相当するディレクトリに適用し、作業コピーのツリー構造はそのまま

Move and merge: 変更をマージする前に作業コピーのディレクトリのロケーションをマージ元のロケーショと一致するよう変更する
unversioned file add file Update, switch Merge: バージョニングされていないファイルを受信ファイルと統合する
unversioned directory add directory Update, switch 作業コピーにディレクトリを再追加するが、ファイルは現状を変更しない


svn updateの間、バージョニングされていないアイテムを含むがそれ以外の変更がないディレクトリの削除は、ツリー・コンフリクトの原因にはならなくなりました。例えば、作業コピーにあるビルド・アーティファクトによるツリーのコンフリクトを無効にしました。

コンフリクト・リゾルバにおけるいくつかのバグを修正しました。これには、テキスト・コンフリクト・マーカーの内で、受信したテキストの変更とローカルのテキストの変更テキストが入れ替わって作られるコンフリクトのケースを含みます。これは、svn resolveを、-accept (受信またはローカル)オプションをつけた際に、予期しない結果を引き起こしていました。

Subversion 1.12開発で発見された、バージョニングされていないアイテムのサポートとコンフリクト・リゾルバのバグの修正については、Subversion 1.10と1.11に対してバックポートしています。

サーバ側の改善

Subvesrionサーバは、パスベースの認可ルールに置いて、空のグループ定義を無視するようにしました。svnauthzコマンドが、空グループ定義を検知すると警告を返します。

クライアントとサーバの改善

UNIX系システムに置いて、コンパイル時点で、クライアント側ストレージの平文パスワードは無効化されました。代わりにGnome Keyring, Kwallet, GPG-Agnetと行ったパスワード・キャッシング機構を推奨します。
この変更は、WindowsやMacOSプラットフォームには影響しません。パスワードは既に暗号化されているためです。

リポジトリソースと作業コピーターゲットのコピー動作が改善されました。

  • 既存のペアレント・ディレクトリは正しくハンドルされるようになりました。
  • #issue4785のペグとオペレイティブリビジョンが正しくハンドルされるようになりました


svn listコマンドは、動的に表示カラムを調整することで長いAuthor名をカットせずに表示するようになりました。

svn listコマンドは “--human–readable” (-H)オプションをサポートし、可読な単位でサイズを表示します(バイト、キロバイト、メガバイト、ギガバイト、テラバイト、ペタバイト)。

svn info コマンドはリポジトリのファイルサイズを表示できるようになりました。ファイルサイズは、コマンドのターゲットがURLの場合のみ表示されます。

svn cleanupコマンド(バージョニングされていなかったり、無視されたアイテムを削除する)は、(書き込み禁止の場合も)ディレクトリを削除できるようになりました。

API変更、改善、言語バインディング

Subversion 1.12リリースにはいくつかの既知の問題があります。これらは、後の1.12.xリリースで修正される予定です。

RubyバインディングはSwig3.0.9が要件に

このセクションは、Subversionをワーキングコピーからビルドする人にだけ関係があります。RubyのバインディングはSwigのISSUE #602によりバージョン3.0.8は使用できません。そのため、Swigは3.0.9またはそれ以降を推奨します。これはテストスィートで確認できます。どのバージョンのSwigがバインドされているかテストをするには、'make check-swing-rb)を実行してください。ただし、いくつかのディストリビューションはパッチを3.0.8にバックポートしています。
PerlとPythonのバインディングには影響はありません。

APR 1.7.0でのコンパイルが失敗する

ARP-1.7.0にてSubvesrion1.12.0(1.10, 1.11も同様)のコンパイルに失敗します。これは将来修正予定です。

Subversion 1.12.xシリーズは、レギュラーリリース

Subversion1.12は、6か月サイクルで出されるレギュラーリリースの最初のリリースです。これは新しい機能をより迅速に紹介する、サポート期間の短いリリースです。Subversion 1.12のリリースにより直前のレギュラーリリースである1.11はサポートを終了しました。
Subversion 1.9と1.10は継続してLTS(Long Term Support)としてサポートしています。次のLTSは1.14の番号付け、1.10のリリースの2年後にリリースする予定です。