Android Studio - 无法从SVN分支合并

Y.S*_*Y.S 17 svn android intellij-idea branching-and-merging android-studio

我们已决定为我们添加到移动应用程序中的每个新功能创建新的SVN分支.这背后的最终目标是保留每个代码更改的历史记录(当我们手动将项目文件夹复制到SVN而不是创建和合并分支时,这不会发生).

我的问题是,到目前为止,我无法将更改从一个分支合并到另一个分支.

我已经提到以下帖子但没有成功:

这是我到目前为止所尝试的:

我有两个功能分支,如下面Tortoise SVN中所示:

在此输入图像描述

我想将分支Feature_A3中的更改合并到分支Feature_A2中.为此,我Merge from在A2工作副本中使用Android Studio的VCS中的选项:

在此输入图像描述

然后它要求我选择要从(A3)合并的分支或配置其他分支:

在此输入图像描述

我点击配置分支,只是为了显示现有的分支配置:

在此输入图像描述

如您所见,A2是Trunk,A3是分支.它是否正确?

然后它问我想要合并到A2的A3部分.我选择/src目录(存在相关更改的位置):

在此输入图像描述

然后它慷慨地给了我三种不同的方式来执行合并操作:

在此输入图像描述

我选择了第三个选项,因为它直接给了我需要合并的更改:

在此输入图像描述

我点击Merge SelectedBAM!我每次都会收到此错误:

在此输入图像描述

关于"未解决的冲突"或"跳过的项目"是什么,没有任何线索.为什么我会收到此错误,如何将A3中的更改合并到A2中?有人可以帮忙吗?所有答案将不胜感激.谢谢 ...

我一直在关注以下官方的Intellij IDEA文档:

请注意:

  • 目前我使用的是Subversion,而不是Git.

  • 我本地工作副本的目录结构与SVN repos的目录结构不完全相同.这可能是错误的原因吗?

答案 ...

感谢Peter Parker,尤其是Yoav Aharoni的宝贵意见.正如Yoav正确指出的那样,确实是指定分支位置文件夹的方式.它需要是包含分支的文件夹,而不是分支文件夹本身:正如Peter正确地说的那样,选中"Include merged revisions"会显示合并的历史记录.我现在能够从IDE本身合并,并在TortoiseSVN中查看合并的历史记录.没有命令行!好极了!!!

但是,最后一个问题是我无法在Android Studio(Intellij IDEA)中查看合并历史记录,如查看合并源中所述.有谁知道如何在Android Studio中实现这一目标?

Yoa*_*oni 8

Phew,有一段时间没有使用SVN ...... :)

但是我记得Branch locations应该是包含分支文件夹的文件夹(而不是每个单独的分支文件夹).

您看,通常SVN repo遵循标准命名约定和文件夹结构:

trunk/
branches/
  Feature_A2/
  Feature_A3/
tags/
  v1.01/
  v1.02/

and so on...
Run Code Online (Sandbox Code Playgroud)

trunk是主要发展的地方,branches是特征,长期或风险项目,或不同阶段(如质量保证和预产品).

所以,据我记得,Android Studio希望你设置Branch locationsbranches文件夹.在你的情况下,我认为它应该是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).

所以,回顾一下:

  1. 虽然不是强制性的,但我建议您重命名文件夹以符合约定(您可以通过右键单击Tortoise SVN轻松完成,但只有在所有队友提交之后,否则合并将成为他们的HELL).
  2. 尝试设置Branch locationshttp://192.168.0.64/svn/.../Android/Feature
  3. Trunkhttp://192.168.0.64/svn/.../Android/Development(只有当它确实包含源码,类似Feature_A2/3)
  4. 考虑在tags文件夹中"标记"您的版本(它几乎只是将trunk/branch文件夹复制到标记,但您有一个命令).

    如果你这样做,你也可以添加tags文件夹Branch locations,这样你就可以将当前的源与任何以前的版本进行比较(这很方便).

PS:"unresolved conflicts" error也可能意味着你有未解决的冲突(duh :)).当您和队友改变文件中的相同行(或者如果他删除您更改的文件)并且您更新以获得他的更改时,通常会创建冲突.

在手动解决这些冲突/更改之前,SVN不允许您合并.

您可以Version Control在底部的标签中找到冲突,它们将标记为红色.
(但我认为这不是你的问题)


如果这对您有用,请告诉我!