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