2

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

問題は、カスタムの「ブランチ」をSVNリポジトリに保存して管理するにはどうすればよいかということです。

カスタム変更(最終的にはプロジェクト所有者によってトランクにチェックインされる可能性があります)を保持し、バージョンを公式トランクとマージできるようにしたい(何かが改善された可能性があるなど)。

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

では、常に最新のサードパーティのオープンソースライブラリを使用して、独自のカスタマイズを管理する方法について何かアイデアはありますか?オプションとして、リポジトリに.patchファイルのみを保存することは検討していません;)。

4

3 に答える 3

3

リポジトリ間を正確に分岐することはできませんが、独自のリポジトリにコードインポートしてから、リポジトリ間でマージを実行することはできます。(リンクされた投稿は、この機能に問題があることを示していますが、最新のSVNリリースで完全にサポートされていると思います。SVN1.6.1には、このシナリオに関連するバグ修正がありました。)

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

于 2009-05-12T23:36:14.587 に答える
1

ピストンをチェックしてください、それはあなたが簡単に望むことを正確に行います。

http://piston.rubyforge.org/

私はそれをアップストリームリポジトリを維持するために使用し、それは非常にうまく機能します。

于 2009-05-12T23:36:55.100 に答える
0

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

于 2009-05-12T23:45:15.553 に答える