9

我想在分支中提交我的更改,并使用 Android Studio 中的内置 svn 工具将这些更改添加到主干版本。我该怎么做?

我应该期待这个内置工具的这种功能,还是应该使用像 TurtoiseSVN 这样的外部工具?

4

3 回答 3

1

5年后...

我正在使用 Android Studio 3.1.5 和 SVN。

要将分支合并回其主干:

  1. 切换到后备箱。在 TortoiseSVN 中,很容易切换。右键单击您的工作副本-> TortoiseSVN -> Switch
  2. 您应该会看到如下所示的对话窗口。在“到路径”字段中,确保它指向您的主干文件夹。在Revision字段中,我总是选择HEAD 修订,因此我将所有内容从分支转移到主干。单击确定。

switch_dialog

  1. 在 Android Studio (AS) 中,确保开关正常工作。要验证,请转到 AS 底部的任务栏。单击Version Control -> Subversion Working Copies Information -> Refresh。查看URL字段是否指向您的主干。

任务栏列表

  1. 开始合并。单击Version Control -> Subversion Working Copies Information -> Merge From...。在小弹出窗口中,选择要合并到主干的分支。它还可能会询问您要合并所述分支中的哪个目录或文件。做出适当的选择。
  2. Select Merge Variant窗口中,大多数时候我选择全部合并,因为这通常是目标。单击确定。

合并选项

  1. 最后提交新合并的更改。

注意:我更喜欢先将主干合并到我的分支。解决分支中的冲突,最后合并回主干。

于 2018-10-22T07:19:57.477 回答
0

如何在AS中直接创建SVN分支

  1. 从 File -> Settings -> plugins -> Marketplace -> "Subversion" 下载 SVN 插件
  2. 如果尚未启用,请在 VCS 选项卡中启用 VCS
  3. VCS -> 浏览 VCS 存储库 -> Browns SVN 存储库
  4. 右键单击要分支的文件夹/存储库,单击“分支或标记...”
  5. 选择父文件夹,以便 repos 成为兄弟姐妹(或如你所愿)
  6. 以 -your-feature 结尾(或根据需要)命名文件夹
  7. 签出您新创建的分支
  8. 运行以检查分支是否正常工作(在 linux/ios 上可能需要“chmod a+rx android/gradlew”)
  9. 您的提交现在将只针对当前分支

如何将 SVN 分支合并回主干/主仓库

  1. 返回到您的主干/主存储库(或者如果您还没有的话,请检查一下)
  2. VCS ->“集成项目...”
  3. 将“Source 2”更改为要合并的分支
  4. 解决冲突(如果有)
  5. 提交对主干的更改

SVN切换分支

  • 可以使用 VCS -> “更新项目...” -> 更新/切换到另一个分支来完成
  • 或者更好的是只有一个主/主干项目和一个分支项目

参考

我个人的做法与官方文档略有不同。但基本上创建一个分支只是复制我理解的文件夹。另一方面,合并似乎有点复杂,因为每个变化的参考都必须存在。例如删除或移动文件夹必须是提交的更改,它不能在没有 SVN 中的引用的情况下完成。

他们的方法也是保持主文件夹的当前名称,但使一些子文件夹名称表明它是一个分支。

于 2020-02-18T10:48:51.380 回答
-1

正如 IntelliJ Doc 的这个链接上所说(Android Studio 和 IntelliJ IDEA 的 Android 插件是由相同的代码构建的)

要将分支更改合并回主干,您应该打开主干工作副本并执行与从主干更改到分支时相同的步骤(在弹出窗口中选择源分支)。此外,您将被警告:

在此处输入图像描述

合并信息收集规则 为了能够将更改合并回主干(使用 Subversion “--reintegrate”),您不应该在工作副本根目录的其他目标上进行任何合并,即您不应该有任何 svn:mergeinfo在工作副本子树中设置的属性。这就是为什么在检查哪些修订被合并时,默认情况下,IntelliJ IDEA 不会检查子树中的合并信息。但是如果你不知何故需要检查子树,你应该去“设置| 版本控制 | VCS | Subversion”并设置“在准备合并时检查目标子树中的 svn:mergeinfo”。

更多信息和完整文档位于:https ://devnet.jetbrains.com/docs/DOC-1203

编辑:

回答错误:svn:E195016:缺少子树时不允许合并跟踪:

当有人在不使用 Subversion 命令的情况下删除某些内容时,就会出现该错误。如果您要在该工作副本上运行 svn status,Subversion 抱怨的相同路径应该!在输出的第一列中显示为 a。尝试使用svn rm而不是操作系统命令。

于 2015-11-11T18:59:08.737 回答