3

多くの部分からなる質問で申し訳ありませんが、BitBucketでMercurial Patch Queueを使用するための意図された方法を理解するのに苦労しており、Googleはあまり役に立ちません。私の希望は、いくつかのMQの概念を説明する1つの回答が、一度に多くの質問をカバーすることです。http://ches.nausicaamedia.com/articles/technogeekery/using-mercurial-queues-and-bitbucket-orgを読みました、しかしそれは時代遅れで不完全なようです。私の全体的な計画は、必ずしもブランチにコミットすることなく、多数のユーザーから提出された多数の変更を許可することです。これらのパッチは、ゲームを強化および拡張するためにプレーヤーがゲームに対して行うオプションの変更を表します。そして、ユーザーが任意のパッチまたはパッチのセットを選択して、遊んだりレビューしたりできるようにしたいと思います。hgがどのように機能するかをしっかりと理解したら、PHPスクリプトなどを作成して、ブランチと選択したパッチのセットをワークスペースにプルし、プレーヤーがHTML5コードを実行してレビューできるようにします。

次のことができました:

  1. 一般的に、SourceForge http://sourceforge.net/p/iotabuildit/wiki/Homeにリポジトリを作成します。ここで、私はすべてをホストすると思っていました。
  2. すべてのコードをSourceForgeリポジトリにコミットします。
  3. 私の要件を考えると、BitBucketがこれをホストするのに適した場所である可能性があることを認識してください(多くの独立したパッチをホストするための推奨DVCSメカニズムのおかげで)。
  4. 私のコードをSourceForgeのMercurialリポジトリからBitBuckethttp://bitbucket.org/bluemonkmn/iotabuildit/に直接インポートします
  5. BitBucket URIをTortoiseHgに追加して、どちらのオンラインリポジトリでも同じローカルリポジトリを使用できるようにします。
  6. TortoiseHgでmqを有効にする
  7. Qローカルリポジトリのパッチキューに変更をコミットします。
  8. BitBuckethttp : //bitbucket.org/bluemonkmn/iotabuilditmq/にパッチキューリポジトリを作成します。
  9. パッチキューリポジトリをローカルリポジトリに複製する
  10. パッチファイルを元のローカルリポジトリからパッチキューリポジトリにコピーします(ただし、これを行うためのより良い方法があるかどうか疑問に思います)。
  11. プッシュを実行する前に--mqスイッチをオンにして、パッチをBitBucketパッチキューリポジトリにプッシュします。
  12. BitBucketにリストされているパッチを参照してください。
  13. BitBucketパッチキューリポジトリの新しいコピーを複製し、ローカルリポジトリで利用可能なパッチを(ツリーの残りの部分とともに)確認します。

私が理解できないことや質問があることは次のとおりです。

  1. メインリポジトリとパッチリポジトリの両方をローカルに保持する必要がありますか?
    • パッチリポジトリをSourceForgeで使用できますか/使用する必要がありますか?(可能であれば、BitBucketを放棄する可能性があります。)
    • SourceForgeはmqをサポートしていますか?(SourceForgeは、BitBucketで見たように、パッチが含まれているクローンリポジトリを提供しますか?)
    • 元のリポジトリをBitBucketパッチリポジトリで使用できますか/使用する必要がありますか?(可能であれば、SourceForgeのリポジトリを放棄する場合があります。)
    • パッチ用のコードで作業する場合は1つのリポジトリを使用し、正式にコミットするためのコードで作業する場合はもう1つのリポジトリを使用する必要がありますか?
  2. パッチをオンラインリポジトリ にプッシュする最良の方法は何ですか?
    • ローカルパッチリポジトリでQCommitまたはQNewを実行してから、-mqスイッチでプッシュしますか?
    • プロセス中のある時点で、シリーズと.diffファイルをパッチリポジトリにコミットしましたが、少しずれているように見えました。これは、mqとBitBucketがどのように機能するかについての私の認識を汚しましたか?
    • BitBucketまたはSourceForgeのソース管理に.diffファイルをコミットする必要がありますか?(場合によっては、QCommitは.hgignore、series、および.diffファイルをコミットしたいようです)
    • ユーザーは、クローンを作成した後、パッチリポジトリで保留中の適用済みおよび/または未適用のパッチを表示できるようになっていますか?
  3. クローンを作成せず に、ローカルまたはリモートのリポジトリで利用可能なパッチをプルする方法はありますか?
    • ローカルリポジトリでパッチを削除すると、再クローンを作成せずにリモートリポジトリからパッチを元に戻す方法がわかりませんでした。また、パッチの削除をコミットする方法もわかりませんでした。
    • パッチファイルを手動でコピーしないと、元のリポジトリからパッチリポジトリにパッチを転送できませんでした。
  4. 同じキューで他のパッチを先に取得しないと、キューからいくつかのパッチを選択できないという問題がすぐに発生しますか?一部のプレーヤーは、同じ(または別の)ユーザーからの無関係な変更に合わせてパッチを別のブランチ/キュー/その他に作成することを怠るのではないかと心配しています。その潜在的な問題に対処するための提案も歓迎します。
  5. すべてのBitBucketユーザーにパッチリポジトリへのアクセス許可を明示的に追加しなくても、任意のユーザーがパッチを送信できるようにすることは可能ですか?
  6. すべての(場合によっては数百人の)ユーザーがパッチキューリポジトリを共有することは、賢明で合理的ですか?これは理想的です(可能であれば、各ユーザーに独自のパッチリポジトリを作成させるのではなく)。これはユーザーにとって複雑になりたくないので、MercurialとBitBucketの理解に時間がかかっていることを考えると、どんな複雑さも多くのユーザー/プレーヤーをオフにすることを恐れてください。

お分かりのように、どんな質問をすればいいのかわからず、ちょっと迷ってしまいました。答えはこれらの質問よりも簡単だと思いますが、質問を知らなければ、正しい質問をするのは難しいです。うまくいけば、パッチキューリポジトリの性質を説明する1つの答えが、私にとってこれらすべてをクリアするでしょう。

4

3 に答える 3

1

私の古い質問を検討すると、DVCSについての私の理解は、CVCSに精通していることによってあまりにも曖昧になっていると思います。結局、他のSourceForgeユーザーが自分のリポジトリの独自のクローンをホストし、自分のリポジトリへのリンクを公開することを許可しただけです(http://sourceforge.net/p/iotabuildit/wiki/reviews/を参照)。

于 2012-12-30T13:30:55.687 に答える
0

質問3の2番目の箇条書きに対する答えを見つけたと思います。

  1. パッチがソース(ローカル)リポジトリの適用されたキューにあることを確認してください。
  2. これで、TortoiseHgWorkbenchの「エクスポート」コンテキストメニューから「パッチのコピー」を選択できます。
  3. 次に、他のローカルリポジトリに切り替えて、[リポジトリ]メニューから[インポート...]を選択します。
  4. 「クリップボードからインポート」をクリックします
  5. パッチを適用できるターゲットのドロップダウンリストで、[パッチ]を選択します。
  6. [インポート]をクリックします

これで、他のローカルリポジトリからのパッチがローカルリポジトリに表示され(適用されていない)、簡単に適用できます。

他のすべての質問に対する答えを自分で見つけない限り、この(自分自身の)答えを受け入れない可能性があります。誰かが他の質問で私を助けてくれることを願っています。

于 2012-04-15T23:12:41.100 に答える
0

恐れ入りますが、SFのクローンの山で、「理想からはほど遠い」道を「管理されていない混乱」のマイルストーンにたどり着きました。

  • Yonは、追加のリポジトリなしで、パッチ用のディレクトリのみを使用して、BitbucketでMQキューを使用できます(mercurial-crew- mqリポジトリまたはhgsubversion-layout-hacksリポジトリを参照)。.hg
  • パッチを自分のリポジトリに保存する理由がわかりません(変更セットはほとんど読み取れません-差分の差分、パッチの履歴の値はほぼゼロです)
  • 1つのリポジトリにパッチを含めると、パッチの交換と更新を簡単に行うことができます
  • qclone | push --mqバニラコードの上にパッチの双方向交換を提供する
  • 寄稿者向けの一部のパッチに関するグループワークおよびP2P通信は、 MQCollab拡張機能で提供される場合があります
于 2012-12-30T17:17:29.800 に答える