2009-05-12 2 views
2

私のプロジェクトではかなり役に立つと思われるオープンソースライブラリが見つかりました。しかし、ライブラリはアルファ/ベータ状態にあり、少し未成熟です。そのlibのマイナーなバグを取り除くために、手動でパッチを適用したり、自分で完全に変更を加える必要があったのです。SVNによるオープンソースライブラリのカスタムバージョンの操作と同期

質問:私のカスタムブランチをSVNリポジトリに保存して管理する方法は?

私は私のカスタムバージョン(プロジェクトオーナーが最終的にトランクにチェックインすることができる)を維持したいと思うだけでなく、公式トランクと私のバージョンをマージできるようにしたい。

私がすでに行ったことは、適切なsvn:externalsプロパティを持つフォルダ(「リソース」と言う)をマークすることです。次に、私のレポにバインドされた作業コピーから「公式のトランク」から「内から」更新することができます。明らかに私ができないことは、変更をコミットすることです。 何もないようです(一時的に再配置、切り替えなど)。私は他のフォルダにエクスポートしようとしても、変更を加えて "何らかの形で"マージしてしまっただけですが、唯一の結果はエラーの大部分でした。ほとんどの人がrepo guidsの不一致について不平を言いました。しかし、多分私はいくつかの詳細を逃した:)。

は常に最新のサードパーティオープンソースライブラリを使用して独自のカスタマイズを管理する方法はありますか? オプションとして.patchファイルのみをレポに格納することは考慮しません。

答えて

3

リポジトリ間を正確に分岐することはできませんが、のコードを自分のリポジトリにインポートしてから、merges between repositoriesを実行してください。 SVN 1.6.1はこのシナリオに関連してbug fixを持っていました)

SVNの本は、より一般的なクロスリポジトリマージを利用しない戦略。サードパーティのコードがSVNリポジトリにまったく存在しない場合にも機能します。 Vendor Branchesのセクションを参照してください。

1

ピストンをチェックしてください、あなたが欲しいものを簡単にします。

http://piston.rubyforge.org/

私は上流のリポジトリを維持するためにそれを使用し、それは非常にうまく動作します。

0

SVNの代わりに、分散バージョンコントロールソフトウェアを使用できます。たとえば、Gitは、ブランチとSVNリポジトリとの同期をサポートします。