2

我正在尝试自动化 SVK 同步过程。
配置完SVK镜像后,我写了一个批处理文件,内容如下

svk sync -a >> svk.log &2>1

然后我添加了一个在我的管理帐户下运行的 Windows 计划任务。

在 svk.log 我读过

getpwuid 函数在 C:\Programmi\svk\bin\svk 第 142 行未实现。

有什么提示吗?

ps 我可以从命令行运行 svn sync -a(同一用户)

4

1 回答 1

0

当我发布我的问题时,我不知道

  1. 在 Windows 调度程序下 HOMEDRIVE 和 HOMEPATH 未初始化 (http://tinyurl.com/9zxbrg8)
  2. getpwuid 函数在 Perl 的 Windows 端口中不可用 (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 计划任务运行

于 2012-09-08T14:40:08.173 回答