Недавно мы перешли от TFS к Mercurial для нашей небольшой команды. Основной проект, над которым работают 3 человека, - это приложение Windows Forms на С#. Каждый раз, когда вы используете конструктор, даже для простых изменений, он много перестраивает и меняет файл .Designer. Если два человека работают над этим файлом, даже делая простые изменения, слияние является абсолютным кошмаром. Есть ли простой способ решить эту проблему? В TFS мы отключили параллельные изменения, поэтому у нас не было этой проблемы.
Есть ли более простой способ объединить файлы Windows Forms.Designer?
Ответ 1
Слияния таких файлов всегда болезненны... Вот почему некоторые "блокирующие" расширения для Mercurial существуют, поэтому вы можете иметь тот же рабочий процесс, что и с TFS, если это необходимо.
Например, вы можете использовать Lock extension, написанный Мартином Гейслером, чтобы заблокировать файлы .Designer до следующего push
, делая это избегайте одновременной модификации, тем самым избегая слияния.
Ответ 2
Проблема заключается в том, что каждый раз, когда генератор кода генерирует код в другом порядке!!! что делает слияние боли.
Разработчик WinForm (.NET), дизайнер Swing (Java) полагается на движок кода.
ASP.NET designer.cs содержит только поле поддержки, которое менее подвержено риску.
Поле поддержки WPF генерируется в obj/*. g.cs, которое не требуется для контроля источника, поэтому проблема слияния не возникает.
Ответ 3
Вот что я делаю:
- Скопируйте/Используйте .Desinger.cs из основной/развивающей ветки и откройте проект в VS
- Скопируйте весь проект (все файлы с .git) и оформите ветку your_feature и откройте проект в VS
- теперь на этом этапе у вас должно быть 2 экземпляра VS (один на главной ветки и один на your_feature)
- Копирование элементов управления (Ctrl + C) (в режиме/режиме конструктора) с одного VS на другой
не идеальное решение, но очень помогает