2014-02-10 3 views
2

Я хочу автоматически обновить удаленный сервер промежуточного уровня после того, как он завершил мой блок dev. Я пытаюсь настроить TortoiseSVN post-commit hook на Win 7 64. Я TortoiseGit установлен в системе с кучей полезных команд, как «SSH»Ошибка комманды TortoiseSVN после Win 7

я создал test.bat скрипт, который содержит:

ssh -l {username} -i "C:\Users\{path-to-ssh-key.pem}" {server_address} ./svnup 

Этот скрипт работает на «svn up» на удаленном промежуточном сервере. И этот файл test.bat отлично работает при запуске вручную. Но он не работает в конфигурации после фиксации. Появляется пустой экран консоли, а TortoiseSVN показывает ошибку:

Error: The hook script returned an error:  
Error:  0 [main] ssh 2040 fhandler_base::dup: dup(some disk file) failed, handle 0, Win32 error 6  
Error: dup() in/out/err failed 

Не могли бы вы дать совет?

UPD: Я обновил пакетный скрипт, чтобы использовать полный путь.

Но ошибка все еще существует. Теперь у него есть новый номер

Error: The hook script returned an error: 
Error:  0 [main] ssh.exe" 6976 fhandler_base::dup: dup(some disk file) failed, handle 0, Win32 error 6 
Error: dup() in/out/err failed 
+1

1. Перенаправление стандартного вывод в лог-файл 2. Попробуйте родную Plink вместо SSH –

ответ

1

Решение должно использовать plink.exe вместо TortoiseGit ssh.exe. И это будет работать:

c:\plink.exe -ssh -batch -l {username} -i "C:\Users\{path-to-ssh-key.pem}" {server_address} ./svnup 
2

Ваш крючок, вероятно, не может найти ssh.

Использование полного имени пути может помочь.

Если это не поможет сменить рабочий каталог на местоположение ssh, это может помочь.

В худшем случае вы можете добавить местоположение ssh в путь из командного файла. Это повлияет только на путь во время выполнения. Я считаю, что новая оболочка создается черепахой каждый раз, когда она называется.

2

Как уже упоминалось в svn book:

For security reasons, the Subversion repository executes hook programs with an empty environment—that is, no environment variables are set at all, not even $PATH (or %PATH%, under Windows). Because of this, many administrators are baffled when their hook program runs fine by hand, but doesn't work when run by Subversion. Be sure to explicitly set any necessary environment variables in your hook program and/or use absolute paths to programs.

Что означает, что ваш крючок скрипт не знает, где найти SSH и что текущий каталог (так, используя относительные пути, скорее всего, не будет работать).

+0

Спасибо, но это не помогает. Ошибка все еще там, я обновил вопрос. –

+2

Это ** клики на стороне клиента **, а не на стороне хранилища –

Смежные вопросы