4

私は3つのことを設定しようとしています:

  1. パブリック SVN リポジトリのパブリック GIT ミラー
  2. 複数の貢献者がパッチをステージングできる、そのレポの公開フォーク
  3. #2 からのパブリック リポジトリのプライベート フォーク

#1 のやり方は知っていますが、#2 と #3 についてのアドバイスを探しています: 構成方法、同期を維持する方法、避けるべきことなど。

詳細は次のとおりです。

私が使用している SVN ベースのオープンソース Web アプリケーションのパッチ送信メカニズムは遅くて非効率的です。問題追跡システムに送信されたバグにパッチが添付され、数週間または数か月後にそれらのパッチがトランクに入れられます。

別の問題は、私の会社だけが必要とする追加機能を備えたプロジェクトのプライベート フォークを維持する必要があることです。しかし、フォークがトランクからの最新の公式コミットを最新の状態に保つ簡単な方法が必要です。

これらの問題の両方に対する GitHub ベースのソリューションを見つけたいと思います。締めくくりたいのは以下の3点です。

  • 「ミラー」 - SVN の GitHub ミラー。私または別のパッチ提供者が実行する自動化されたプロセス (この記事のような) を介して、最新の SVN の変更と自動的に同期されます。これにより、SVN をいじることなく、私や他の誰かがプロジェクトのパブリックまたはプライベート フォークを簡単に作成できるようになります。
  • 「contrib」 - 私自身と信頼できる数人のパッチ提出者のために、「ミラー」のパブリック フォーク (またはブランチ?) をセットアップして、最終的に SVN に表示されるようにしたいパッチをコミットできるようにしたいと考えています。これにより、コア コミッターがパッチを SVN に戻すのがより簡単かつ効率的になる可能性もあります。
  • "ourfork" - 最後に、私たちの会社は、複数の開発者が私たちの会社の実装にのみ適用されるプライベート機能を追加できる "contrib" のプライベート フォークをセットアップしたくないと考えています。

具体的な質問:

  • アプローチは理にかなっていますか?代わりに使用すべきより簡単なソリューションはありますか?
  • 「contrib」が「mirror」と同期していることを確認する方法は? 競合しない限り、新しいコミットを自動的に適用する GitHub マジックはありますか? いいえ、contrib が親と同期していることを確認するための適切なワークフローは何ですか?
  • 「ourfork」は論理的には「mirror」の孫になります。「ミラー」と「contrib」の両方からの変更で最新の状態に保つための正しいワークフローは何ですか? 「contrib」を唯一のリモートとして設定する必要がありますか? または、両方をリモートとして設定します。もしそうなら、マージの正しいプロセスは何ですか?

同様の質問に対する@rqの回答を読んだところ、上記の質問のほとんどに回答していると思いますが、私はGitの初心者であり、彼の回答が私のケースに当てはまるかどうかわかりません.

4

2 に答える 2

2

SubGitをご覧になることをお勧めします。SVN リポジトリにリンクされた Git リポジトリを作成して同期を維持するためのツールです。次のような他のソリューションよりも利点があります。

  • 同時に安全なコミット (つまり、コントリビューターの 1 人が同じミリ秒内に Git にコミットし、別のコントリビューターが SVN にコミットした場合、悪いことは何も起こりません: 変更が競合した場合、そのうちの 1 つが「古い」エラーを受け取るだけです)
  • 無視、EOL、任意のブランチ (マスターだけでなく)、タグなどの SVN ↔ Git 概念変換の改善。

ただし、制限があります。SVN サーバーにアクセスできる必要があるため、GitHub ベースのソリューションが機能しない可能性があります。ただし、GitLab、Luna-tool などの GitHub の代替品 ( Git Server Like GitHub? ) を確認できます。

于 2012-05-12T17:18:31.303 に答える
1

設定が非常に難しいため、完全な回答はできません。

おそらく、SVN コミッターの 1 人を参加させようとするでしょう。次に、git-svn クローンの上にフィーチャー ブランチをリベースし、変更を Subversion に戻す作業を彼に任せました。私は最近、スクリーンキャストでこのワークフローの非常に簡単な例を作成しました。

ただし、これには SVN コミッターの 1 人との非常に緊密なフィードバック ループが必要であり、履歴を線形に保つためには、多くのリベースを行う必要があり、分散リポジトリの同期を維持することも難しくなります。これがうまくいくかどうかはわかりません。

于 2010-10-10T17:46:47.083 に答える