代码之家  ›  专栏  ›  技术社区  ›  JD Frias flyx

将GIT-SVN debug->feature分支传输到trunk的最佳方法是什么?

  •  10
  • JD Frias flyx  · 技术社区  · 16 年前

    我有一个主干设置,我所有的生产代码都放在那里。

    然后我有一个 debug trunk )我添加了调试代码,比如日志记录、var转储等。。。这不应该在生产中。这个分支很少改变。

    最后我有一个 feature 分支(父级为 调试

    我只想知道有没有更简单的方法 树干 . 这就是我目前所做的:

    1. 将所有更改提交到我的 特征 分支
    2. 切换到 master git svn rebase 其他开发人员的更改。
    3. rebase 我的 特征 分支到 主人 git rebase --onto master debug feature )
    4. merge 功能到
    5. git svn dcommit 对其他开发人员的更改
    6. 重新基准 主人 ( git rebase master debug
    7. 删除 特征
    8. 创建新的 特征 调试
    6 回复  |  直到 16 年前
        1
  •  1
  •   Å imon Tóth    16 年前

    我想说你的工作流程是非常优化的。我认为樱桃采摘是一种过度杀伤力(但这取决于提交的数量)。

    顺便说一句,为什么不写一个简单的脚本,如果这是你一直在做的事情?Git是一个有点低级的工具,所以编写额外的脚本来帮助处理重复的任务是一个非常好的主意。

        2
  •  1
  •   neves    16 年前

    好吧,我会说一个异端邪说,每个人都会投票给我,但是我们走吧。如果您直接使用svn,您的工作流程将简单得多。

    --reintegrate feature of subversion 很容易保持主干和调试分支同步。要合并功能分支,您需要合并主干中对功能分支的所有修改。命令类似于:

    cd debug_branch_workcopy
    svn merge --reintegrate http://server/project/trunk .
    svn commit
    

    要将要素分支合并到主干,请执行以下操作:

    svn log --stop-on-copy http://server/project/branches/feature123 #see the last revision listed
    cd trunk_workcopy
    svn merge -r{revision_above}:HEAD http://server/project/branches/feature123 .
    svn commit
    

    顺便说一句,我会尽量不要有一个单独的分支只是调试功能。很容易出现手动错误并将调试代码发送到生产主干。我会使用一些更动态的方法,在生产过程中不运行调试代码。

        3
  •  1
  •   Jonas Wagner    15 年前

    如果我理解正确的话,您希望调试特性只在(相当静态的)调试分支中,而不是在主分支中。试试这个:

    git checkout master
    git merge --no-commit debug
    git checkout master .        # undo all changes, get the files from master again
    git add .                    # stage all files
    git commit
    

    这样,debug将合并到master中,但是master中的所有文件都不会更改。

    现在您只需在debug之上创建功能分支,完成后将它们合并到master中。Git现在知道调试功能是从master中剥离出来的:

    git checkout debug
    git checkout -b new_feature  # create a new feature branch
    # hack, hack, hack
    git commit
    git checkout master          # All works fine...
    git merge new_feature        # ...so merge into master. Debug code will be stripped here
    

    您可以快进新功能上的调试分支,然后删除新功能分支。

    请注意,无论何时更改调试分支,都必须重做伪合并过程。

        4
  •  0
  •   user441648    16 年前

    如果分支有点旧,可以更新它们。

    这种方法创建了许多分支,但是由于我们将这些分支命名为与问题跟踪系统相关的分支,因此它们很容易跟踪。很容易包含或排除对版本的任何更改。

    希望有帮助

        5
  •  0
  •   iwein    16 年前

    我想你要找的是吉特樱桃树。这允许您在主控台上应用来自特性的提交,而无需执行您描述的重新基准舞蹈。

    既然无论如何都要删除feature分支,我想您不需要看到显式合并。

        6
  •  0
  •   Gabe Moothart    16 年前

    你的工作流程很复杂,因为你要做的事情很复杂。据我所知,没有一家风投可以让你轻松地维护一些不应该合并的变更。它充分说明了git的强大功能,即你的工作流程并不比它更难。

    #IFDEF 预处理器指令等)。如果您将调试代码包装在这些代码中,您将体验到更少的摩擦。