0

特定のプロジェクトの読み取り専用 SVN リポジトリにアクセスできます。

私自身の変更/追加でこのプロジェクトを拡張したいと考えています。このリポジトリに完全にアクセスできれば、自分の開発ブランチを簡単に作成できます。ただし、私は持っていません(書き込みアクセスは取得しません)。

自分の変更を (内部) リポジトリに保存して、自分の開発を追跡できるようにしたいと考えています。

これに対応できるようにSVNを使って構築することは可能でしょうか?

最初は、次のような構造の (内部) SVN リポジトリを作成することを考えていました。

  • トランク

    • svn:externals を使用する外部リポジトリのコピーを含む
  • ブランチ

    • トランクに基づく私の開発ブランチ

しかし、'external' フォルダーに基づいてブランチを作成するのは (不可能ではないにしても) 簡単ではないことがすぐにわかりました。また、外部リポジトリの変更を自分の開発ブランチにマージできるようにしたいと考えています。また、この構造を使用してこれが可能かどうかも疑問です。

この建設を機能させることは可能ですか?それとも、まったく別の方法でこれに対処する必要がありますか? この問題に関するアドバイスは大歓迎です。

ありがとう

ピーター

4

3 に答える 3

1

あなたは「Who Where」で小さな間違いを犯しました

  • peg-revision のないベンダーブランチ(svn:external) がある
  • 独自の開発はトランクで行われます (最初はベンダー ブランチの svn コピーとして作成されます)。

時々、ブランチ (vendor-branch) からトランクにマージします。

この方法には、大規模で複雑なアップストリーム プロジェクトに対していくつかの制限がありますが、小規模または中規模のプロジェクトでは機能します

于 2012-02-16T19:41:31.807 に答える
-1

個人的には、svn:externals も使用しますが、リポジトリを別の方法でセットアップします

repo/trunk/src/mycode
repo/trunk/src/theircode
repo/branch/1.1/src/mycode
repo/branch/1.1/src/theircode

(等々)

すべての「theircode」ブランチは、svn 外部のリポジトリ (リビジョン番号) を介して簡単にバインドできます。トランク全体の制御を外部リポジトリに任せることはしません。トランクを特定の方向に移動する必要があると判断した場合、直接制御できないリポジトリに間違った場所にバインドされるからです。はい、その場合は再構築できますが、他の重要なことを行う必要があるときに、その再構築を正しく行う必要がある可能性があります。

コードに「パッチを当てる」必要がある場合は、それを「your code」ブランチに配置し、ビルド システムを拡張してコードを「sources」ビルド領域にコピーします。次に、パッチを適用します。その場でコードを変更しないでください。多くのレベルで問題が発生し、手遅れになるまで明らかにならない多くのレベルが含まれています。

于 2012-02-16T19:59:45.243 に答える
-1

これに対応できるようにSVNを使って構築することは可能でしょうか?

はい、できます。オプションの 1 つとして、 svnsyncを使用してリモート リポジトリを複製することができます。ただし、ローカル リポジトリとリモート リポジトリの変更をマージしようとすると問題が発生するため、これを行うことはお勧めしません。

あなたのケースは を使用するのに最適なようですgit-svn。独自の変更/追加にローカル リポジトリを使用できるようになります。問題は、ローカル リポジトリを使用して独自の開発を追跡しgit(プッシュとプルを実行)、svn必要なときにリモート リポジトリから変更を取得 (更新を実行) できることです。svnただし、もちろん、リモートリポジトリには読み取り専用アクセスがあるため、リモート リポジトリにコミットすることはできません。

これはgit-svn に関する短いチュートリアルです。

于 2012-02-16T17:26:28.037 に答える