Изменение значения GIT_SSH для tortoiseGit

Я хочу использовать tortoiseGit для проверки репозитория SVN через SSH.

Каждый раз происходит сбой, потому что команда SSH не может быть выполнена. По-видимому, причина в том, что вызывается пользовательская команда SSH, которая содержит имя пользователя и пароль. Раньше я использовал tortoiseSVN для доступа к репозиторию через SSH и пытался отправить учетные данные для аутентификации (такие же, как в пользовательской команде) в командной строке, но, поскольку это не сработало, я переключился на аутентификацию на основе ключей. На самом деле это то, что я хотел бы сделать и с git, но прежде чем я смогу это сделать, мне, очевидно, придется изменить команду SSH.

Мне было любопытно, как мои старые учетные данные могут быть переданы на сервер, и, наконец, я нашел в настройках tortoiseGit кнопку «Показать переменные среды». Там я увидел две переменные с именами GIT_SSH и SVN_SSH, содержащие одну и ту же неправильную команду. Поэтому я искал эти переменные среды, но, видимо, их не существует. Я пытался создать их, но git продолжает использовать старые.

Я предполагаю, что в каком-то скрипте эти переменные определены до запуска git, но после нескольких часов поиска я ничего не смог найти. Я также переустановил git, toritoiseGit и tortoiseSvn и попытался удалить все данные, но после повторной установки git все равно использовал неправильную команду.

Фактический результат (который я получил после выбора «Git clone» - «Из репозитория SVN»:

git.exe svn clone "svn+ssh://username@puttyconfig/path/to/my/repo"  "C:\Path\to\Repo\on\Filesysem" -T trunk -b branches -t tags

WARNING: --prefix is not given, defaulting to empty prefix.
This is probably not what you want! In order to stay compatible
with regular remote-tracking refs, provide a prefix like
--prefix=origin/ (remember the trailing slash), which will cause
the SVN-tracking refs to be placed at refs/remotes/origin/*.
NOTE: In Git v2.0, the default prefix will change from empty to 'origin/'.
Initialized empty Git repository in C:/Path/to/Repo/on/Filesysem/.git/
No such file or directory: Error in child process: exec of 'C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe -I username -pw password' failed: No such file or directory at /usr/lib/perl5/site_perl/Git/SVN.pm line 310



git did not exit cleanly (exit code 1) (1794 ms @ 06.11.2014 16:17:30)

И команда в '' на самом деле та же самая строка, что и в GIT_SSH и SVN_SSH.


person JonathanK    schedule 06.11.2014    source источник
comment
Пожалуйста, не могли бы вы указать фактическую команду, которую вы выполняете (с скрытым/измененным URL-адресом, если хотите) и сообщение об ошибке, которое вы получаете при ее запуске?   -  person orbrey    schedule 06.11.2014
comment
Да, извините за это, я добавил это.   -  person JonathanK    schedule 06.11.2014


Ответы (3)


Вы не можете включать параметры в переменную среды SVN_SSH для использования с Git (для Windows).

Создайте конфигурацию шпатлевки и сохраните там имя пользователя, чтобы вам не нужно было использовать параметры CLI. Пароль не обязательно указывать в качестве параметра, поскольку его может запросить предопределенный инструмент ASKPASS.

or

Создайте приложение-оболочку, которое запускает Tortoise(Git)Plink с соответствующими параметрами, которые передают stdin и stdout Tortoise(Git)Plink.

person MrTux    schedule 06.11.2014
comment
О, я на самом деле пытался сделать именно это, я просто не нашел способа изменить неправильное значение в SVN_SSH. - person JonathanK; 07.11.2014

на всякий случай, если сюда попадет кто-то еще, я получил аналогичное сообщение об ошибке в сочетании с использованием Git Extensions в Windows:

не удалось: нет такого файла или каталога в строке /usr/lib/perl5/site_perl/Git/SVN.pm 310GitExtensions\PuTTY\plink.exe

Исправление состояло в том, чтобы установить переменную среды git_ssh в формат 8.3:

set git_ssh=c:\progra~2\gitextensions\putty\plink.exe

«progra~2» в моем случае — это короткое имя для «program files (x86)», вы можете получить короткое имя каталога через dir /x в командной строке.

кажется, что пробелы в пути не обрабатываются должным образом

person Martin M    schedule 18.02.2015

Я нашел способ решить свою проблему.

Я удалил tortoiseGit, Git и tortoiseSVN. После этого я искал на своем жестком диске любой файл конфигурации, который мог остаться, и действительно нашел много. После этого я поискал в реестре старые ключи и снова нашел множество. Судя по всему, SVN_SSH и GIT_SSH были записаны в реестре, а не в переменных среды (несмотря на то, что они называются переменными среды...).

Переустановив все и попробовав некоторое время, я смог проверить репозиторий. Так что, видимо, вся проблема была вызвана людьми, которые не могут написать деинсталлятор, который на самом деле способен удалить программу полностью, а не только удалить некоторые двоичные файлы...

person JonathanK    schedule 07.11.2014