【问题标题】:How to merge branch with trunk using SVN in android studio如何在android studio中使用SVN将分支与主干合并
【发布时间】:2013-07-20 06:24:51
【问题描述】:

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

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

【问题讨论】:

  • 与Android Studio无关的与Android无关的问题也应标记为intellij-idea
  • 感谢 CrazyCoder,我尝试了本指南,但遇到了一个问题:尝试在我的主干工作副本中“合并”分支时(如指南中所述)我收到以下错误:错误:svn: E195016:在缺少子树的情况下不允许合并跟踪;尝试首先恢复这些项目(以及分支工作副本中所做的更改列表修订列表)。我能做什么?
  • 这个问题有什么进展吗? @Michael:你找到解决办法了吗?
  • Android Studio 的工作答案是stackoverflow.com/a/35748953/1994950

标签: svn version-control intellij-idea android-studio


【解决方案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: Merge tracking not allowed with missing subtrees:

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

【讨论】:

  • 链接好像坏了。
【解决方案2】:

5 年后...

我正在使用 Android Studio 3.1.5 和 SVN。

要将分支合并回其主干:

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

  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 窗口中,大多数时候我选择Merge All,因为这通常是目标。点击确定。

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

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

【讨论】:

  • 我没有使用 TortoiseSVN,但第 3..6 点对普通 AS 很有用!
【解决方案3】:

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

  1. 从文件->设置->插件->市场->“Subversion”下载SVN插件
  2. 如果尚未启用,请在 VCS 选项卡中启用 VCS
  3. VCS -> 浏览 VCS 存储库 -> Browns SVN 存储库
  4. 右键单击要分支的文件夹/repo,单击“分支或标记...”
  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 中的引用的情况下完成。

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

【讨论】:

    猜你喜欢
    • 2015-09-15
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    相关资源
    最近更新 更多