1

これはばかげた考えのように思えるかもしれませんが、 hgweb.cgi にバンドルされている webinterface 機能を使用せずに、http 経由で mercurial リポジトリを提供する方法はありますか?

ユーザーが http:// 経由でリポジトリを複製/プッシュできるようにしたいのですが、Web インターフェイスを介してリポジトリやファイルを表示できるようにしたくありません。

静的 HTTP はオプションですが、公式の mercurial ドキュメントでは、これは非常に遅いと主張しています。

これが些細なことではない場合、ブラウザー インターフェイスをサポートせずに、http 経由で hg リポジトリを提供するサンプル コードを知っている人はいますか?

前もって感謝します。

4

2 に答える 2

2

hgweb ファイルを簡単に確認したところ、次のことがわかりました。

Mercurial インストールのファイルを見つけてhgweb/webcommands.py、エディターで開きます。ファイルの先頭にある次のコードを変更します。

__all__ = [
   'log', 'rawfile', 'file', 'changelog', 'shortlog', 'changeset', 'rev',
   'manifest', 'tags', 'bookmarks', 'branches', 'summary', 'filediff', 'diff',
   'annotate', 'filelog', 'archive', 'static', 'graph', 'help',
]

これに:

__all__ = [
]

これにより、すべての Web コマンドが無効になります。リポジトリのリストは引き続き表示できますが、それらに関する情報は表示されません。

と をチェックhg cloneしましhg pullたが、 ではありませんhg push

于 2011-11-15T09:02:48.493 に答える
0

ファイルにアクセスできる場合はここで提供される情報にアクセスできるため、UI 部分へのアクセスを制限する理由はわかりませんが、そうです:P

クリーンな解決策が必要な場合は、hgweb.cgi のコードを取得して書き直すことはそれほど難しくないと思いますが、より迅速に行うこともできると思います。hg serve -t /dev/null

これは/dev/nullUI 部分のテンプレートとして使用されるため、ユーザーはサーバーに接続するときに「内部サーバー エラー」ページを受け取りますが、hg.

唯一の欠点は、ブラウザからアクセスした場合、ログにエラーが表示されることです。

PS: Unix システムを使用していない場合は、空のディレクトリをテンプレートのソースとして使用してください。

于 2011-11-15T04:24:28.880 に答える