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

Раскадровки и конфликты SVN

Это проблема, с которой нам никогда не приходилось сталкиваться до тех пор, пока не были представлены раскадровки. Всякий раз, когда в пользовательском интерфейсе была вероятность конфликта, мы просто следили за тем, чтобы ни один разработчик не работал над одним и тем же файлом XIB одновременно. Причина, по которой мы воздерживались от разрешения конфликтов XIB, заключается в том, что могут быть проблематичные побочные эффекты (XIB представлен в формате XML, поэтому не существует "хорошего" способа объединить 2 версии).

Теперь мы сталкиваемся с этой проблемой, потому что все наши элементы пользовательского интерфейса находятся в одном файле .storyboard - предотвращение одновременной работы над любыми 2 элементами пользовательского интерфейса в проекте затрудняет работу параллельно.

Любые предложения относительно того, как решить эту проблему? Заранее благодарим за ваши усилия.

4b9b3361

Ответ 1

Разбейте свою раскадровку на несколько раскадровки.

В вашем приложении нет причин содержать только одну раскадровку. Разбейте свою раскадровку на модульные раскадровки. Вы можете использовать +storyboardWithName:bundle: для загрузки модулей раскадровки.

Смотрите: Лучшие рекомендации UIStoryboard для других хороших идей раскадровки.


Обновление

Важно отметить, что это не полное решение проблемы. Точно так же вы не можете полностью избежать возможности конфликтов слияния в исходном коде, разлагая гигантский класс на более мелкие модули, вы также не можете избежать конфликтов слияния сценариев. Идея состоит в том, чтобы уменьшить вероятность, пока она не станет управляемой проблемой.

В большой кодовой базе всегда будут сложные ситуации слияния. Правильно разложенное решение уменьшит количество конфликтов и минимизирует необходимое количество блокировок.

Ответ 2

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

Если вы щелкните правой кнопкой мыши свой файл раскадровки в Xcode и перейдите к "Open As", вы увидите, что есть несколько опций - по умолчанию "Interface Builder - iOS Storyboard". Однако вы также можете выбрать "исходный код".

Если вы открываете раскадровку в режиме исходного кода, возможно внести изменения (хотя это и есть боль). Но вы можете добавить код из других раскадровки и внести изменения самостоятельно - я не использовал SVN, но с репозиторием git я могу просматривать другие версии раскадровки и копировать код.

Я бы не сказал, что это отличное решение. У меня были некоторые проблемы с случайным сбоем Xcode, когда я пытаюсь снова открыть раскадровку в IB. Иногда вставлять код в работу, иногда это не так. Несколько раз мне приходилось менять значение тега <scene>. По моему опыту это довольно удачное или пропущенное, но если вы создадите резервные копии своих файлов, прежде чем пытаться что-либо, это может сработать.

Если это сработает, дайте мне знать - мне интересно узнать, можно ли найти решение этой проблемы.

Ответ 3

Это о слиянии XML файлов?

К счастью, SVN позволяет вам изменить инструмент слияния, который вы используете для выполнения слияния для разных типов файлов. (например, учебник по использованию P4Merge)

Итак, теперь вам просто нужно найти отличный инструмент для слияния XML файлов (удачи:))

есть WinMerge (с предварительным фильтром DisplayXMLFiles) или diffxml, или XMLMerger или java xmlmerge

Ответ 4

Вы также можете взглянуть на современный инструмент управления исходным кодом. Git, например, имеет интеллектуальные функции слияния. См. эту ссылку, почему вы должны рассмотреть возможность обновления рабочего процесса.