-1

さて、私は、多くの独立したパッチをホストするための推奨される DVCS メカニズム、BitBucket で Mercurial パッチ キュー リポジトリを使用して多くのユーザーとパッチを管理するなどの質問で、私の問題に対するあらゆる種類の解決策を把握してきましたが、これが私が必要とする最後の質問になることを願っています。 https://sourceforge.net/p/iotabuildit/wiki/Home/で説明されている私のプロジェクトのソース管理を確立する方法について質問してください。次に、他の質問に対するいくつかの回答を受け入れて、先に進むことができます。

私が満たすのに苦労している要件は次のとおりです。

  1. ソースの変更 (パッチ) の提供は、ユーザーにとって非常に簡単でなければなりません。つまり、バージョン管理クライアントをダウンロードする必要はありません。
  2. コードのどのバージョンもオンラインで簡単にホストできる必要があります。これは、W3C のセキュリティ要件 (IE では無視されているようですが、Chrome では尊重されています) により、ローカルの一連のファイルから実行すると Chrome では機能しないためです。
  3. ユーザーは自分で登録し、他の誰もがプレイしてレビューできるパッチを投稿する権限を自動的に持つ必要があります (リトル ビッグ プラネットのようですが、より統合されており、コンテンツを追加するだけでなく、あらゆるものを変更できます)。

これまでに試したパスは、次の理由で失敗しました。

  1. Mercurial Patch Queue - しばらく調べてみたところ、平均的なプレイヤー/ユーザーが関与するには複雑すぎることがわかりました。
  2. Github と BitBucket - これらのリポジトリは依然としてローカル DVCS クライアントを必要とするようであり、パッチを提供するには追加の手順が必要です。結局のところ、平均的なユーザー、特に特定のユーザーの特定のバージョンのゲームをプレイしたいだけの人にとっては、依然として難しいものです。ファイルをオンラインでホストする方法はないようです。

だから今、私が提案した解決策は次のとおりです。他の方法でより適切に処理できる何かが欠けているかどうかを確認したいと思います。SourceForge プロジェクトで、次のような PHP スクリプトを作成します。

  1. ユーザーのみが自分の「パッチ」を更新できるように、ユーザーが自分の電子メール/アカウントをパスワードで登録できるようにします
  2. 標準リポジトリまたは他のユーザー リポジトリのクローンを作成できるようにします。
  3. PHP スクリプトからはアクセスできるが HTTP からはアクセスできないディレクトリにオンラインでクローンを作成します。
  4. ファイルのセットを作業ディレクトリに送信し、相違点をパッチとしてリポジトリにコミットできるようにします。
  5. 同じディレクトリ内の他のユーザーのリポジトリからパッチを取得できるようにします。(独自のリポジトリへのプルとコミットには認証は必要ありません。これは、既に存在するより正式なオンライン リポジトリ ホスティングを検討していたときの障害です)
  6. ゲームをオンラインでプレイできるホストされたディレクトリにワークスペースをコピーする別の PHP スクリプトを用意します。プレイヤーは誰でもこのワークスペースにアクセスして、あなたのバージョンのゲームをプレイできます (これには、任意の数の他のリポジトリから取得されたパッチが含まれる場合があります)。

これを行うために既存のリポジトリを使用できないのは奇妙に思えますが、認証の問題を回避する方法が思いつきません。そのため、PHP スクリプトがプッシュせずにアクセスしてコミットできる必要があることがわかっている独自のクローンを作成する必要があります。残念ながら、他の DVCS クライアントはおそらくこれらのオンライン クライアントからプルすることはできませんが、必要に応じてパッチをエクスポートする方法はおそらくあるでしょう。そして、マージの競合が発生したときに何をするかわかりません。しかし、これはこれまでのところ実行可能な解決策に最も近いものです。

したがって、最終的には、ユーザーが DVCS クライアントをダウンロードする必要がなくなり、自分のバージョンのゲームのホストを見つける必要がなくなるようにするためのオンライン DVCS クライアントになります。もっと簡単な解決策を見落としていますか?(SourceForge の利用規約に違反していますか? Mercurial がインストールされていれば、Dreamhost でもホストできます。)

4

1 に答える 1

1

いくつかのコメント/回答:

DVCS (「D」は分散型) では、「サーバー」または「クライアント」はありません。
コードにローカルで (ワークステーション上で) アクセスしたい場合は、DVCS (git または Mercurial) が必要になり、アップストリーム リポジトリ (つまり、GitHub または BitBucket に保存されたリモート リポジトリ) を複製します。

私が理解していることでは、各ユーザーはメイン リポジトリをフォークし、ユーザーごとに 1 つのリポジトリを作成します。これは、フォーク (リモート側のクローン) の背後にある考え方であるため、アップストリーム サーバー (GitHub または BitBucket) にまだ保存されています。

これは 1. に対処します。各ユーザーは自分のフォークの所有者であり、そこでのみ書き込みアクセス権を持つためです。
2.与えられたものです(レポをフォークできます)

残りのポイントは、GitHub や BitBucket では対処されませんが、DVCS がインストールされていて、必要なものを自動化するために関連するフックが追加されている専用サーバーによって対処されます。
その専用サーバーは、特定のユーザーの特定のレポについて、GitHub または BitBucket にプッシュされたものを監視し、必要なクローンまたは更新を実行し、レポを適切なディレクトリに同期できます (たとえば、あなたの場合は PHP スクリプトにアクセス可能)。 .

于 2012-04-19T12:35:05.777 に答える