SVN→外部ライブラリの接続

したがって、本日はSubversionを使用してメインプロジェクトで外部ライブラリ(サブプロジェクト)を接続することについて説明します。
古き良き伝統によると、私たちが長年愛してきたTortoiseSVNは、 SVNで作業するためのクライアントとして使用されます。

いつものように、以下で説明するすべてが革新的なアイデアであると主張しているわけではありません。 これは単なる経験の交換であり、その目的は開発者の作業を促進することです。

外部ライブラリの接続は、バージョン管理システムの非常に便利な機能です。特に、同じライブラリを使用する複数のプロジェクトで作業している場合(データベースを操作するためのクラスからシステムテンプレートまで)。

たとえば、ソースデータを定義しましょう。
2つのプロジェクト( "One"、 "Two")と1つのライブラリ( "Library")があり、両方のプロジェクトに実装する必要があります。 このライブラリへの次のパスがあります。 subserver/code/library/trunk subserver/code/library/trunk
両方のプロジェクトの作業コピーがあります。 それぞれにフォルダ/libraries/があり、その中にフォルダ/libraries/を作成する必要があり、その中に外部ライブラリが配置されるとします。
私は最初、ライブラリが別のフォルダにあることを示します。 使用するsvn:externalsプロパティはフォルダーでのみ機能します。

さらに、すべてが非常に単純になります。任意のプロジェクトの/libraries/フォルダーのプロパティを開きます( 2つのプロジェクトは、更新の仕組みを示すためだけに説明されています )。 次のようになります。



[ Add... ]ボタンをクリックすると、次のようなプロパティを追加するためのウィンドウが表示されます。



ドロップダウンリストで、 svn:externals (リストの最初)を選択します。 次に、プロパティの値を登録する必要があります。 svn:externals値は次のような行です。
- -- 。この例では、フォルダー名はlibraryになり、リポジトリーへのパスは次のようになります。 subserver/code/library/trunk subserver/code/library/trunk
文字通り、私たちの行は次のようになります。
ライブラリサブサーバー/コード/ライブラリ/トランク

TortoiseSVNに含まれているRepo-browserユーティリティを使用して、リポジトリへのパスを簡単に取得できます。
区切り文字には、1つ以上のスペースまたはタブ文字を使用できます。 個人的には、4つのスペースを使用しています。

ライブラリに特定のリビジョン指定することは可能ですが、ほとんどの場合、これはライブラリに変更を加えることができないため、望ましくないアクションです。

実際、ここですべての革新が終わります。 プロパティを保存します。
次に、すべてが正しく、ライブラリがプロジェクトに正常にロードされることを確認するために、更新を行う必要があります。 フォルダ/library/が自動的に作成されます。 すべてがスムーズな場合は、Commitを実行して、フォルダーのプロパティをプロジェクトリポジトリに直接保存します。 これ以降、このプロジェクトのすべての作業コピー(つまり、すべての開発者向け)で、必要なライブラリが自動的に接続されます。

現在、2番目のプロジェクトでまったく同じアクションを実行しています(フォルダー名は異なる場合がありますが、それは問題ではありません)。 その結果、同じ外部ライブラリを使用して2つのプロジェクトを取得します。

ここで、「2」プロジェクトに取り組んでいるときにライブラリ内の何かを変更する必要がある場合を考えてみましょう。 これらの変更は、 /libraries/library/ folderに物理的に配置されているファイルに対して直接行われます。 すべての変更が行われた後、コミットを行います。 そして、変更は自動的にライブラリリポジトリに入力されます。 subserver/code/library/trunk subserver/code/library/trunk 。 プロジェクト「One」を更新すると、ライブラリの更新バージョンがそこにダウンロードされます。
コミットに追加されたコメントに関しては微妙な点があります。変更がプロジェクトとライブラリの両方に影響する場合、すべてのコメントはプロジェクトとライブラリの両方のログに記録されます。 したがって、これらの変更を別々のリビジョンに保つことをお勧めします。

経験の浅いプログラマが直面する可能性のある別の潜在的な危険性は、プロジェクトの1つとライブラリの新しいバージョンの非互換性です。 これには2つの答えがあります。1.互換性のあるコードを作成して、どこでも動作するようにします。 2.ブランチを使用して、以前のバージョンのライブラリを分離し、プロジェクトに接続できます(まったく同じ方法で)。

最後に、ドキュメントからのほぼ引用: svn:externalsはフォルダーのプロパティであるため、プロジェクトまたは外部ライブラリがどこかに移動した場合(例:再配置)、プロパティのパスは自動的に変更されず、手動で修正する必要があります。

一般に、これが今日お話ししたかったことのすべてです。
いつものように、私はあなたのコメントを読んでうれしいです。

Source: https://habr.com/ru/post/J15823/


All Articles