Quelle est la meilleure façon de voir quels fichiers sont verrouillés dans Subversion?

J’ai finalement obtenu que mon groupe passe de SourceSafe à Subversion. Malheureusement, mon responsable souhaite toujours utiliser des verrous exclusifs sur chaque fichier. J’ai donc défini la propriété svn: needs-lock sur chaque fichier et créé un hook de pré-validation pour vérifier que la propriété rest définie.

Nous exécutons Subversion sur un serveur Linux. La plupart d’entre nous utilisent des machines Windows et quelques-uns utilisent des Mac. Nous utilisons divers clients SVN (TortoiseSVN, SmartSVN, Subclipse, etc.).

Ce dont nous avons besoin maintenant, c’est une méthode simple et efficace pour voir tous les fichiers actuellement verrouillés dans l’ensemble du référentiel (et qui les a verrouillés). J’ai fouillé un peu dans Tortoise et Subclipse, mais je n’ai pas trouvé ce que je cherchais. Nos projets ont de nombreux sous-répertoires de plusieurs niveaux, il serait donc trop long d’examiner chaque répertoire.

Ce que je voudrais, c’est un seul rapport que je peux lancer et qui répertorie tout ce qui est actuellement verrouillé et qui l’a verrouillé. Quelle est la meilleure façon d’obtenir ce type d’information?

Ce que vous recherchez est la commande svnadmin lslocks .

J’ai cette configuration au travail car nous gardons des documents Word dans notre repository Subversion (avec svn:needs-lock ). J’ai un job de cron que je vérifie tous les jours, vérifie la liste des verrous et envoie par e-mail un rapport de tous les verrous de plus de 7 jours à toute l’équipe. De cette façon, nous pouvons dire qui est relâché et assis sur une copie verrouillée d’un document depuis longtemps.

Ce n’est peut-être pas la réponse que vous recherchez, mais vous devriez essayer de convaincre le responsable que les verrous ne sont pas la meilleure pratique de développement. Il y a beaucoup de choses qui ont été écrites sur ce sujet, alors je ne vais pas tout répéter ici.

Lorsque vous passez d’un environnement de locking à un environnement sans verrous de contrôle forcés, vous pensez que cela vous mènera au chaos, mais ce n’est pas le cas. SVN est bon pour fusionner les changements lorsque deux personnes travaillent sur le même fichier, et même si vous vous retrouvez avec des conflits, ce n’est pas si grave de les corriger.

Bien mieux que d’attendre que le gars qui est allé déjeuner avec un fichier critique vérifié, ou pire encore, soit parti en vacances.

Pour voir quels verrous vous et les autres maintenez, vous pouvez utiliser TortoiseSVN → Vérifier les modifications …. Les jetons de locking détenus localement apparaissent immédiatement. Pour vérifier si des serrures sont détenues par d’autres personnes (et pour vérifier si l’une de vos serrures est cassée ou volée), vous devez cliquer sur Vérifier le référentiel.

Vous pouvez découvrir des verrous à partir d’une extraction locale en utilisant svn status --show-updates ce qui placera un O avant tous les fichiers verrouillés sur le serveur.

par exemple

 $ svn status --show-updates O 279532 LockedFile ? UncommittedFile M 279532 ModifiedFile 

voir le svnbook pour plus de détails