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 に答える