私はDebianシステムを実行していて、最近DEBパッケージを使用してgitoliteをインストールしました。
これが私の問題です:
Gitolite-admin.gitリポジトリ(gitoliteで管理するすべてのリポジトリのgitoliteインストールを構成するために使用されます)のクローンを作成しようとしました。
私の最初の試みは、まさに指示がどのように述べているかでした:
git clone gitolite@server:gitolite-admin
次のエラーが発生しました。
fatal: 'gitolite-admin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
注:これは、gitolite-adminをgitolite-admin.gitに置き換えた場合にも発生します。
ただし、次のことを行うと:
git clone gitolite@server:~/repositories/gitolite-admin.git
この行は、リポジトリをローカルワークステーションに正常に複製します。
これで、ファイルパスに余分なテキストを追加することに問題はありませんが、ドキュメントによってこれが正しくないと言われています。
次のリンク( http://sitaramc.github.com/gitolite/doc/3-faq-tips-etc.html )は、「リポジトリ名の先頭にリポジトリを追加する/ gitclone」はよくあるエラー/間違いです。また、「実際、gitoliteは内部で$ REPO_BASEを付加するため、同じことを行うべきではありません!」とも述べています。
私の.gitolite.rcファイルには、$ REPO_BASEの次の行が含まれています。
[Located in /home/gitolite/.gitolite.rc]
$REPO_BASE="repositories";
私の質問は、私の構成の何が問題になっているのか、$ REPO_BASEが私のgitクローンの前に追加されないのですか?
さらに詳しい情報が必要な場合は、必要な情報をコメントに残してください。喜んで対応させていただきます。
その他の注意事項:
gitolite@server:~/repositories/gitolite-admin.git
にアクセスできるが、gitolite@server:gitolite-admin
にはアクセスできないということは、Gitoliteを「通過」しておらず、GitoliteユーザーへのプレーンなSSHベースのアクセスを使用していることを示しています。
ssh gitolite@server echo normal access
がnormal access
を生成する場合、使用しているキーはGitoliteを通過することに制限されていません。 Gitoliteを使用している場合は、bad command: echo normal access
のようなものが表示されます。
これは、Gitoliteユーザー自体にSSHで接続するために使用するキーがあり、同じキーを使用してGitoliteユーザーとして認証しようとした場合に発生する可能性があります。 「通常のアクセス」キーは、特別なプレフィックスなしでgitoliteの.ssh/authorized_keys
に存在します。 Gitoliteを通過するように構成されたキーの行は、command="/path/to/gl-auth-command gitolite-username",…
のように始まります。
Gitoliteユーザーへの通常のSSHベースのアクセスとGitoliteベースのアクセスが必要な場合は、それらの目的のために別々のキーを設定して、.ssh/config
ファイルのIdentityFile
オプションで使用するキーを指定できるようにする必要があります。 (ssh-agentがすでにロードされているという理由だけで、sshが「間違った」キーを使用していることがわかった場合は、おそらくIdentitiesOnly
)。
例えば:
「デフォルト」キーの1つ(sshのデフォルトの1つ(例:~/.ssh/id_rsa
)または通常ssh-agentにロードされているキー)を使用して、Gitoliteにアクセスします。 (つまり、アクティブなkeydir/your-gitolite-user-name.pub
に公開鍵があります)。
Gitoliteユーザーに直接ログインするために使用する~/.ssh/gitolite-user
を生成します。 ssh -i ~/.ssh/gitolite-user gitolite@server
を使用してログインします。または、カスタムエントリを~/.ssh/config
に追加します。
Host gitolite-user
User gitolite
HostName server
IdentityFile ~/.ssh/gitolite-user
IdentitiesOnly yes
ssh gitolite-user
を実行してログインできます。
これと同じエラーが発生しました:
fatal: 'gitolite-admin' does not appear to be a git repository
リポジトリは機能していましたが、gitoliteパニックセクションで提案されているようにサーバーでクローンを使用してロールバックした後、リポジトリ内のいくつかのファイルにはgitolite3ではなく所有者ルートがありました。
gitolite-admin.git# ls -l
total 48
drwx------ 2 gitolite3 gitolite3 4096 Mar 27 2012 branches
-rw-r--r-- 1 gitolite3 gitolite3 6 Mar 27 2012 COMMIT_EDITMSG
-rw------- 1 gitolite3 gitolite3 119 Jul 12 2013 config
-rw-r--r-- 1 gitolite3 gitolite3 73 Aug 25 2013 description
-rw-r--r-- 1 gitolite3 gitolite3 128 Aug 23 20:44 gl-conf
-rw------- 1 root root 23 Aug 26 13:45 HEAD
drwx------ 2 gitolite3 gitolite3 4096 Aug 25 2013 hooks
-rw------- 1 root root 605 Aug 26 13:45 index
drwx------ 2 gitolite3 gitolite3 4096 Mar 27 2012 info
drwxr-xr-x 3 gitolite3 gitolite3 4096 Mar 27 2012 logs
drwx------ 83 gitolite3 gitolite3 4096 Aug 26 14:01 objects
drwx------ 4 gitolite3 gitolite3 4096 Mar 27 2012 refs
修正は、所有権をgitolite3に戻すことです。
gitolite-admin.git# chown -R gitolite3:gitolite3 *