2013-04-16 3 views
0

Я пытаюсь выполнить .cmd для экспорта файлов из SVN, он работает вручную и на моем локальном компьютере (WS2003 SP2 IIS Identiy: Local System), но он не работает в сервер выполнения (та же конфигурация).Процесс экспорта файлов svn зависает с Process.Start()

Сценарий я исполню это:

echo.%Date%-%Time%- Username %username%>>c:\vpcheckcode\logsvn.txt 

svn export %svnUrl% %srcFolder% --force --username %usr% --password %psw% 

Если я пытаюсь просто скопировать файл, не СВН, он не работает.

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

Я пытаюсь выполнить .CMD таким образом:

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.CreateNoWindow = true; 
startInfo.UseShellExecute = false; 
startInfo.FileName = strFileName; 
startInfo.WindowStyle = ProcessWindowStyle.Hidden; 

startInfo.Arguments = svnUrl + " " + srcFolder+ " " + usr+" "+psw; 

using (Process exeProcess = Process.Start(startInfo)) 
{ 
    pid = exeProcess.Id; 
    EventLog.WriteEntry("VPCheckCodeSrvDll.ExecuteScriptSVN", "avviato pid svn: " + pid.ToString(), EventLogEntryType.Warning); 

    if (!exeProcess.WaitForExit((int)_svnExportTimeout)) 
    { 
     exeProcess.Kill(); 

Процесс висит до тех пор пока он был убит.

C:\Documents and Settings\myuser>tlist 4980 
4980 cmd.exe 
    CWD:  c:\windows\system32\inetsrv\ 
    CmdLine: cmd /c ""C:\ANALISI\000000-xx-v90\SVN\svnExport.cmd" https://svn.mysite.local/repos/HA/branches/H 
    VirtualSize: 11332 KB PeakVirtualSize: 15492 KB 
    WorkingSetSize: 1832 KB PeakWorkingSetSize: 1848 KB 
    NumberOfThreads: 1 
    2704 Win32StartAddr:0x4ad07670 LastErr:0x000000cb State:Waiting 
    5.2.3790.3959 shp 0x4AD00000 cmd.exe 
    5.2.3790.4937 shp 0x7C800000 ntdll.dll 
    5.2.3790.5069 shp 0x77E40000 kernel32.dll 
    7.0.3790.3959 shp 0x77BA0000 msvcrt.dll 
    5.2.3790.4455 shp 0x7D1E0000 ADVAPI32.dll 
    5.2.3790.4759 shp 0x77C50000 RPCRT4.dll 
    5.2.3790.4455 shp 0x76F50000 Secur32.dll 
    5.2.3790.4033 shp 0x77380000 USER32.dll 
    5.2.3790.4396 shp 0x77C00000 GDI32.dll 
    5.2.3790.3959 shp 0x71BD0000 MPR.dll 
    5.2.3790.3959 shp 0x76290000 IMM32.DLL 

Любое предложение?

ответ

0

Я сделал что-то подобное. Попробуйте выполнить следующие действия:

Изменить: startInfo.Arguments = svnUrl + "" + srcFolder + "" + usr + "" + psw;

в: startInfo.Arguments = String.Format ("{0} \" {1} \ "--username {2} --password {3}", svnUrl, srcFolder, usr, psw);

Я исхожу из предположения, что переменные usr и psw не содержат информацию о параметрах для подрывной деятельности. Кроме того, мой пункт назначения включал имя файла (я не вижу вашу полную командную строку, поскольку она отключена), а также содержит пробелы, поэтому мне пришлось заключить ее в кавычки. Ваш svnUrl должен иметь «% 20» вместо пробелов, если у вас есть (опять же, полный URL-адрес не отображается).

+0

Извините, слишком быстро ответьте. Я пренебрег предложением предложить, чтобы процесс работал без скрипта. Поэтому замените startInfo.FileName = strFileName; с startInfo.FileName = "svn", и я также забыл добавить ключевое слово "export" в начало startInfo.Arguments (String.Format ("export {0} \" {1} \ "--username {2 } --password {3} ", svnUrl, srcFolder, usr, psw);) – Rod

+0

Спасибо, Род, я пробовал, но он не работает. Скрипт работает, если я выполняю его напрямую, но он не работает с Process.Start(). Должно быть, это связано с полномочиями пользователей, которые я думаю. –

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