5

ssh サーバーがセットアップされた Windows 2003 ボックスがあります。ローカルとサーバーの両方に msysgit (git バージョン 1.6.2) をインストールしました。

サーバーには、リポジトリへの次の絶対パスがあります。

e:\vc\git\myrepo.git

ユーザーがログインすると、次の作業ディレクトリに配置されます。

e:\vc\git\

私の開発マシンで次のコマンドを実行すると:

git clone ssh://myuser@myip/myrepo.git testrepo

次のエラーが表示されます。

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

私の ssh ログによると、git がサーバー上でこのコマンドを実行しているようです。

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

そのコマンドをローカル (サーバー上) で実行すると、同じ理由で失敗します。問題は、パスの前に「/」を付ける git に関連していると考えています。これを行わないようにgitに指示するにはどうすればよいですか? これは機能するはずですか?

注: \gitinstallpath\libexec\git-core をパスに追加したため、git-upload-pack は機能しています。どうやらこれはバグであり、将来修正される予定です。これは私の回避策でした。

4

3 に答える 3

6

これを解決するには、ssh サーバーを winssh から openssh に (cygwin レイヤー経由で) 切り替えました。winsshd を使用して (上記のように) 正常に接続できましたが、winsshd は "/" で始まるパスを正しく処理していませんでした。おそらくwinsshdを動作させることができましたが、cygwinとopensshに切り替える方が速かった.

同様の状況にある場合は、セットアップを開始するための良いブログ投稿を次に示します。

于 2009-07-07T23:57:12.617 に答える
4

次のことを試しましたか?

git clone ssh://myuser@myip/myrepo testrepo

SSH パスの末尾から「.git」が削除されていることに注意してください。リモートディレクトリ名にサフィックスがある場合にのみ、最後にそのサフィックスが必要です。

また、他の SSH URL 形式を試しましたか? 相対パスを使用するには、次を試してください。

git clone ssh://myuser@myip/~/myrepo testrepo

他の URL 形式の詳細については、git clone の man ページを参照してください。

于 2009-07-07T15:12:06.067 に答える
4

誰かがまだ回避策に興味がある場合:

問題は、cmd.exe が単一引用符で囲まれたパラメーターを認識しないことです。そのため、代わりに sh を使用します。

次の行でファイル gup.sh を作成します

    git-upload-pack.exe $*  

およびgrp.shで

    git-receive-pack.exe $*  

サーバーで!

次に実行します。

    git clone -u 'sh gup.sh' ssh://myuser@myip/e/vc/git/myrepo.git testrepo  
    git config remote.origin.uploadpack 'sh gup.sh'  
    git config remote.origin.receivepack 'sh grp.sh'  
于 2010-02-24T05:12:18.617 に答える