9

たとえば、HTTP(S)を使用してMercurialリポジトリをリモートで作成することはできない ことを私は知っています。

$ hg init https://host.org/repos/project

また

$ hg clone /path/to/local/project https://host.org/repos/project

しかし、その理由は何ですか?セキュリティ上の問題?それは必要ありませんか?まだ誰もそれを実装していないという理由だけで?

この質問の理由:私の会社では、ほとんどのリソースをHTTPS経由で共有しています。つまり、アクセス許可はApacheのみによって管理され、通常のユーザーはサーバーにSSH経由でログインできません。リポジトリのみを提供する必要がある限り、これは完璧です(その目的のために私たちは満足していますhgwebdir.cgi)。ただし、サーバーで追加の/パッチを適用したスクリプトを維持したり、クライアントで追加のツールを維持したりすることなく、リポジトリをリモートで作成できるようにする必要もあります。

明確にするために:この質問は私たちの特定の問題の解決策を求めているのではなく、Mercurialがこの機能自体をサポートしていない理由のためです。


アップデート

これが私が考えている状況のより技術的な説明です。Supposedは、 athgwebdir.cgiでリポジトリのコレクションを提供します(プッシュが有効になっている場合)。(Apacheで構成されている)このURLへのアクセスを許可されたすべてのユーザーは、チェンジセットをプルおよびプッシュできます。これは、事実上、以下のファイルを編集および作成することを意味します。さて、下に新しいリポジトリも作成できるようにする上での障壁は何ですか?/path/to/reposhttps://.../reposhgwebdir.cgihg/path/to/reposhgwebdir.cgi/path/to/repos

4

3 に答える 3

5

その理由は、リポジトリ作成のサポートを追加すると、かなりの量の荷物が持ち込まれるためだと思います。

  • リポジトリを作成できる場合は、それらを削除できると予想されます。これは単純に思えるかもしれませんが、Mercurial が通常動作する安全な方法から大きく離れることになります。標準の Mercurial には破壊的なコマンドはありません。

  • また、ファイルを編集し.hg/hgrcて説明と連絡先情報を設定することも必要です。標準の Mercurial では構成ファイルは変更されないため、これもまた新しいことです。

  • 人々はまた、新しいリポジトリへのユーザーのアクセスを管理したいと考えています。これは.htaccess、ファイルを編集するか、他の Web サーバーの同等の作業を行うことを意味します。

... 等々。この「小さな」機能を実装することで、多くの追加機能のリクエストが可能になります。私たちには、見識のある Web 開発者でもある Mercurial 開発者が数人しかいません。

ただし、現在、優れたオープン ソース ソリューションがあります。Kallitheaは、独自のサーバーにデプロイできる「ミニ Bitbucket」を提供します。上記のすべてを行います。プレーンよりも強力なものが必要な場合は、それをサーバーにインストールしますhgweb.cgi。Mercurial と Git の両方をサポートしています。

于 2011-02-18T13:38:42.927 に答える
0

さまざまな回答 (自分自身のものを含む) は、機能が存在しない理由 (主に懸念事項の分離) のいくつかのかなりの理由を示していますが、本当に追加したい場合は、1 行または 2 行のシェルで行うことができます。これは、私がかなり前に示した非常に危険な例で、信頼性の高い環境でその機能を追加する方法を示しています: HTTP を介した Mercurial でのリモート リポジトリの作成

于 2011-02-08T16:54:55.327 に答える
0

私の知る限り、リモート リポジトリをネイティブに作成できる SCM の代替手段はありません。SVN、CVS、Gitなど

これは、通常、ホスティング プロバイダー (SourceForge、Google Code、BitBucket) の仕事です。それらはすべて、認証インフラストラクチャの上にリポジトリの作成を実装しています。

たとえば、Debian の Mercurial ホスティングは Debian 開発者に限定されており、新しいリポジトリを作成するには、SSH 経由でサーバーにログインし、 Apache のpublic_htmlディレクトリと同様に、ローカルのホーム フォルダーにリポジトリを作成する必要があります。

于 2011-02-08T13:39:31.340 に答える