Доступ запрещен для записи в проект VS.suo при попытке объединить ветки с TFS и GIT

Я пытаюсь объединить ветку с мастером. Структура ветки:

master
    v0.43

Мои важные изменения приведены в v0.43. После совершения фиксации в v0.43 я пытаюсь объединить v0.43 в master. Я получаю следующую ошибку:

Произошла ошибка. Подробное сообщение: ошибка была вызвана libgit2. Category = Invalid (Ошибка). Не смог открыть 'C:/Пользователи/Me/Source/Repos/MyüProject XXX/MyüProject XXX/XXX XXX X.v12.suo 'для записи: доступ запрещен.

На панели "Вывод" дополнительной информации нет.

Я также получаю указанное выше сообщение об ошибке, когда просто пытаюсь перейти от ветки v0.43 к главной ветке. В основном, я застрял в ветке v0.43.

Обратите внимание, что скрытые альфа-символы "X" в имени фактического проекта. Имеются ли пробелы? Действительно ли? Если имена папок и файлов действительны, а специальный символ действителен, почему Access Denied? Или нужно ли объединить этот файл вообще?

Я понимаю, что это файл настроек пользователя Visual Studio. Я уверен, что он не включен в репозиторий GIT, хотя я только проверил с помощью:

git ls-files *.suo

Файлы не возвращаются.

Имеет ли эта проблема какое-либо отношение к конфликту в учетных данных между TFS/ GIT и настройками в Visual Studio или Windows? Кстати, я запускаю VS 2013.2 на Win 8.1.

Я не могу определить, действительно ли нужно, чтобы слияние ветвей GIT нуждалось в доступе к файлу пользовательских настроек VS (.suo), или если этот файл даже не нужно запрашивать. Если это требует доступа, что я могу попытаться сделать так? Если этот доступ вообще не нужен, почему он продолжает пытаться?

EDIT - дополнительная информация

Я новичок в TFS/ GIT. Это много, чтобы впитать. Когда я первоначально настраивал репозитории (локальные и TFS на visualstudio.com), по умолчанию .gitignore не создавался по какой-либо причине, по-видимому, в моем локальном репозитории? Я не знаю, но пока я вносил изменения в свой проект, а затем делал Commits, я видел, как все проявилось в "Исключено" и "Без следа". Будучи зеленым до GIT/TFS, я щелкнул правой кнопкой мыши и включил эти файлы Excluded/Untracked. Теперь я знаю, что это было неправильно.

Я думаю, что я оправился от вышеупомянутой проблемы. Во-первых, я применил по умолчанию .gitignore, который специально игнорирует /bin и/obj. Затем я удалил все в этих двух папках (через VS Solution Explorer). Они не возвращались, как "Включенные", "Исключенные" или "Без следа". Эта исправленная проблема.

В следующем выпуске я увидел проект .suo, включенный в ветку v0.43. Я видел, что он должен был игнорироваться в стандартном .gitignore (*.suo), поэтому мне нужно было удалить его из ветки v0.43, но это было не так просто, как удаление неиспользуемых файлов. Я сделал это из командной строки, используя:

Мне удалось увидеть, что .suo существует, используя:

git ls-files *.suo

Я удалил его с помощью

git rm --cached "*.suo"
git commit -m "Delete *.suo file from repository"

... и я был/смог подтвердить, что он был удален, выполнив ту же команду ls-files. Он больше не отображается в ветке v0.43. Я сделал фиксацию и синхронизировал с TFS. Теперь я получаю сообщение об ошибке, указанное выше - Access запрещен .suo всякий раз, когда я пытаюсь объединить v0.43, чтобы освоить или даже переключиться на мастер-ветвь.

Возможно, это главная ветвь, которую я пытаюсь переключить TO, которая пытается получить доступ к файлу .suo?

Если это так, я полностью зациклен на том, как это решить. Полагаю, что возможно, что в какой-то момент .suo получил Committed на ведущую ветку... но я не знаю, как безопасно получить доступ к мастер-ветке и удалить из нее .suo, как я сделал это в v0.43.

Я надеюсь, что все это имеет смысл.: S

Ответ 1

Сегодня у меня очень похожая проблема. Я не мог переключать ветки, потому что была эта ошибка:

Произошла ошибка. Подробное сообщение: Не удалось открыть "D:/Projects/ProjectName/Database/database.db" для записи: доступ запрещен.

Примечание: имя пути и имя файла переименованы для целей показа

То, что я сделал, было очень просто

  • Удалите файл из своего проводника файлов (не в вашем проекте)
  • Git теперь обнаружит удаление этого файла
  • Отменить удаление в представлении Changes

Я не уверен, что вызвало эту проблему, и я надеюсь, что кто-нибудь найдет этот ответ полезным.

Ответ 2

Я работаю над этим прямо сейчас и считаю, что это ответ на проблему.
Файл *.sou является частью пользовательских настроек Visual Studio. Он находится в папке ".vs", которая является "скрытой папкой" рядом с вашим решением.

Если вы используете Team Services в качестве своего репозитория Git, вам просто нужно удалить папку ".vs", и он будет помечен как "Deleted/{folder}/. Vs"

Чтобы удалить папку в Team Services: найдите проект в Team Services и наведите курсор на раскрывающееся меню "Код" и выберите "Файлы". Перейдите в папку .sln, и вы найдете папку ".vs". Удалите папку ".vs", нажав "righ-click" на ней и выбрав "Удалить"

Эта папка больше не должна отслеживаться.

Ответ 3

Я иногда получаю эту ситуацию, но для этого есть простое решение.

Просто удалите файл .suo из папки проекта

  • goo solution explorer и щелкните правой кнопкой мыши по решению и выберите второй последний параметр с именем "открыть папку в проводнике файлов".

    введите описание изображения здесь

  • После этой папки goto.vs(это скрытая папка).

  • После этой открытой папки, которая имеет имя вашего проекта.

  • Затем удалите файл .sou в этой папке.

  • Сделано.

  • Откройте свою визуальную студию, и вы увидите, что ваша проблема решена.

Спасибо,
Нишит Зинзувадия.