Git特性分支策略允许未经批准的“附带”特性

97次阅读
没有评论

问题描述

在使用Git特性分支策略时,遇到一个问题。在完成一个特性后,开发人员在开始下一个特性时,会意外地从新完成的特性分支(有时仍在进行中)分支出来,而不是从Master分支分支出来。这意味着当已批准的特性被添加到Mock分支进行最终发布审查时,它们通常会携带未经批准的特性,因为它们位于同一个特性分支中。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

你可以使用以下命令来检查每个特性分支的历史记录,以确保在上次发布标签之后没有其他特性分支:

for hash in $(git log --format=%h master..); do
  if git branch --contains=$hash | grep -qv $(git name-rev HEAD | sed -e 's#HEAD ##g'); then
    git branch --contains=$hash | grep -v $(git name-rev HEAD | sed -e 's#HEAD ##g');
  fi;
done

上述命令将打印出从特定分支到Master分支之间的所有分支。但是,这可能只是一个表面问题,我不太了解你的工作流程或你所使用的团队,但我认为开发人员不太可能意外地在另一个特性分支上创建一个新的特性分支,除非他们确实希望在新特性中重用一些代码。

方案2

请注意以下操作注意版本差异及修改前做好备份。
你可以通过确保所有正在进行的特性在下一个发布中被包含,并在批准后立即合并到预发布分支中,从而快速而轻松地改进你的流程。从预发布分支中创建的任何分支都应该只包含打算发布的特性,这样,如果开发人员编写的代码适用于多个问题,他们几乎可以立即在合并后重用它。
虽然我不完全确定是否理解了你面临的问题,但在我看来,两个分支中存在代码实际上并不是一个问题,这只是代码重用。如果其中一个分支被从发布中拉出,那么没问题,被重用的代码仍然需要保留。

正文完