3

コードベースに定期的にインポート(およびパッチ)する必要があるかなり大きなライブラリがあります。

SVN Book では、「ベンダー ドロップ」のパッチを適用したバージョンを保持する「ベンダー ブランチ」スキームを推奨しているようです。これは機能しますが、ベンダーも SVN を使用しており、reop への読み取りアクセスを許可しています。

パッチを更新する必要があるときに、ベンダー ファイルの履歴にアクセスできると便利です。

だから私の質問は:

何らかの形でベンダー ファイルの履歴へのアクセスを保持する、パッチを適用した「ベンダー ブランチ」を作成する方法はありますか?

(svn:external フォルダーについての言及を見たことがありますが、リビジョンを固定するという点で完全な影響を本当に理解しているかどうかも、それに対する独自のパッチをどのように正確に維持するかもわかりません。)

ここで取るべき正しいルートは何ですか? (FWIW、ベンダーは月に 1 回リリースします。私たちは年に 1 ~ 2 回程度更新をプルする予定です。)

ありがとう

4

1 に答える 1

2

さて、問題はここにあります。ベンダーのソースと履歴が必要ですが、パッチもベンダーのソースに適用します。履歴を使用してソースを取得するのは簡単です。ソースを履歴付きで取得し、パッチを適用して継続的にこれを行うのは大変です。

ベンダーのソース ディレクトリをソースに配置しない (つまり、2 つのプロジェクトを別々にビルドする) と仮定すると、2 つのソースを別々のリポジトリに保持する場合、いくつかのオプションがあります。

ベンダーのソースと履歴が必要な場合は、ベンダーのリポジトリへの svnsync を設定し、定期的に変更を取得できます。Svnsync は、完全な履歴を持つローカル コピーとして何かをリモートで取得する素晴らしい方法です。ただし、svnsync の 1 つの注意点は、リポジトリが読み取り専用になることです。したがって、ソースにパッチを適用することはできません。

これを行うのは年に 1、2 回だけなので、svnsync を使用してリポジトリの新しいコピーを取得するプロセスを実行できます。同期を中断し、ベンダーのリポジトリのコピーを書き込み可能にしてから、パッチを適用します。

もう 1 つのオプションは、ベンダーにレポのダンプを作成してもらい、それを送信してもらうことです。次に、そのダンプを独自のリポジトリにロードして、読み取り/書き込みを行います。

どちらのオプションでも、このプロセスを実行するたびに、ベンダーのリポジトリのコピーにパッチを再適用する必要があります。少なくとも、これを行うのは年に 1 ~ 2 回だけです。

ソースにソースを含める必要がある場合でも、上記を実行しますが、質問で指摘したように svn:external を使用します。ベンダーのソースに必要なパッチをベンダーのリポジトリのコピーに適用する必要があります。

于 2010-12-01T15:06:33.637 に答える