gitolite setup no Mac = git-upload-pack: comando não encontrado

4

Estou tentando configurar o gitolite usando o "diretamente no método do servidor" nos documentos

Passou por toda a configuração, carregando a chave pública ssh, etc ... então agora eu posso ssh git @ myserver sem me avisar por senhas, tudo bem.

Cheguei a esta etapa que preciso executar na minha estação de trabalho, no meu caso, um Mac OS

on the client, run cd; git clone git@server:gitolite-admin

em execução que está jogando este erro:

Initialized empty Git repository in /Users/myLocalUser/gitolite-admin/.git/
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

que me diz que não é possível encontrar o git-upload-pack, então pensei em adicionar seu caminho ao usuário "git" ".profile"

Eu apenas verifiquei novamente e o caminho está lá! se eu:

ssh git@myServer

ligue para:

which git-upload-pack

Eu obtenho o caminho como esperado:

/usr/local/bin/git-upload-pack

O que estou perdendo aqui?!

Eu não consigo clonar o gitolite-admin, porque ele continua reclamando sobre não ser capaz de encontrar o git-upload-pack !!

    
por Bach 31.08.2010 / 07:42

2 respostas

4

Por fim, resolvi isso adicionando o PATH a .bashrc em vez de .profile

git user está configurado para usar o shell / usr / bin / bash

Eu não percebi que quando eu ssh para o meu servidor com o usuário git:

ssh git@myServer

a variável PATH está sendo lida de .profile no diretório inicial do git.

echo $PATH

estava exibindo todos os caminhos certos incluídos no .profile

mas ..

do meu wrokstation, quando tentei

ssh git@myServer \echo $PATH

a saída foi completamente diferente e os caminhos estavam todos ausentes.

Depois de adicionar o arquivo .bashrc ao diretório home do git, e defini todos os PATHs que eu precisava dentro do .bashrc, e adicionei / usr / local / bin / onde o git-upload-pack está funcionando, como esperado.

Certifique-se sempre de que os caminhos foram definidos onde devem ter executado este comando:

ssh git@myServer \echo $PATH
    
por 01.09.2010 / 08:07
1

Quando você efetua login em uma máquina com ssh, ele inicia um "login shell" e alguns de seus login scripts são executados. Se você executar remotamente um comando com ssh, alguns scripts de login outros serão executados. Você pode ler sobre este aqui .

O seu problema é (como você descobriu) que o caminho para o git-upload-pack não está definido para o shell "não-login".

Você pode alterar os scripts de login conforme sugerido. Uma alternativa talvez mais simples é especificar o caminho para git-upload-pack na linha de comando da seguinte forma:

git clone --upload-pack /usr/local/bin/git-upload-pack git@server:gitolite-admin

Se você tem um repositório remoto para o qual você tem que usar muito o --upload-pack, você pode facilitar a vida configurando o git após o clone para sempre usar esse caminho para aquele repositório

git configure remote.<name-of-repo>.uploadpack /usr/local/bin/git-upload-pack

A menos que você tenha nomeado seu repositório remoto, o <name-of-repo> geralmente é origin

    
por 11.03.2011 / 10:31