Синхронизация SVK и запланированное задание
Я пытаюсь автоматизировать процесс синхронизации SVK.
После настройки зеркал SVK я написал командный файл со следующим
svk sync -a >> svk.log &2>1
затем я добавляю запланированное задание Windows, выполняемое под моей учетной записью администратора.
в svk.log читаю
Функция getpwuid не реализована в C:\Programmi\svk\bin\svk строка 142.
Любой намек?
ps я могу запустить svn sync -a из командной строки (тот же пользователь)
1 ответ
Решение
Когда я отправил свой вопрос, я не знал, что
- под Windows Scheduler HOMEDRIVE и HOMEPATH не инициализируются (http://tinyurl.com/9zxbrg8)
- Функция getpwuid недоступна в портах Windows для Perl (http://tinyurl.com/d56a2mv)
Имея вышесказанное, я изменил файл /bin/svk, изменив
$ENV{HOME} ||= (
$ENV{HOMEDRIVE} ? catdir(@ENV{qw( HOMEDRIVE HOMEPATH )}) : ''
) || (getpwuid($<))[7];
$ENV{USER} ||= (
(defined &Win32::LoginName) ? Win32::LoginName() : ''
) || $ENV{USERNAME} || (getpwuid($<))[0];
в
$ENV{HOME} ||= (
$ENV{HOMEDRIVE} ? catdir(@ENV{qw( HOMEDRIVE HOMEPATH )}) :
($ENV{USERPROFILE} ? $ENV{USERPROFILE} : '')
);
$ENV{USER} ||= (
(defined &Win32::LoginName) ? Win32::LoginName() : ''
) || $ENV{USERNAME};
и теперь я могу запустить мой пакетный вызов SVK в качестве запланированной задачи Windows