Настройка домашней папки клиента Git/SmartGit SSH

Мне интересно, может ли кто-нибудь пролить свет на то, почему SmartGit не работает, когда я подключаюсь к нашему серверу управления версиями через SSH. GitBash ведет себя нормально.

Предыстория:

У меня есть сервер управления версиями, настроенный в сети, на котором работает MSYSGit с WinSSH в качестве SSH-сервера. Он подключается к AD для разрешения имен пользователей и т. Д., И я импортировал все открытые ключи RSA и т. Д. Все работает отлично.

Одна из проблем для нас заключается в том, что, хотя Git установлен в папке «C:\Program Files (x86)\Git», наш фактический исходный код находится в папке «C:\Git', который регулярно резервируется.

Я настроил WinSSH так, чтобы все сеансы SSH по умолчанию использовали «C:\Git» в качестве домашней папки, что очень удобно. Когда я использую Git Bash для подключения к серверу, по умолчанию используется «C:\Git». Идеально.

Когда я получаю SmartGit (используя SmartGit SSH Client) для подключения к тому же серверу с URL-адресом:

    ssh://<server>/<folder>/<repo>

Я получаю сообщение об ошибке, говорящее о пути...

    C:\Program Files (x86)\Git\<folder>\<repo> 

... не похоже на репозиторий. Ну да... Он должен искать его в 'C:\Git', а не 'C:\Program Files (x86)\Git'.

Я не уверен, почему SmartGit плохо сочетается с этой настройкой, но я считаю, что настройки WinSSH по умолчанию обходят его SSH-клиент, поскольку он полностью указывает весь путь из «C:\Program Files (x86 )\Git'.

Мои вопросы:

Есть идеи, откуда SmartGit может получить путь «C:\Program Files (x86)\Git»?

Это переменная, которую я могу где-то установить?

Дополнительная информация (обновление)

Версия SmartGit — 3.0.4, однако проблема присутствовала и в версии 2.x.

Я прикрепил то, что (я почти уверен) является примером сбоя в журнале приложений SmartGit:

1782732 (2012-05-10 12:18:56,653) [QThreadPoolThread-2 (smartgit.KL)] INFO smartgit.core.executable — выполнение следующей команды: «C:\Program Files\Git\bin\git.exe» ls -удаленный ssh://initio-dev01/INIT/INIT.Framework.git refs/heads/

1782732 (2012-05-10 12:18:56,653) [QThreadPoolThread-2 (smartgit.KL)] ИНФОРМАЦИЯ smartgit.core.executable — в каталоге: null

1783049 (2012-05-10 12:18:56,970) [QThreadPoolThread-8 (smartgit.aqT)] ИНФОРМАЦИЯ smartgit.server — получена команда: ssh

1786438 (2012-05-10 12:19:00,359) [QThreadPoolThread-6 (smartgit.cR)] ИНФОРМАЦИЯ smartgit.command.logging — stderr: fatal: 'C:/Program Files (x86)/Git/INIT/INIT. Framework.git не является репозиторием git.

1786438 (2012-05-10 12:19:00,359) [QThreadPoolThread-6 (smartgit.cR)] ИНФОРМАЦИЯ smartgit.core.command — фатальная: 'C:/Program Files (x86)/Git/INIT/INIT.Framework. git не является репозиторием git

1786439 (2012-05-10 12:19:00,360) [Тема-29] ОШИБКА smartgit.ssh.trilead - com.trilead.ssh2.transport.TransportManager: Поток приема: ошибка в ReceiveLoop: сокет закрыт

1786763 (2012-05-10 12:19:00,684) [QThreadPoolThread-6 (smartgit.cR)] ИНФОРМАЦИЯ smartgit.command.logging — stderr: фатальный: удаленный конец неожиданно завис.

1786763 (2012-05-10 12:19:00,684) [QThreadPoolThread-6 (smartgit.cR)] ИНФОРМАЦИЯ smartgit.core.command — фатальная: удаленный конец неожиданно завис.

1786772 (2012-05-10 12:19:00,693) [QThreadPoolThread-2 (smartgit.KL)] WARN sg.command.ping — 'C:/Program Files (x86)/Git/INIT/INIT.Framework.git' не является репозиторием git Удаленный конец неожиданно завис smartgit.cn: 'C:/Program Files (x86)/Git/INIT/INIT.Framework.git' не является репозиторием git Удаленный конец завис неожиданно

на smartgit.gG.a(SourceFile:86)

на smartgit.ga.a(SourceFile:63)

на smartgit.ga.a(SourceFile:53)

на smartgit.hA.a(SourceFile:57)

на smartgit.ahq.a(SourceFile:26)

на smartgit.ahl.a(SourceFile:39)

на smartgit.aL.a(SourceFile:46)

на smartgit.aD.a(SourceFile:41)

в smartgit.Kw.a(SourceFile:144)

в smartgit.KL.run(SourceFile:34)

в smartgit.Pp.run(SourceFile:65)


person Sebastian Nemeth    schedule 10.05.2012    source источник
comment
Какую именно версию SmartGit вы используете? Что такое соответствующее сообщение об ошибке/трассировка стека из файла log.txt SmartGit (в каталоге настроек SmartGit, см. диалоговое окно «О программе»)?   -  person mstrap    schedule 10.05.2012
comment
Спасибо, я не знал об этом файле журнала. Я обновил вопрос с примером ошибки. К сожалению, я не думаю, что это проливает больше света... Вы можете видеть, что он входит в удаленный адрес с URL-адресом SSH, но пытается получить из C:\Program Files (x86)\, но это все.   -  person Sebastian Nemeth    schedule 11.05.2012
comment
Содержит ли git-ssh.log в каталоге настроек SmartGit какую-либо полезную информацию? Также добавьте строку log4j.category.smartgit.ssh.client=DEBUG в logj4.properties и перезапустите SmartGit. Это даст больше отладочной информации для соединения SSH в log.txt. Пожалуйста, опубликуйте строки, связанные с smartgit.ssh.client, еще раз.   -  person mstrap    schedule 11.05.2012
comment
Быстрое обновление: хотя у меня нет ответа на исходный вопрос, я решил опубликовать информацию о том, что я сделал, чтобы в итоге решение заработало. Используя переносную версию Git, я установил ее в ту же папку C:\Git. Кажется, что SmartGit по умолчанию использует место установки, поэтому, когда я это сделал, по умолчанию он выбрал правильную базовую папку в C:\Git. С другой стороны, бинарные файлы Git теперь находятся в той же папке, что и исходный код. Кто-то может сказать, что это благоразумно, так как теперь это также часть расписания резервного копирования.   -  person Sebastian Nemeth    schedule 18.06.2012


Ответы (1)


Очень раздражает жестко закодированный путь, который может показаться здесь проблемой ?! Пока это не будет исправлено в более поздней версии, возможно, вам следует вместо этого создать точку соединения каталогов или символическую ссылку. Может быть (быстрым и грязным) решением вместо того, чтобы тратить время на исправление программы.

(необходимо запускать в оболочке администратора)

Для точки соединения:

mklink /j "C:\Program Files (x86)\GIT\<folder>" C:\GIT\<folder>

Для символической ссылки:

mklink /d "C:\Program Files (x86)\GIT\<folder>" C:\GIT\<folder>
person oanoss    schedule 16.05.2012
comment
Отличная, нестандартная идея, и я ее обдумывал. Однако для меня проблема заключалась в том, что, насколько я понимаю, точка соединения будет перенаправлять все, а не только сеанс git. - person Sebastian Nemeth; 18.06.2012