Подтвердить что ты не робот

Resource.Designer.cs под git

Я работаю в среде, где люди используют две разные IDE (Visual Studio и Xamarin Studio) для работы с одним и тем же кодом. К сожалению, они генерируют несколько разные версии файла Resource.Designer.cs. Это автоматически сгенерированный файл, но нам он нужен в VC, или проект будет жаловаться, когда вы попытаетесь построить его после клонирования.

Проблема здесь в том, что нам нужен этот файл в vc, НО крошечные изменения очень раздражают. Если вы передаете проект с одной IDE, кто-то загружает проект в другой и перестраивает, вы видите изменение в этом файле. Затем, если вы попытаетесь переключить ветки, Git может отказаться из-за конфликта слиянием. Аналогично, если вы попытаетесь объединить две ветки, вы почти наверняка увидите конфликт слияния в заголовке этого файла.

Такая же проблема возникает, если два человека строятся с использованием той же IDE, но несколько разных версий среды выполнения. Я сейчас смотрю на пример со следующим изменением в Git:

-  // Runtime Version: 4.0.30319.18444
+  // Runtime Version: 4.0.30319.34011

Одно исправление, которое решает проблему, - это только для этого файла, чтобы Git всегда выбирал "локальную" версию комментариев и игнорировал все изменения комментариев. Но я не знаю, есть ли способ сделать это. Если нет, есть ли другой способ избежать постоянных проблем с небольшими изменениями в этом файле?

4b9b3361

Ответ 1

Наши разработчики обращаются к этому, передавая Resource.Designer.cs на наш Git репо. После этого каждый разработчик может запустить git update-index --assume-unchanged Resource.Designer.cs, чтобы сделать Git игнорировать обновления для этого файла.

После обновления индекса изменения, внесенные в файл Resource.Designer, не будут отображаться в разделе "Изменения не поставлены для фиксации" при выполнении git status.

Если требуется фиксация этого файла, просто выполните git update-index --no-assume-unchanged Resource.Designer.cs и Git снова начните отслеживать изменения в этом файле.

Ответ 2

Существует несколько способов решения этой проблемы в git. Смотрите: https://gist.github.com/canton7/1423106. Ссылка связана с конфигурационными файлами, но вы можете применить ее к своей ситуации по мере необходимости.

Я думаю, что самый простой способ решить это - зафиксировать файл как Resource.Designer.cs.in, а затем после клонирования вручную скопировать его в Resource.Designer.cs. Также добавьте Resource.Designer.cs в ваш файл .gitignore.