我们已决定为我们添加到移动应用程序中的每个新function创建新的SVN分支。 这背后的最终目标是保留每个代码更改的历史记录(当我们手动将项目文件夹复制到SVN而不是创建和合并分支时,这不会发生)。
我的问题是到目前为止我无法将更改从一个分支合并到另一个分支。
我已经提到以下post但没有成功:
如何在android studio中使用SVN将分支与trunk合并 。
Android Studio更新项目:Merge vs Rebase vs Branch Default 。
如何使用Android studio将分支合并到SVN 。
如何在Android Studio 2.0中将特定的svn修订从分支合并到主干 。
这是我到目前为止所尝试的:
我有两个function分支,如下面Tortoise SVN中所示 :
我想将分支Feature_A3中的更改合并到分支Feature_A2中 。 为此,我在A2工作副本中使用Android Studio的VCS中的Merge from
选项:
然后它要求我选择要从(A3)合并的分支或配置其他分支:
我点击配置分支 ,只是为了显示现有的分支配置:
如您所见,A2是Trunk ,A3是分支 。 它是否正确?
然后它问我想要合并到A2的A3部分。 我选择/src
目录(存在相关更改的位置):
然后它慷慨地给了我三种不同的方式来执行合并操作:
我选择了第三个选项,因为它直接给了我需要合并的更改:
我点击Merge Selected和BAM! 我每次都会收到此错误:
关于“未解决的冲突”或“跳过的项目”是什么,没有任何线索。 为什么我会收到此错误,如何将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中实现这一目标?
Phew,有一段时间没有使用SVN …… 🙂
但是我记得Branch locations
应该是包含分支文件夹的文件夹(而不是每个单独的分支文件夹)。
你看,通常SVN repo遵循标准的命名约定和文件夹结构:
trunk/ branches/ Feature_A2/ Feature_A3/ tags/ v1.01/ v1.02/ and so on...
trunk
是主要发展的地方, branches
是特征,长期或风险项目,或不同阶段(如质量保证和预先产品)。
所以,据我记忆,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)。
所以,回顾一下:
Branch locations
设置为http://192.168.0.64/svn/.../Android/Feature
Trunk
到http://192.168.0.64/svn/.../Android/Development
(仅当它确实包含源,类似于Feature_A2 / 3) 考虑在tags
文件夹中“标记”你的版本(它几乎只是将trunk / branch文件夹复制到标签,但你有一个命令)。
如果这样做,您还可以将tags
文件夹添加到Branch locations
,这样您就可以将当前源与任何以前的版本进行比较(这很方便)。
PS: "unresolved conflicts" error
也可能意味着你有未解决的冲突(duh :))。 当您和队友在文件中更改相同的行(或者如果他删除您更改的文件)并且您更新以获取其更改时,通常会创建冲突。
在手动解决这些冲突/更改之前,SVN不允许您合并。
您可以在底部的“ Version Control
选项卡中find冲突,它们将标记为红色。
(但我不认为这是你的问题)
如果这对您有用,请告诉我!
我不是SVN专家,但我认为您需要更改目录结构。 我相信即使它只是一个约定,svn使用目录结构来合并分支。 所以你的目录结构应该是:
SVN /Android /branches /production /featureA2 /featureA3 /tags /trunk /IOS /branches /production /featureA2 /featureA3 /tags /trunk
即使TortoiseSVN Repo-browser允许您移动目录,很多元数据也会存储在每个目录中,并用于处理合并过程,因此您可能需要再次启动存储库。 有关如何设置存储库的更多详细信息,请参阅subversion最佳实践指南和存储库布局策略 。 总而言之,我会毫不犹豫地依赖Android Studio的svn集成来完成像分支合并一样繁重的工作(尽管JetBrains工具中的大多数东西都很棒)它对SVN的处理还有很多不足之处。