2011-06-13 4 views
0

J'utilise VisualHG dans Visual Studio. À l'occasion en tirant (avec Fetch) Je reçois ce message d'erreur:Verrouillage du fichier .csproj en rupture de référentiel Mercurial

[Errno 13] C: \ inetpub \ Sites \ SomeProject.csproj: Le processus ne peut pas accéder au fichier car il est utilisé par un autre processus

Cela à son tour fait un gâchis de mon référentiel me obligeant à tout effacer et tirer à nouveau. Y a-t-il quelque chose que je puisse faire pour empêcher cela? Il semble que ce problème ne se produit jamais lors de l'extraction de TortoiseHG ou de la ligne de commande, uniquement lorsque le projet est ouvert dans Visual Studio et en tirant avec VisualHG.

+0

Quelle version de TortoiseHG/Mercurial, et quelle version de VisualHG? –

+0

VisualHG 1.1.4, TortoiseHG 1.1.7, Mercurial 1.7.2. C'est en fait un serveur Kiln avec les outils Kiln installés. – ericdc

+0

Ah, j'ai des soupçons maintenant. Mise à jour ma réponse –

Répondre

2

Nous voyons quelque chose de très similaire sur une machine ici avec TortoiseHg 2.0.4 et VS2008. Il semble que Visual Studio verrouille brièvement le fichier lorsqu'il détecte un événement de modification de fichier, ce qui provoque l'échec de Hg. Nous voyons cela avec TortoiseHg et le client en ligne de commande.

Alors que c'est assez frustrant quand cela arrive pendant un pull, il arrive aussi pendant un merge aussi, ce qui peut être assez catastrophique.

+0

Par curiosité, comment est-ce catastrophique? Si vous avez déjà commis, vous inversez simplement la fusion? –

1

La seule chose que vous pouvez faire est de ne pas avoir Visual Studio ouvert lorsque vous fetch. Ce n'est pas la partie pull de fetch qui en est la cause, mais la update. Visual Studio semble avoir un verrou sur votre fichier de projet et ne laissera pas Mercurial le changer quand il est ouvert.

Vous n'avez pas spécifié, cependant, si le projet était ouvert lorsque vous avez utilisé fetch via TortoiseHG ou la ligne de commande. Vous pouvez également essayer de tirer et de mettre à jour séparément plutôt que d'utiliser fetch.

Édition: Cela peut également être la version TortoiseHg. J'ai essayé de faire une mise à jour à une révision différente plus tôt avec un projet ouvert et Visual Studio 2008 voulait juste le recharger (pas d'erreur de verrouillage de fichier), mais j'utilise TortoiseHg 2.0.5. Vous pouvez toujours revenir à 1.1. * Si vous ne l'aimez pas ou que cela ne fonctionne pas.

+0

C'est un peu ce que j'ai conclu. Je me demande si cela est normal/attendu puisque je peux le reproduire sur un certain nombre d'ordinateurs. – ericdc

+0

Considérant HulkHolden voit la même chose avec TortoiseHg 2.0.4 et VS 2008, je devrais probablement mentionner que je suis sur Windows 7. OS pourrait être un facteur. –

1

Nous avons vu le même problème avec le verrouillage de fichiers avec Mercurial et VS2008, mais sans rapport avec les fichiers .csproj. Nous ne contrôlons même pas nos fichiers de projet car ils sont générés par cmake et nous contrôlons nos fichiers cmake à la place.

Ce problème m'a fait perdre une journée de travail dans un cas et causé des fusions incorrectes dans d'autres cas, car les fichiers plus anciens remplaçaient les nouveaux fichiers. J'utilisais l'extension fetch quand ces choses se produisaient.

Z:> hg --version Mercurial Distribué SCM (version 1.9.2) (voir http://mercurial.selenic.com pour plus d'informations)

Copyright (C) 2005-2011 Matt Mackall et d'autres Ceci est un logiciel libre; Voir la source pour les conditions de copie. Il n'y a AUCUNE garantie; pas même pour la QUALITÉ MARCHANDE ou l'ADÉQUATION À UN USAGE PARTICULIER.

Questions connexes