3

Mac OSXLionのApacheでhgwebdir.cgiを使用してMercurialを提供しようとしています。

私はここにリストされている指示に従いました: http ://www.popitandrockit.com/2010/05/mercurial-server-on-osx-106-snow.html

その記事はSnowLeopardに関するものです(Lionでこれをやろうとした人はまだいないと思いますか?)が、ほとんどは機能します。問題のマシンが会社のファイアウォールの背後にあるため、httpsを使用しないように変更しました。

でリポジトリにアクセスできるはずだと書いてありますhttp://servername/repository_nameが、うまくいきません。ただし、アドレスはhttp://servername/hg/、でそれらのリストを取得できます。だから私は経由でリポジトリにアクセスできるはずですが、代わりに私に教えてくれる素敵なMercurialページを取得しています/hgScriptAliashttp://servername/hg/repository_name

An error has occured while processing your request:

repository /Users/username/Documents/repository_name not found

まあ、ディレクトリは有効であり、Mercurialによるとそこに有効なリポジトリがあります(つまり、hg log同様のコマンドはエラーになりません)

メインページで、Apacheで同様のエラーが発生します。

[(date)] [error] [client (ip address)] error accessing repository at /Users/username/Documents/repository_name

ある種のアクセスまたはアクセス許可の問題だったと思いますが、ApacheまたはMac OS X Lionに精通していないため、修正方法を推測することはできません。

4

1 に答える 1

3

これは確かに権限の問題のように見えます。標準のMacOSX Apacheインストールでは、Webユーザーとグループは_wwwです。これらに読み取りおよび書き込みアクセス権があることを確認する必要があります。また、hgrcファイルの権限がユーザーと一致しない場合、Mercurialは文句を言います。これを修正する方法は2つあります。

  1. Apache_wwwユーザーがリポジトリを所有するようにします。入力するとき:

    ls -ld /Users/username/Documents/repository_name
    

    _www _www3列目と4列目に表示されます。そうでない場合は、ディレクトリのユーザーを変更します。

    sudo chown -R _www:_www /Users/username/Documents/repository_name
    

    これを変更する場合は、他のユーザーからファイルシステム上のリポジトリにアクセスしないでください。アクセスしないと、新しく作成されたファイルに誤った権限が再び付与されます。

  2. または、 :のtrustedセクションにユーザーを明示的に追加します。hgweb.config

    [trusted]
    users=username
    

    この場合でも、_wwwユーザーがアクセスできることを確認する必要があります。次のように入力した場合:

    ls -ld /Users/username/Documents/repository_name
    

    drwxrwxr--最初の列(真ん中rwが重要)と4番目の列のように表示されるはず_wwwです。グループがファイルの読み取りまたは書き込みができない場合は、chmodコマンドを使用してファイルを作成します。

    chmod -R go+rwX /Users/username/Documents/repository_name
    

    _wwwそして、リポジトリのグループを次のように変更できます。

    sudo chown -R :_www /Users/username/Documents/repository_name
    

状況に応じて、どちらが望ましいかによって異なります。サーバーでリポジトリをホストしようとしている場合は、最初の方が望ましいと思います。よりシンプルで、もう少し安全です。便宜上ローカルワークステーションでホストしようとしている場合は、現在のユーザーからリポジトリにアクセスできるため、2番目の方が簡単です。

アドホック共有の場合はhg serve、コマンドラインで実行する方が簡単な場合があることに注意してください。

それがお役に立てば幸いです。

于 2011-10-20T11:14:22.293 に答える