Subversion в многопользовательской среде с XCode 4.0 - PullRequest
2 голосов
/ 29 июля 2011

Я уже некоторое время использую XCode с subversion, никаких проблем не возникало, когда я использовал его как одного разработчика (я использовал только 2 команды, commit и add).

Но теперь я должен поделиться кодом с другим разработчиком (который никогда не использовал какой-либо контроль версий), и интеграция / слияние кода стало кошмаром. Никаких проблем не возникает, когда мы интегрируем / объединяем файлы .h/.m, но как только дело доходит до файлов ".nib", "xcodeproj" и ".xcdatamodeld", мы действительно не знаем, что делать.

Всякий раз, когда мы пытаемся объединить "xcodeproj", проект повреждался, и объединение ".xcdatamodeld" было для нас невозможным.

Поэтому мне было интересно, может ли кто-нибудь поделиться своим опытом о том, как эффективно использовать Subversion / Git / Mercurial с XCode 4.0 в многопользовательской среде? или поделитесь ссылкой, которая может объяснить, как эффективно использовать Subversion в многопользовательской среде.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 31 августа 2011

Вы делаете это с помощью Subversion? Для 90-99% файлов в вашем хранилище хорошо работает стандартный рабочий процесс Subversion: извлечение, редактирование, принятие. Тем не менее, для некоторых типов файлов, таких как JPEGS и GIFS, просто не сливаются хорошо. В этом случае вам придется делать это так, как мы это делали в прежние времена SCCS и RCS: прежде чем вы сможете редактировать и фиксировать файл, вы должны заблокировать его.

Блокировка файла не позволяет другим редактировать тот же файл и вносить изменения, пока вы работаете с файлом. Это грубо, но это работает. В Subversion вы всегда можете заблокировать любой файл, который вы редактируете, но если у файла есть свойство svn:needs-lock, он будет извлечен только для чтения. Вы должны заблокировать файл перед редактированием, чтобы сделать его доступным для записи, и вам не разрешено фиксировать файл, если он не заблокирован.

Итак, для этих файлов установите для него свойство svn:needs-lock.

Вы можете автоматически установить это свойство для всех вновь добавленных файлов (в зависимости от суффикса), установив auto-properties в конфигурации клиента Subversion.

И, если вы действительно, действительно хотите убедиться, что на всех .nibs и xcodeproj и всех других мухах этих типов установлен svn: needs-lock, вы можете использовать мой pre-commit hook , что помешает фиксации этих файлов, если не установлено это свойство.

0 голосов
/ 31 августа 2011

У меня была такая же проблема с 2 другими разработчиками Xcode с git.К сожалению, файлы проекта XCode являются XML-файлами, файлами треков, включенными в проект, а также настройками.Я не уверен, но я думаю, что файлы .nib также являются файлами XML.Кто-то может исправить меня.

Git проделал большую работу по слиянию файла проекта Xcode, и у нас никогда не было проблем с нашими * .nib-файлами.Единственный раз, когда у нас возникла проблема, это когда мы оба добавили / удалили файлы с одинаковыми именами, или кто-то сделал много тяжелого удаления и добавления большого количества файлов.

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

Это лучшее решение, которое мы нашли, как только мы добавили или удалили файл, все остальные в команде извлекают.Не очень хорошее решение, кстати.Тем не менее, вы все равно должны часто совершать.

0 голосов
/ 28 августа 2011

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

Обычно это не имеет большого значения, например, добавление нового исходного файла в .xcodeproject или изменение выравнивания элемента в .nib. Это становится проблемой, если ваш проект огромен, или ваш кончик содержит весь интерфейс. Чтобы это работало хорошо (что на практике и происходит), вам нужно разделить свои проекты на подпроекты, если они становятся слишком большими.

...