Então, estou construindo um script de shell para verificar todos os nossos repositórios svn relevantes para análise no svnstat. Eu consegui tudo isso para funcionar manualmente, agora estou escrevendo um script bash em cygwin no meu laptop Vista, como pretendo mover isso para um servidor Linux em algum momento.
Edit: Eu desisti disso e escrevi um simples script .bat. Eu vou descobrir a implantação do Linux de outra maneira.
Edit: adicionou os comandos sleep 30 e svn log. Eu posso dizer agora, com o comando svn log, que ele não está chegando ao svn log ... desta vez, ele fez Applications, e correu o log, e então checou o Database, e congelou. Vou colocar o sleep 30 antes e depois do log dessa vez.
co2.sh
#!/bin/bash
function checkout {
mkdir $1
svn checkout svn://dev-server/$1 $1
svn log --verbose --xml >> svn.log $1
sleep 30
}
cd /cygdrive/c/Users/My\ User/Documents/Repos/wc
checkout Applications
checkout Database
checkout WebServer/www.mysite.com
checkout WebServer/anotherhost.mysite.com
checkout WebServer/AnotherApp
checkout WebServer/thirdhost.mysite.com
checkout WebServer/fourthhost.mysite.com
checkout WebServer/WebServices
Funciona, na maioria das vezes - mas por alguma razão, ele tem uma tendência a parar de funcionar depois de alguns repositórios, geralmente logo após terminar um repositório antes de ir para o próximo. Quando falhar, não irá recuperar sozinho. Eu tentei comentar a linha svn, ele entra e cria todos os diretórios muito bem quando eu faço isso - então não é isso.
Estou procurando orientação e conselhos diretos. O Cygwin tem sido muito estável para mim, mas comecei a usar o rxvt nativo em vez de "bash em uma janela cmd.exe" recentemente. Eu não acho que esse é o problema, já que eu deixei o topo em sistemas remotos funcionando a noite toda e o rxvt não pareceu se importar. Também não fiz nenhum script de bash no cygwin, então acho que isso pode não ser recomendado; embora eu não possa ver porque não. Eu não quero todo o WebServer, daí eu só verificando algumas pastas como essa.
O que eu suspeito é que algo está desligando o svn checkout. Alguma idéia aqui?
Edit: desta vez quando eu pressionei ctrl + z para cancelar, esqueci que estava no Windows e digitei ps para ver se o trabalho ainda estava rodando; e como você pode ver, existem muitos processos svn por aí ... estranhos.
Kyle Hodgson@KyleHodgson-PC ~/winUser/Documents/Repos
$
Kyle Hodgson@KyleHodgson-PC ~/winUser/Documents/Repos
$ jobs
[1]- Stopped bash co2.sh
[2]+ Stopped ./co2.sh
Kyle Hodgson@KyleHodgson-PC ~/winUser/Documents/Repos
$ kill %1
[1]- Stopped bash co2.sh
Kyle Hodgson@KyleHodgson-PC ~/winUser/Documents/Repos
$
[1]- Terminated bash co2.sh
Kyle Hodgson@KyleHodgson-PC ~/winUser/Documents/Repos
$
Kyle Hodgson@KyleHodgson-PC ~/winUser/Documents/Repos
$
Kyle Hodgson@KyleHodgson-PC ~/winUser/Documents/Repos
$ ps
PID PPID PGID WINPID TTY UID STIME COMMAND
7872 1 7872 2340 0 1000 Jun 29 /usr/bin/svn
7752 1 6140 7828 1 1000 Jun 29 /usr/bin/svn
6192 1 5044 2192 1 1000 Jun 30 /usr/bin/svn
7292 1 7452 1796 1 1000 Jun 30 /usr/bin/svn
6236 1 7304 7468 2 1000 Jul 2 /usr/bin/svn
1564 1 5032 7144 2 1000 Jul 2 /usr/bin/svn
9072 1 3960 6276 3 1000 Jul 3 /usr/bin/svn
5876 1 5876 5876 con 1000 11:22:10 /usr/bin/rxvt
924 5876 924 10192 4 1000 11:22:10 /usr/bin/bash
7212 1 7332 5584 4 1000 13:17:54 /usr/bin/svn
9412 1 5480 8840 4 1000 15:38:16 /usr/bin/svn
S 8128 924 8128 9452 4 1000 17:38:05 /usr/bin/bash
9132 8128 8128 8172 4 1000 17:43:25 /usr/bin/svn
3512 1 3512 3512 con 1000 17:43:50 /usr/bin/rxvt
I 10200 3512 10200 6616 5 1000 17:43:51 /usr/bin/bash
9732 1 9732 9732 con 1000 17:45:55 /usr/bin/rxvt
3148 9732 3148 8976 6 1000 17:45:55 /usr/bin/bash
5856 3148 5856 876 6 1000 17:51:00 /usr/bin/vim
7736 924 7736 8036 4 1000 17:53:26 /usr/bin/ps
Kyle Hodgson@KyleHodgson-PC ~/winUser/Documents/Repos
$ jobs
[2]+ Stopped ./co2.sh
Kyle Hodgson@KyleHodgson-PC ~/winUser/Documents/Repos
$
Aqui está um strace no PID do programa svn suspenso, tem sido assim por horas. Parece que está apenas fazendo nada. Eu continuo suspeitando que alguma interrupção no servidor está causando isso; o svn tem um mecanismo de bloqueio que eu não conheço?
Kyle Hodgson@KyleHodgson-PC ~/winUser/Documents/Repos
$ strace -p 7304
**********************************************
Program name: C:\cygwin\bin\svn.exe (pid 7304, ppid 6408)
App version: 1005.25, api: 0.156
DLL version: 1005.25, api: 0.156
DLL build: 2008-06-12 19:34
OS version: Windows NT-6.0
Heap size: 402653184
Date/Time: 2009-07-06 18:20:11
**********************************************