2009-07-07 6 views
5

Ho una finestra di Windows 2003 con una configurazione del server ssh. Ho msysgit (git versione 1.6.2) installato sia localmente che sul server.Come smettere git tramite ssh su windows per risolvere il percorso sbagliato?

Il server ha il seguente percorso assoluto ai miei pronti contro termine:

e:\vc\git\myrepo.git 

quando un utente accede a lui/lei saranno messi nella seguente directory di lavoro:

e:\vc\git\ 

Quando si esegue il seguente cmd sulla mia macchina dev:

git clone ssh://[email protected]/myrepo.git testrepo 

ottengo il seguente errore:

fatal: ''/myrepo.git'' does not appear to be a git repository 

Secondo le mie log ssh sembra che git sta eseguendo questa cmd sul server:

'cmd.exe /c git-upload-pack '/myrepo.git'' 

Eseguendo il comando in locale (sul server) non riesce per lo stesso motivo. Sto pensando che il problema sia legato al git che precede il percorso con un '/'. Come faccio a dire git di non farlo? Questo dovrebbe funzionare?

Nota: git-upload-pack funziona perché ho aggiunto \ gitinstallpath \ libexec \ git-core al percorso. Apparentemente questo è un bug e verrà risolto in futuro, questo è stato il mio lavoro.

+0

Cosa SSH stai in esecuzione sul server? La parte dell'URL dopo che l'utente @ server deve essere nel formato che comprende. –

risposta

6

Ho risolto il problema passando il server ssh da winssh a openssh (tramite il livello cygwin). Sono stato in grado di connettermi bene (come indicato sopra) usando winsshd, ma winsshd non gestiva correttamente i percorsi preceduti da "/". Probabilmente avrei potuto ottenere winsshd per funzionare, ma passare a cygwin e openssh era più veloce.

Ecco un good blog post per lanciare il programma di installazione se la vostra in una situazione simile:

+1

+1 per l'ottimo post sul blog sulla configurazione di un server git + ssh su Windows. –

4

Hai provato quanto segue?

git clone ssh://[email protected]/myrepo testrepo 

Annotare la rimozione di ".git" dalla fine del percorso SSH. Hai solo bisogno di quel suffisso alla fine se il nome della directory remota ce l'ha.

Inoltre, hai provato un altro formato di URL SSH? Per utilizzare un percorso relativo, si può provare:

git clone ssh://[email protected]/~/myrepo testrepo 

Vedere la git clone man page per i dettagli su altri formati di URL.

+0

1) la directory ha .git. Ci scusiamo per l'errore di battitura, risolto in questione. 2) provoca l'errore: fatale: '' ~/myrepo.git '' non sembra essere un repository git –

+0

Ho anche provato: ssh: // myuser @ myip: myrepo.git ma ssh si lamenta della porta e non è in grado di connettersi. –

3

Se qualcuno ancora interessato a risolvere il problema:

Il problema è - cmd.exe non capisce singoli parametri citato. Quindi usiamo invece sh.

Creare file di gup.sh con la linea

 
    git-upload-pack.exe $* 

e grp.sh con

 
    git-receive-pack.exe $* 

sul server!

Quindi eseguire:

server di
 
    git clone -u 'sh gup.sh' ssh://[email protected]/e/vc/git/myrepo.git testrepo 
    git config remote.origin.uploadpack 'sh gup.sh' 
    git config remote.origin.receivepack 'sh grp.sh' 
Problemi correlati