Categorie
Sviluppo software Utilities

Risolvere SVN lock quando svn cleanup fallisce

Sviluppare software in modo professionale richiede un sistema di versionamento, che consenta editing collaborativo, revisioni, possibilità di gestire branch ed integrazione con un sistema di issue tracking. A ELbuild abbiamo scelto Subversion, un sistema che non ha bisogno di presentazioni in quanto costituisce un riferimento per migliaia di aziende nel mondo.

A volte, utilizzare client eterogenei sulla stessa copia locale, ad esempio quelli integrati dentro gli IDE come Netbeans, o le windows shell extension come Tortoise SVN, può provocare blocchi di una working copy locale, blocchi non risolvibili tramite il comando svn cleanup.

La manifestazione di questo problema di solito consiste in un messaggio come quello sotto:

 svn: Working copy 'trunk' locked
 svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
 ladamo@cody:~/Development/projects/MTWSN$ svn cleanup
 svn: In directory '…..'
 svn: Error processing command 'modify-wcprop' in '….'
 

Anche utilizzando il comando status di svn, il path interessato risulta chiaramente ancora in stato locked.

 ladamo@cody:~/Development/projects/MTWSN$ svn st
 ! L     .
 ! L     trunk
 ! L     trunk/....
 

Questo è dovuto all’impossibilità di cancellare i file lock presenti dentro le cartelle .svn (valido  fino alla versione 1.6 di Subversion, nelle versioni a partire dalla 1.7 la struttura dei metadati necessari alla gestione della copia locale è cambiata).

Per ovviare al problema, e rendere la working copy nuovamente utilizzabile per le operazioni di commit e update è possibile rimuovere manualmente i lock file. Questo chiaramente invaliderà eventuali operazioni di lock fatte correttamente da terzi sviluppatori che stanno agendo sullo stesso file.

Se si è certi che questo non sia il nostro caso, è possibile utilizzare il seguente comando, eseguito a partire dalla cartella principale della working copy:


find . -name lock | xargs -n1 rm -f
 

A questo punto è nuovamente possibile utilizzare la working copy, sia a partire da shell, che tramite client integrati in IDE (Netbeans, Eclipse, etc).

Di Luca Adamo

Luca Adamo si è laureato con lode in Ingegneria delle Telecomunicazioni all'Università degli studi di Firenze ed è dottorando in Ingegneria Informatica, Multimedialità e Telecomunicazioni, sempre nella stessa facoltà. Le sue competenze tecniche includono lo sviluppo software, sia orientato al web che desktop, in C/C++ e Java (J2EE, J2SE, J2ME), l'amministrazione di macchine Unix-based, la gestione di reti di telecomunicazioni, ed il design di database relazionali.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.