Как я могу настроить git-репозиторий на Windows, а затем нажать / вытащить из него на Mac OSX - PullRequest
5 голосов
/ 20 мая 2010

Я пытаюсь настроить веб-сервер на базе Windows, но делаю работу по разработке для Mac OSX. Я установил freeSSHd и msysGit на сервер Windows, и создал хранилище там, где я хочу. У меня также есть git на моем Mac, и я тоже создал там репо. Когда я пытаюсь клонировать, извлекать или передавать в репозиторий Windows через SSH, это выдает мне сообщение «фатально: ошибка протокола: неверный символ длины строки». Не имеет значения, что я установил для пульта в моем клиенте ( Mac OSX) - я могу указать на папку, которая не существует, и она все еще дает мне эту ошибку.

Я также попробовал это на Linux-боксе, который сидел без дела, и он отлично работает, поэтому это не мой Mac.

У меня есть пара идей:

  1. Возможно, freeSSHd работает неправильно (, как предлагается здесь ), поэтому я мог бы получить другой сервер SSH для Windows - возможно, OpenSSH

  2. Возможно, я набираю код, который неправильно совмещает пути к файлам Mac и Windows. Я попробовал:
    sudo git clone ssh: //username@xx.xxx.xxx.xxx/C: / Users / [my_username] / [remote_repo_name] /.git [destination]

    и

    sudo git clone ssh: //username@xx.xxx.xxx.xxx/C: \ Users \ [my_username] \ [remote_repo_name] \ .git [destination]

    Я получаю одинаковую ошибку с обоими из них.

Кто-нибудь знает, что происходит не так? А еще лучше, есть ли кто-нибудь, кто сумел сделать то, что я хочу сделать (нажать и вытащить из хранилища Windows через SSH)?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 20 мая 2010

Я не выполнял такую ​​настройку (мой ssh-сервер - Solaris10), но я обнаружил большинство ошибок ssh при попытке установить gitolite .

  1. как необходимое условие, гитолит требует, чтобы ssh user@remote git --version работал
  2. gitolite использует интересное свойство конфигурации ssh из файла %HOME%/.ssh/authorized_keys

Вы можете не просто скопировать туда свой открытый ключ (то есть в "authorized_keys"), но вы также можете сослаться на скрипт, который нужно выполнить для вашей команды ssh:

> more authorized_keys
command="path/to/any/script/you/want" ssh-rsa AAAAB3N;...A_long_key..J6U19Jsf/kuO99XIrNE4ePzHw== username@pc_hostname

То есть любая команда ssh, которую вы попробуете на этом удаленном ssh user@remote dir, фактически вызовет этот сценарий на удаленном (ПК) компьютере.
(если это сценарий Perl, он может вызвать system(your_command), чтобы фактически выполнить то, что вам нужно)

Из этого скрипта вы можете отображать и контролировать (и отлаживать) любую переменную среды, которая может повлиять на результат команды, которую вы пытаетесь выполнить с помощью ssh.
Смотрите .gitolite/src/gl-auth-command как пример скрипта (Perl), который вы можете вызвать через ssh (при условии, что он объявлен перед вашим открытым ключом в вашем файле authorized_keys)

0 голосов
/ 20 мая 2010

Просто чтобы предложить что-то возмутительное, как насчет того, чтобы не использовать ssh и вместо этого использовать общий доступ к файлам. Mac могут получить доступ к общим ресурсам Windows, а git может работать по физическому пути (так будет выглядеть общий ресурс Windows).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...