Android Studio - не может слиять с ветвью SVN
Мы решили следить за процессом создания нового ветки SVN для каждой новой функции, которую мы добавляем в наше мобильное приложение. Конечной целью этого является сохранение истории для каждого изменения кода (этого не происходит, когда мы вручную копируем папки проекта в SVN вместо создания и объединения ветвей).
Моя проблема в том, что пока я не могу объединить изменения из одной ветки в другую.
Я уже упоминал следующие сообщения без успеха:
Вот что я пробовал до сих пор:
У меня есть две ветки функций, как показано ниже в Tortoise SVN:
Я хочу объединить изменения в ветке Feature_A3 в ветку Feature_A2. Для этого я использую параметр Merge from
в Android Studio VCS из рабочей копии A2:
Затем он просит меня выбрать ветку для слияния (A3) или настроить другие ветки:
Я нажимаю Настроить ветки, чтобы показать вам существующую конфигурацию ветки:
Как вы можете видеть, A2 - это соединительная линия, а A3 - ветвь. Правильно ли это?
Затем он спрашивает, какую часть A3 я хочу объединить в A2. Я выбираю каталог /src
(где присутствуют соответствующие изменения):
Затем он щедро дает мне три разных способа выполнить операцию слияния:
Я выбираю третий вариант, поскольку он напрямую дает мне изменения, которые мне нужно объединить:
Я нажимаю Объединить выбранные и BAM!!! Я получаю эту ошибку каждый раз:
Нет никаких сведений о том, что такое "неразрешенные конфликты" или "пропущенные элементы". Почему я получаю эту ошибку, и что мне делать, чтобы объединить изменения в A3 в A2??? Кто-то может помочь? Все ответы будут оценены. Спасибо...
Я следил за официальной документацией Intellij IDEA ниже:
Обратите внимание:
-
В настоящее время я использую Subversion, а не Git.
-
Структура каталогов моих локальных рабочих копий не совсем
идентичный режиму SVN-репозиториев. Может ли это быть причиной ошибки?
ОТВЕТ...
Благодаря Питеру Паркеру и особенно Yoav Aharoni за их ценную обратную связь. Как правильно указал Йоав, именно так было указано расположение папки веток. Это должна быть папка, в которой есть ветки, а не папки ветвей. И, как справедливо сказал Питер, проверка "Включить объединенные ревизии" показывает объединенную историю. Теперь я могу слиться из самой IDE и просматривать объединенную историю в TortoiseSVN.
Нет командной строки! YAY!!!
Однако, последняя проблема заключается в том, что я не могу просмотреть объединенную историю в Android Studio (Intellij IDEA), как описано в Просмотр источников слияния. Кто-нибудь знает, как добиться этого в Android Studio?
Ответы
Ответ 1
Phew, не использовал SVN через некоторое время...:)
Но из того, что я помню, Branch locations
должна быть папка , содержащая папки ваших ветвей (и не каждая отдельная папка).
Вы видите, как правило, SVN repo следует стандартным соглашениям об именах и структуре папок:
trunk/
branches/
Feature_A2/
Feature_A3/
tags/
v1.01/
v1.02/
and so on...
trunk
- это основная разработка, а branches
- для функций, долгосрочных или рискованных проектов или для разных этапов (таких как QA и pre-prod).
Итак, насколько я помню, Android Studio ожидает, что вы установите папку Branch locations
в branches
. В вашем случае я думаю, что это должно быть http://192.168.0.64/svn/.../Android/Feature
.
Кроме того, ваш trunk
не является Feature_A2
- Feature_A2 - это еще одна ветка.
Хотя я не вижу контент, я думаю, что http://192.168.0.64/svn/.../Android/Development
может быть вашим сундуком.
Это не должно вас сильно беспокоить, так как вам не нужно сливаться с вашей стволом, вы также можете объединить между ветвями (например, слияние Feature_A3 в Feature_A2).
Итак, чтобы повторить:
- Хотя это и не обязательно, я рекомендую переименовать ваши папки в соответствии с соглашениями (вы можете легко сделать это, щелкнув правой кнопкой мыши в Tortoise SVN, но только ПОСЛЕ всех товарищей по команде, иначе слияние будет для них HELL).
- Попробуйте установить
Branch locations
в http://192.168.0.64/svn/.../Android/Feature
- И
trunk
до http://192.168.0.64/svn/.../Android/Development
(только если он действительно содержит источники, похожие на Feature_A2/3)
-
Подумайте о том, что вы размещаете свои релизы в папке tags
(это почти просто копирование папки с соединительной линии/ветки в теги, но для этого у вас есть команда).
Если вы это сделаете, вы также можете добавить папку tags
в Branch locations
, таким образом вы сможете сравнить свой текущий источник с любой предыдущей версией (что удобно).
P.S: "unresolved conflicts" error
также может означать, что у вас есть неразрешенные конфликты (duh:)). Конфликты обычно создаются, когда вы и товарищ по команде меняете одни и те же строки в файле (или если он удаляет файл, который вы изменили), и вы обновляетесь, чтобы получить его изменения.
SVN не позволит вам объединиться, пока вы вручную не разрешите эти конфликты/изменения.
Вы можете найти конфликты на вкладке Version Control
внизу, они будут отмечены красным цветом.
(Но я не думаю, что это была проблема в вашем случае)
Дайте мне знать, если это сработает для вас!
Ответ 2
Я не эксперт SVN, но думаю, вам нужно будет изменить структуру каталогов. Я считаю, что, хотя это всего лишь соглашение, svn использует структуру каталогов для слияния веток. Таким образом, ваша структура каталогов должна быть:
SVN
/Android
/branches
/production
/featureA2
/featureA3
/tags
/trunk
/IOS
/branches
/production
/featureA2
/featureA3
/tags
/trunk
Несмотря на то, что TortoiseSVN Repo-браузер позволит вам перемещать каталоги вокруг, в каждом каталоге хранится много метаданных и используется для обработки процесса слияния, поэтому вам, возможно, придется снова начать репо. См. руководство по лучшей практике подрывной деятельности и strategories для макета репозитория для более подробную информацию о том, как настроить ваши репозитории. Все, что сказало, я смущаюсь полагаться на интеграцию с Android Svn, чтобы делать тяжелый подъем, например слияние ветвей (хотя большинство вещей в оснащении JetBrains фантастично), обработка SVN оставляет желать лучшего.