Как объединить ветки, если имя пакета отличается? - PullRequest
5 голосов
/ 14 декабря 2011

Мне интересно, существует ли простой способ объединения ветвей одного и того же проекта Android, где имена пакетов (и, следовательно, имена каталогов) различны. Поскольку у меня будет много филиалов, и все они должны постоянно обновляться, я ищу наилучший способ сделать эти объединения эффективно.

Дерево каталогов нашего проекта Android выглядит следующим образом

\assets
\libs\...
\res\...
\src\com\mycompany\mainproject
AndroidManifest.xml
build.xml
myproject.iml
myproject.ipr

Когда мы создаем настроенную версию для клиента, я бы изменил имя пакета, например client1app или client2app. Вам нужны разные имена пакетов, если они существуют в Android Market как разные приложения для разных клиентов. Поэтому я делаю отдельные ветви, которые содержат идентичные имена файлов и структуру каталогов, за исключением имени папки src, которое должно быть изменено в соответствии с именем пакета. Таким образом, client1app или client2app будут иметь следующую структуру каталогов:

\src\com\mycompany\client1app
\src\com\mycompany\client2app

Имена файлов в этих папках по-прежнему идентичны основному проекту. Просто имя каталога другое. (Содержимое файла в основном идентично, за исключением предложения пакета.)

Мы используем SVN для контроля версий. Поэтому, когда я выполняю вишневое слияние из mainproject в client1app, я думаю, что сначала мне придется слить файлы верхнего уровня и другие каталоги, а затем вручную выполнить слияние для src \ com \ mycompany \ mainproject с src \ com \ mycompany \ client1app. Это пять разных слияний (для верхнего уровня и четырех подкаталогов). Если бы не имена каталогов отличались, это было бы простым одношаговым объединением, и я знаю, как это сделать.

Вопрос 1: Могу ли я сообщить SVN, что \ src \ com \ mycompany \ mainproject и \ src \ com \ mycompany \ client1app при объединении содержат одинаковые имена файлов? Или каким-то другим способом слияния вишенков легко слиться между двумя ветвями?

Вопрос 2: Git лучше подходит для этого?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Проект Android Library с общим кодом поможет вам в этом больше всего. Тогда вам вообще не нужно будет ничего объединять.

1 голос
/ 15 декабря 2011

Есть ли какая-либо конфигурация, чтобы я мог сказать SVN, что \ src \ com \ mycompany \ mainproject и \ src \ com \ mycompany \ client1app содержат одинаковые имена файлов при объединении?

Нет,SVN действительно не отслеживает переименования как переименовывает , слияния переименованных и измененных файлов приводят к ошибкам "Конфликт дерева" (я полагаю / не проверено /, тот же эффект появится при переименовании dir)

Подойдет ли Git для этого лучше?

Да, Git или Mercurial или Bazaar имеют отслеживание переименования и более легкий путь слияния в результате.Лично я предпочитаю более Mercurial стиль ручного выбора, чем Git эвристический, но вкусы могут отличаться

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...