Git / Subversion 中的功能向后移植

2023-12-31

使用以下任一方法实现以下工作流程的首选方法是什么Git or Subversion (我更感兴趣的是Git版本,但比较肯定会有用):

  • 假设我们最近发布了该产品的主要版本,并且有一个名为 polisihin 的特定分支release-2.0.x.

    然后开发继续进行并几个功能分支被合并到master/trunk(它们稍后将成为即将推出的一部分release-2.1.x).

  • 现在,在某个时候另一个功能(即,critical-feature)被开发并合并回master/trunk。我们意识到这个功能非常重要,我们必须将其向后移植到release-2.0.x.


这是所描述案例的一个小伪图解。请注意,顶部的所有内容都会带来树之间的差异release-2.0.x和当前的master/trunk and 导致合并问题(否则我可以简单地合并critical-feature并避免写这个问题:)

    (features added since 2.0.x, which
     should not be backported)
              ^   ^    ^
              |   |    |    (code refactorings done
              |   |    |     in master/trunk)
              \   |    /     (*) (*) (*)          
-------------------------------------------------------> master/trunk
      |                                          |
      |                                          |
      |                                          |
      \ release-2.0.x                            \ critical-feature
                                                   (should be backported)

问题:

  • 从以下位置执行功能向后移植的最佳方法是什么?VCS看法?

  • 这应该作为一个简单的merge对应的critical-feature具有解决冲突的分支?

  • 或者应该这样做cherry-pick提交的,它合并了critical-feature into master/trunk什么时候完成?或者甚至可以作为一组cherry-picks对于中的每个提交critical-feature branch?

  • 您能为冲突解决程序提供一些建议吗?如果当前之间的差异应该怎么办release-2.0.x and master/trunk如此巨大,以至于“天真的”向后移植会由于代码重构和缺少功能或功能而导致大量冲突API,这是在之后添加的release-2.0.x?

  • Does Git or Subversion除了标准合并或挑选方法之外,还有其他具体内容可以为此例程提供吗?我猜可能是rebasing当冲突数量巨大时,这不会有帮助,但是,显然,我可能是错的。


向后移植的所有想法features对我来说看起来很糟糕。仅应向后移植关键且非破坏性的更改。对于功能和改进,您必须创建新分支并开始稳定期。

查看 Apache Subversion 项目本身使用的发布流程:https://subversion.apache.org/docs/community-guide/releasing.html#release-stabilization https://subversion.apache.org/docs/community-guide/releasing.html#release-stabilization

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git / Subversion 中的功能向后移植 的相关文章

  • svn:'REPO URL 的选项:授权失败:

    我使用两个命令 1 svn ls 带有用户名和密码 2 svn mkdir 带有用户名和密码 svn ls 工作没有任何问题 但 svn mkdir 失败并显示以下错误消息 svn REPO URL 的选项 授权失败 无法向服务器进行身份验
  • 仅将单个文件放入 git 子模块/存储库中

    我在 git 源代码存储库中有一个特定文件 其中包含生产设置 密码 我想限制此文件 以便只有制作团队的成员才能看到它 但是 我想控制它的变化 我考虑过在 git 中使用子模块 然后限制对新存储库的访问 然而 git 似乎需要子模块的整个子目
  • 我可以获取两次提交之间 git 子文件夹中已更改文件的列表吗?

    我有一个包含许多文件夹的 git 存储库 我需要找出在两次提交之间这些文件夹之一中的哪些文件发生了更改 有没有一个好的方法来做到这一点 我想你可以坚持走最后的路git diff git diff HEAD HEAD special fold
  • 如何将 Android 应用程序添加到已在 iOS 应用程序中使用的现有 Firebase 项目?

    我一直在我的 iOS 应用程序中使用 Firebase 项目 我现在想开始为 Android 应用程序使用相同的 Firebase 项目及其所有数据库和存储 在您的应用程序下Overview菜单 你应该按添加另一个应用程序并选择Androi
  • 如何列出未推送的 Git 提交(本地但不在源上)

    如何查看我所做的 尚未推送到远程存储库的任何本地提交 偶尔 git status将打印出我的分支是X提交之前origin master 但不总是 这是我安装的 Git 的错误 还是我遗漏了什么 这给出了 origin master 和 HE
  • 名称和电子邮件在 Git 的每用户配置文件中设置,但 Git 仍使用默认生成的名称和电子邮件

    标题已经说了 但我会更彻底地解释一下 我已使用以下命令按照建议配置了用户名和电子邮件 git config global user name git config global user email 我可以通过执行以下操作来验证这是设置的g
  • git 的精简包是什么?

    我还没有找到太多关于瘦包的信息 并且手册页的信息对此相当含糊 我知道这与连接速度慢有关 但是什么是 连接速度慢 它的优点和缺点是什么 什么时候应该使用它 什么时候不应该使用它 根据记录 手册页 index pack https www gi
  • Git 与人工制品

    刚刚完成 NPM 和 Bower 的 Artifactory 设置 它非常容易使用 您只需更改存储库 URL 一切就正常了 查看有关如何让 Artifactory 与 github vcs 一起使用的文档 它看起来过于复杂 我想知道是否有人
  • Azure git 部署 - 第二个程序集中缺少引用

    我正在尝试将 Bitbucket 部署设置到 Azure 网站 我成功链接了 Bitbucket 和 Azure 但是当我推送到 Bitbucket 时 我在 Azure 站点上收到以下错误 如果我单击 查看日志 它会显示以下编译错误 D
  • 如何与其他用户共享 bitbucket 存储库?

    我正在使用 Bit 存储桶 并且我想与一位朋友分享我的存储库 我用的是免费的个人账户 似乎有一个选项可以在位桶中创建团队 但它说它将把我的帐户从个人帐户转换为团队帐户 我不要那个 我如何授予其他用户访问此存储库的权限 有一个共享链接选项 如
  • 在 git 中记录前 10 个

    两个问题 如何从头到尾显示 git 中的前 10 个提交 无分行 如何指定提交索引并记录它 显示第二个或第三个 我知道 git 使用父级来链接提交 很容易从头到尾记录提交 喜欢 git log HEAD 10 但我需要从头到尾查询 可以吗
  • 合并来自并行 Subversion 存储库的更新代码

    我想知道人们在将实时 持续更新的 SVN 存储库与离线存储库 更新频率较低 合并时通常会采取哪些步骤 以我的场景为例 不久前我下载了BugTracker NET系统 当时它的版本是3 2 3 随后我对我们业务的代码进行了一些增强 我们使用
  • git 从存储中删除文件

    我有一个藏匿处 里面有一堆文件 但由于文件冲突 我无法应用我的存储 我已经在我的存储中发现了有问题的文件 我想将其删除 如何从存储中删除单个文件而不破坏整个文件 存储是一次提交 或者实际上是两次甚至有时是三次提交 并且您无法更改提交 那么
  • 如何从父克隆中过去的提交中获取 git 子模块的关联提交 ID?

    有没有一种方法 除了实际检查父提交之外 还可以根据父克隆中的提交 ID 确定子模块的 SHA 1 提交 ID 我知道我能找到现在与 SHA 1 关联git submodule 这是一个例子 我有一个带有单个子模块的克隆foo上个月情况发生了
  • 通过 SVN 从 Jenkins 更新工作区时出现间歇性“SVNException:svn:E175002:连接重置”

    我有 Jenkins 2 138 3 在虚拟机上运行 在同一网络上的另一台 PC 上 我有一个 Visual SVN 服务器 3 9 2 结帐间歇性地 可能是 25 的时间 失败 并出现以下错误 ERROR Failed to check
  • 将两个单独的功能分支合并到同一个主分支中[重复]

    这个问题已经存在了 我们正在努力发布 2 个远程功能分支 F2 和 F3 我们如何处理F3来创建发布 提案1 简单地合并F3进入开发 提案2 第一次合并开发进入F3 包括F2的变化 然后合并进入发展 这两种方法之间有什么实际差异 是否有客观
  • 从预提交挂钩中排除某些文件类型

    我想要一个预提交 git 钩子来检查 如果可能的话 自动删除 尾随空格 In 让 git 在提交之前自动删除尾随空格 https stackoverflow com questions 591923 make git automatical
  • 避免使用 git 和 make 重新编译

    我在 git 中有两个开发分支 并且经常需要在两者之间进行更改 然而 真正令人沮丧的是 每次我在 git 中更改分支时 整个项目都会重新构建 因为某些文件的文件系统时间戳会发生变化 Ofc makefiles 配置为将项目构建到两个不同的构
  • 更改 Windows 安装的 Git Bash 中 ~ 目录的位置

    我什至不确定我问的是正确的问题 让我解释一下我的情况 这是关于 Windows 7 上的 Git 我的公司在网络驱动器上设置 Windows 用户目录 而不是在本地硬盘驱动器上 用于备份和超出本问题范围的其他目的 我无法改变这项政策 然而
  • 将代码从没有权限的存储库推送到私有存储库?

    我有一个来自外部存储库 我们称之为 ExRepo 的文件夹 我没有任何推送权限 我有一个名为 MyOwnRepo 的个人存储库 如何获取 ExRepo 并将其合并到 MyOwnRepo 中 我已经尝试过这个 C Users

随机推荐