O que causa o SVN “O caminho da cópia de trabalho está bloqueado”?

3

Eu escrevi um aplicativo de console que usa o SharpSVN para atualizar 3 pastas no meu repositório. Queria converter isso em um script em lote para remover a dependência do SharpSVN.

Caiu com isso:

CD C:\Program Files\TortoiseSVN\bin\
START TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\AMC\Core" /closeonend:0
START TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\AMC\Modules" /closeonend:0
START TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\MW" /closeonend:0

Eu encontrei isso como uma resposta a outra pergunta sobre SO . Quando eu o executo, recebo 3 janelas da Tartaruga.

Um diz:

Error: Working copy 'C:\AMG\trunk\AMG_AccountManager\AMC' locked.
Error: 'C:\AMG\trunk\AMG_AccountManager\AMC' is already locked.

Um segundo diz:

Error: Working copy 'C:\AMG\trunk\AMG_AccountManager' locked.
Error: 'C:\AMG\trunk\AMG_AccountManager\AMC' is already locked.

E o terceiro atualiza com sucesso a pasta Modules. Alguém sabe o que está causando o bloqueio dos dois primeiros?

    
por sab669 16.12.2013 / 16:13

2 respostas

3

Encontrei a resposta para o meu problema. Basicamente, Tortoise coloca um bloqueio em uma pasta toda vez que ele tenta fazer alguma coisa. Meu script estava apenas lançando 3 atualizadores sem esperar que o anterior terminasse.

O comando START tem um sinal /wait que aguarda o que quer que seja executado para sair, por isso modifiquei meu script da seguinte forma:

CD C:\Program Files\TortoiseSVN\bin\
START /wait TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\AMC\Core" /closeonend:1
START /wait TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\AMC\Modules" /closeonend:1
START /wait TortoiseProc.exe /command:update /path:"C:\AMG\trunk\AMG_AccountManager\MW" /closeonend:1

Infelizmente, tenho que fechar a janela de atualização que o Tortoise abre para que o script seja totalmente automatizado. Isso significa que não posso observar quais arquivos foram modificados ou adicionados.

    
por 16.12.2013 / 17:50
1

O TortoiseSVN, quando usado manualmente, pode atualizar vários diretórios com um único comando, simplesmente selecionando várias pastas antes de executar o comando Atualizar. A linha de comando svn update também aceita vários destinos. Então, eu espero que a linha de comando do TortoiseSVN também aceite vários caminhos. link mostra um exemplo para enviar vários arquivos, essa sintaxe também trabalho para atualizar? Eu não tenho o TortoiseSVN no computador em que estou no momento.

    
por 19.12.2013 / 23:57