Заблокированный файл .csproj, нарушающий работу Mercurial. - PullRequest
0 голосов
/ 13 июня 2011

Я использую VisualHG внутри Visual Studio. Иногда при извлечении (с помощью Fetch) я получаю это сообщение об ошибке:

[Errno 13] C: \ inetpub \ Websites \ SomeProject.csproj: процесс не может получить доступ к файлу, поскольку он используется другим процессом

Это, в свою очередь, запутывает мой репозиторий, заставляя меня удалить все и снова потянуть. Что я могу сделать, чтобы предотвратить это? Кажется, что эта проблема никогда не возникает при извлечении из TortoiseHG или из командной строки, только когда проект открывается в Visual Studio и извлекается с помощью VisualHG.

Ответы [ 3 ]

2 голосов
/ 15 июня 2011

Мы видим нечто очень похожее на машине с TortoiseHg 2.0.4 и VS2008.Похоже, Visual Studio на короткое время блокирует файл при обнаружении события изменения файла, и это приводит к сбою Hg.Мы наблюдаем это как с TortoiseHg, так и с клиентом командной строки.

Хотя это довольно неприятно, когда это происходит во время pull, это также происходит и во время merge, что может быть довольно катастрофическим.

1 голос
/ 17 октября 2011

Мы видели ту же проблему с блокировкой файлов в Mercurial и VS2008, но не связанную с файлами .csproj.Мы даже не контролируем версии файлов нашего проекта, поскольку они генерируются cmake, и вместо этого мы контролируем версии наших файлов cmake.

Эта проблема привела к тому, что я потерял трудозатраты в одном случае и вызвал неправильные слиянияв других случаях старые файлы перезаписывали более новые.

Я использовал расширение выборки, когда это происходило.

Z:> hg --version Mercurial Distributed SCM (версия1.9.2) (см. http://mercurial.selenic.com для получения дополнительной информации)

Copyright (C) 2005-2011 Matt Mackall и другие Это бесплатное программное обеспечение;см. источник для условий копирования.Там нет гарантии;даже не для ИЗДЕЛИИ или ФИТНЕСА ДЛЯ ОСОБЕННОЙ ЦЕЛИ.

1 голос
/ 13 июня 2011

Может быть, единственное, что вы можете сделать, это не открывать Visual Studio, когда вы fetch. Причиной этого является не pull часть fetch, а update. Кажется, Visual Studio заблокировала файл вашего проекта и не позволит Mercurial изменить его, пока он открыт.

Однако вы не указали, был ли проект открыт, когда вы использовали fetch через TortoiseHG или командную строку. Вы также можете попробовать просто вытащить и обновить отдельно, а не использовать fetch.

Редактировать : Это также может быть версия TortoiseHg. Я пытался сделать обновление другой версии ранее с открытым проектом, и Visual Studio 2008 просто хотел перезагрузить его (без ошибки блокировки файла), но я использую TortoiseHg 2.0.5. Вы всегда можете вернуться к 1.1. *, Если вам это не нравится или не работает.

...