3

svn:externalsプロパティを使用して外部ライブラリからファイルを更新するネストされたリポジトリを持つプロジェクトの 1 つのリポジトリがあります。問題は、このライブラリのヘッダーの 1 つから関数宣言の 1 つをコメント アウトし、変更されたヘッダーをルート リポジトリで持ち歩く必要があることです。

ライブラリが更新されたときに、その特定のファイルを私のバージョンで上書きするように、これを行う方法はありますか?

4

2 に答える 2

7

あなたが望むのは、私には「ベンダーブランチ」のシナリオのように聞こえます。

現在のリポジトリ

root
|-- myproject
    |
    -- mycode
    |
    -- library -> svn:externals to a remote svn or your own libraryproject

推奨リポジトリ

root
|-- myproject
    |
    -- mycode
    |
    -- library -> copied/branched from ^/vendor/library/current (modified at this location as much as you like)

|
-- vendor
   |
   --library
     |
     --current
     |
     --imported-version-1.0
     |
     --imported-version-1.1

レイアウトの作り方

^/vendor/library/current を作成し、元の変更されていないライブラリ コードをそこにダウンロードします。

svn commit ^/vendor/library/current
svn cp ^/vendor/library/current ^/vendor/library/imported-version-1.0 (tag the import)
svn cp ^/vendor/library/current ^/myproject/library (branch the code into your project)

^/myproject/library を変更してコミット


変更を失わずにライブラリを更新する方法

ライブラリの最新のオリジナル リリースを ^/vendor/library/current OVERWRITING ファイルにダウンロードします。

svn commit ^/vendor/library/current (checks in the difference between the two library releases)
svn cp ^/vendor/library/current ^/vendor/library/imported-version-1.1 (tag the change)
cd /your-local-workspace/myproject/library (will be merge target)
svn merge ^/vendor/library/current (get all CHANGES from the upstream branch and apply them to your modified library)
svn commit

利益


「current」をプロジェクトに直接分岐する代わりに、「my-modified-libs」ディレクトリに分岐して、外部経由で利用することができます。これは、ライブラリの同じ変更バージョンを必要とするプロジェクトが複数ある場合に推奨されます。

ベンダー ブランチでは、上書きによって追跡できないため、名前の変更と削除の処理に問題があることに注意してください。リポジトリ間のマージは、SVN にとっては別のトピックであり、比較的新しいトピックです。

試してみたら、どうだったかフィードバックをお寄せください:)

クリストフ

于 2010-09-24T09:49:42.597 に答える
0

これを支援する組み込み機能はありません。

これに対処する一般的な方法は次のとおりです。使用しているライブラリのブランチを作成し、そこで必要な変更を行い、新しく作成したブランチをルート プロジェクトの外部として使用します。私の経験では、これがあなたが説明した問題に対するシンプルで効果的な解決策であることがわかりました.

于 2010-09-21T05:23:38.973 に答える