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 оставляет желать лучшего.