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

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


コラム

Subversion 1.11 リリースノート(アルファ)

ページ更新日:2020-06-22

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

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

Apache Subversion 1.11の新機能とは


・改善されたシェルフ(実験的)
・チェックポイントをコミットする(実験的)
・競合解消の改善
・多くの機能拡張とバグ修正
・リリースの既知の課題


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

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

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


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

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

新機能 最小クライアント1 最小サーバー 最小リポジトリ ノート
Shelving 1.11 any any Shelves created by 1.10 are not compatible
Commit Checkpointing( Experimental) 1.11 any  any   
Viewspec Output command (Experimental) 1.11 any any  
Note: N/A   

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

Subversion 1.11は、Subversion 1.8,1.9,1.10と同じ作業コピーフォーマットを使用します。
既存のSubversion 1.7以前の作業コピーでSubversion 1.11を使用する前に、作業コピーのメタデータを新しい形式にアップグレードするため、svn upgradeコマンドを実行する必要があります。このコマンドは、場合によってはしばらく時間がかかることがあり、ユーザーによっては、新しい作業コピーを単にチェックアウトするほうが実用的かもしれません。
注意: 1.6でsvn クリーンアップを事前に行わなかった為にアップグレードできなかった作業コピーを、Subversion 1.11ではアップグレードすることはできません。つまり、1.8以上にアップグレードする前に、1.6以前の古いクライアントを使用して、クリーンアップが必要なすべての1.6以前の作業コピーに対してsvn cleanupを実行する必要があります。同様に、Subversion 1.10は破損した作業コピーをアップグレードすることはできません。 .svnディレクトリ内のメタデータがないか破損しているため、修正不可能な問題が発生する可能性があります。このような作業コピーへのダメージは永続的であり、アップグレード前にsvnクリーンアップを実行しても修正できません。
作業コピーが正常にアップグレードされない場合は、新しいものをチェックアウトし直してください。

シェルフ(実験的):1.10からの移行

Subversion 1.10で作成されたすべてのシェルフの作業コピーへの存在することは、Subversion 1.11クライアントには影響しません。 Subversion 1.11はそれらを無視します。それらと相互運用することはできず、リストすることさえできません。
svn upgradeコマンドは、作業コピー形式が正式に変更されていないため、全く効果がありません。
シェルフは現在<WC> /。svn / experimental / shelves /の下に格納されています。 Subversion 1.10では、シェルはパッチファイルとして<WC> / .svn / shelves /の下に格納されていました。
1.10で作成されたシェルを復元するには、次のいずれかを行う。
・1.10クライアントを使用してそれを見つけ、それをアンシェルフ(解除)する
・手作業でパッチファイルを見つけ、1.10以降のsvnパッチを適用して適用してください。

Subversion 1.10 command Subversion 1.11 command
 svn [x-] shelve [--keep-local] SHELF [PATH..] works similary; saves a new version each time it is used○
 svn [x-] unselve [SHELVE]  svn x-unshelve --drop [SHELF]
svn [x-]unshelve --keep-shelved [SHELVE] svn x-unshelve [SHELF]
 svn [x-]shelve --delete SHELF svn x-shelf-drop SHELF 
 svn [x-]shelves or svn [x-]shelve --list svn x-shelves or svn x-shelf-list 

その他のコンパチビリティに関する注意事項

このリリースで行われた変更により、管理者またはユーザーによるさらなる調整が必要になる可能性のある特定の追加の領域がいくつかあります。このセクションではそれらについて説明します。

SHA-1チェックサムはリリースの成果物(subversion-1.11.x.tar。*およびsubversion-1.11.x.zip)の成果物に含まれなくなりました

リリースアーティファクト(Subversion -1.11.x.tar.bz2, subversion-1.11-x.tar.gz, subversion-1.11.x.zip) には、SHA1チェックサムを行う*.sha1ファイルは含まれなくなり、また、ダウンロードページやリリース告知でも紹介されなくなります。PGPデジタル署名やSHA-512チェックサムは継続して提供されます。SHA-1暗号ハッシュ関数は脆弱であると判断しています。

新機能

コミットチェックポイント(Commit Checkpoint) (実験的)

Subversion 1.11は、「Commit Checkpinting」というISSUE#3626で想定されているユースケースの解決の実験的なファーストカットを提供します。
(警告)チェックポインティング機能は1.11では「実験的」な実装です。開発中の機能の早期リリースのため1.11台或いはその後のリリースで変更される事が考えられます。実験的な機能、というステータスの機能の将来バージョンとの互換性は保証されません。

チェックポインティング機能は、コミットされていない変更のスナップショットを時々に保存し、後でそれらの1つをワーキングコピーに戻す機能です。
これは、ISSUE3626で議論されているようなWCステートロールバック(乱雑になってしまったアップデートの後、以前の状態そのままにロールバックすることを可能にする)ようなものではありません。これについては将来的な可能性、のままです。
このコミットしていない変更のチェックポイントとロールバックの機能はシェルフ機能として、シェルフを複数バージョン持たせる事で提供されています。従って、シェルフの機能も参照してください。
チェックポインティングの主要な操作とコマンドは以下の通り。

Save a checkpoint and continue

svn x-shelf-save foo copy the local changes into a new version of shelf 'foo':doesn't revert the changes from the WC.
Save a checkpoint and shalve svn x-shelve foo move the local changes into a new version of shelf 'foo' and revert the changes from the WC
Restore /roll back

first revert your unwanted changes : then

svn x-unshelve foo 3

apply version 3 of shelf 'foo' to the WC and delete any newer versions 
 Review checkpoints svn x-shelf-log foo list all the versions of shelf 'foo'
  svn x-shelf-diff foo 3   show version 3 as a diff

拡張機能とバグ修正

コマンドライン・クライアントの改善

改善されたシェルフ
シェルフ(#3625)はSubvesrion1.10で初めて導入れた機能ですが、1.11では更に多くの種類の変更と安定性のため改善されました。
(警告)1.11のシェルフ機能は「実験的」な実装です。開発中の機能の早期リリースのため1.11台或いはその後のリリースで変更される事が考えられます。実験的な機能、というステータスの機能の将来バージョンとの互換性は保証されません。
主は改善点、変更点は次の通り。
・チェックポインティングをサポート:シェルフは複数バージョンの変更を保持します。シェルフは名前の付いた既存のシェルフに新しいバージョンを追加でき、(新しいバージョンではなく)古いバージョンをアンシェルフできる。チェックポイント機能を参照。
・バイナリファイルとプロパティの値がサポートされました。
・パッチファイルはストレージ機構としては提供されなくなり、パッチファイル・フォーマットによる制約とバグ、(例えば、svn:mergeinfo、バイナリファイル、改行コードなどのハンドリングの問題)はなくなりました。
・シェルフとアンシェルフは、いずれもハンドルできないステータス(コピーや移動)を検知した際には警告し、コマンドを受け付けません。
・シェルフはマージに似たメカニズムを使用してワーキングコピーに変更を適用するので、シェルフが保存されてからワーキングコピーが変更される(更新される)ので、変更はロバストに適用されます。
次のような未サポートの種類を除き、シェルフされた変更はフィアイルやプロパティに対してコミット可能な変更です。
シェルフコマンド(詳細はヘルプを参照)
・svn x-shelf-diff
・svn x-shelf-drop
・svn x-shelf-list, x-shelves
・svn x-shelf-list-by-paths
・svn x-shelf-log
・svn x-shelf-save
・svn x-shelves
・svn x-unshelve
詳細は、shevling and Checkpointingのwikiを参照ください。

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


対話型コンフリクト・リゾルバは、移動したファイルやディレクトリが関連するより多様なコンフリクト(競合)解決をサポートしました。特に、マージ・ソース・ブランチへ移動したため等の事情で「ローカルに存在しない」と報告されるアイテムのツリー上の多様なコンフリクトについて、自動的に解決できるようになりました。
例えば、あるファイル編集(変更)があるブランチからチェリーピックしたいが、その編集されたファイル名が変更されていた場合、その編集がマージのターゲットブランチ(名前が変更されていない)のファイルでも適用されるようになった。詳細は、Issue #4694を参照。
いくつかのバグが修正されました。
・Issue #4744 "アサーションが失敗する(start_rev > end_rev)
・Issue #4766 "リゾルバがMove Target Listに関係のないmoveを加える)
・リゾルバがリポジトリの全履歴を意図せずサーチする問題
Subversion1.11で修正されたリゾルバの問題は、Subverison1.10シリーズにもバックポーとされています。

Viewspec Output コマンド( 実験的)

この実験的なコマンドは、現在のワーキングコピーの形であるViewspacを出力します。
(警告)本機能は1.11では「実験的」な実装です。開発中の機能の早期リリースのため1.11台或いはその後のリリースで変更される事が考えられます。実験的な機能、というステータスの機能の将来バージョンとの互換性は保証されません。
Viewspacは各サブツリーが制限の深さにあるか、除外されているか、異なるURLにスイッチされているか、あるいは、親ディレクトリに比べて異なるリビジョン番号にアップデートされていないか、を表示する。この情報は、ワーキングコピーのシェイプまたはレイアウトと呼ばれます。
'svn info --x-viewspec=classic' 古いスクリプト(svn-viewspec.py)フォーマットです。
'svn info --x-viewspec=svnll'はsvnコマンドラインに書きます。同じレイアウトの新しいワーキングコピーをこのコマンドで作れます。

svn info --show-itemコマンドに追加

svn info --show-itemコマンドに、'schedule'と'depth'を追加。(#r1827032)

クライアントのCertパスワードが保存される。

クライアントのCertパスワードの保存が許可された。(#r1836762)

サーバサイドの改善

svnadmin dumpは正規化しない(ISSUE#4767)

svnadmin dumpは、出力のダンプファイルにてリビジョンプロパティの値を正規化しなくなりました。Dumpの出力にある値はリポジトリの中の値と同じ値をそのまま出します。

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

APIの変更と改善、ランゲージバインディング。

JavaHLのアップデート。JavaHLはJava10と互換にアップデートされました。ビルドの変更により、JavaHLのコンパイルにはJava8以降が必要となります。

リリースの既知の問題

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

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

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

GitHubのSVN Bridgeサーバの実装はSVN 1.11と互換性がありません。

ISSUE#4789
Subversion1.11のクライアントはGithubからリポジトリをチェックアウトできませんでした。これはGithubのカスタムSubversionが新しいSubversionのビヘイビアを受け付けられなかったためです。(後日報)Github側で対応し、現在は解消しています。

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

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

*訳注)シェルフ(Shelf)は、動詞的にshelving、複数はShelvesと変化して使用されていますが、日本語的にはわかりにくいので、shelving,shelvesもできるだけあえて「シェルフ」と表記しています。