Git 发现什么签入破坏了单元测试

Git 发现什么签入破坏了单元测试,git,azure-devops,Git,Azure Devops,过去3天的一些签入破坏了我们的一个单元测试,为什么一点也不清楚 我假设找到哪个签入的最佳方法是从3天前开始在分支中提取代码,验证测试通过,然后在工作中途继续提取以进行签入&未能找到导致问题的签入 这就引出了以下问题: 如何获取过去3天内签入分支的所有代码ID的列表。 然后如何提取该特定ID的代码副本? 如果有必要,我们现在通过VSO Azure DevOps使用Git 谢谢-dave更新以提供有关如何使用对分的更多信息 您所描述的正是git对分所做的。然后,您只需在引入错误之前确定一个工作提交,

过去3天的一些签入破坏了我们的一个单元测试,为什么一点也不清楚

我假设找到哪个签入的最佳方法是从3天前开始在分支中提取代码,验证测试通过,然后在工作中途继续提取以进行签入&未能找到导致问题的签入

这就引出了以下问题:

如何获取过去3天内签入分支的所有代码ID的列表。 然后如何提取该特定ID的代码副本? 如果有必要,我们现在通过VSO Azure DevOps使用Git

谢谢-dave更新以提供有关如何使用对分的更多信息

您所描述的正是git对分所做的。然后,您只需在引入错误之前确定一个工作提交,以及一个中断的提交(可能是当前提交)

现在,二等分的全部意义在于找出事情的最后一次好还是第一次坏,因为你不知道。所以,当您确定一个正在工作的提交时,让它更近一点会稍微快一点,但这还不够重要。特别是因为您在设置起始点时花费的任何时间都是更精确的,所以对分可以更有效地找到引入错误的提交位置

所以,如果您知道一周前,您在master上本地检查了一个良好的bug前副本,您可以

master@{1 week ago}
这依赖于本地的reflog,因此只适用于当时签出一份好副本的回购协议。如果这不实用,您可以使用

git rev-list --until='1 week ago' -n1 master
获取至少1周前根据提交元数据创建的最后一次提交。大概是

git bisect start $(git rev-list --until='1 week ago' -n1 master) master
对于上述任何一种表示法,您可以使用3天而不是1周,这样效率会稍微高一些-即,在确定错误之前,您可能希望减少1到2次搜索

因此,如果您不确定提交是否存在错误,那么尝试预先测试提交没有多大价值;您只需使用旧的提交即可。但是,无论出于何种原因,您都可以使用相同的符号从给定时间签出提交,然后根据自己的喜好对其进行测试

有一点旁白,但要小心——如今,通过在将每个分支整合到主线之前对其进行重定基来创建更清晰的历史记录是非常流行的。虽然这些更干净的历史记录确实更线性、更简单,但实际上它们也更可能是肮脏的,因为它们包含从未测试过的提交。如果其中一个提交由于错误以外的原因而导致单元测试失败,例如在以后的提交中消除了合并不一致性,那么使用对分突然就不那么容易了,因为仅仅单元测试套件的绿色/红色状态不会告诉您是否存在错误

但这对于您通常描述的bug搜索策略来说是个问题,而不仅仅是对分。因此,如果通过历史记录跟踪bug是可行的,那么对分是最好的方法。

更新以提供有关如何使用对分的更多信息

您所描述的正是git对分所做的。然后,您只需在引入错误之前确定一个工作提交,以及一个中断的提交(可能是当前提交)

现在,二等分的全部意义在于找出事情的最后一次好还是第一次坏,因为你不知道。所以,当您确定一个正在工作的提交时,让它更近一点会稍微快一点,但这还不够重要。特别是因为您在设置起始点时花费的任何时间都是更精确的,所以对分可以更有效地找到引入错误的提交位置

所以,如果您知道一周前,您在master上本地检查了一个良好的bug前副本,您可以

master@{1 week ago}
这依赖于本地的reflog,因此只适用于当时签出一份好副本的回购协议。如果这不实用,您可以使用

git rev-list --until='1 week ago' -n1 master
获取至少1周前根据提交元数据创建的最后一次提交。大概是

git bisect start $(git rev-list --until='1 week ago' -n1 master) master
对于上述任何一种表示法,您可以使用3天而不是1周,这样效率会稍微高一些-即,在确定错误之前,您可能希望减少1到2次搜索

因此,如果您不确定提交是否存在错误,那么尝试预先测试提交没有多大价值;您只需使用旧的提交即可。但是,无论出于何种原因,您都可以使用相同的符号从给定时间签出提交,然后根据自己的喜好对其进行测试

有一点旁白,但要小心——如今,通过在将每个分支整合到主线之前对其进行重定基来创建更清晰的历史记录是非常流行的。虽然这些更干净的历史记录确实更线性、更简单,但事实上它们也更可能是肮脏的,因为它们包含了从未发生过的提交 受激发射损耗。如果其中一个提交由于错误以外的原因而导致单元测试失败,例如在以后的提交中消除了合并不一致性,那么使用对分突然就不那么容易了,因为仅仅单元测试套件的绿色/红色状态不会告诉您是否存在错误


但这对于您通常描述的bug搜索策略来说是个问题,而不仅仅是对分。因此,如果通过历史记录跟踪bug是可行的,那么对分是最好的方法。

请看一看。至于获取过去3天内签入的所有ID的列表,请做一个简单的git日志,选择一个足够老的提交,然后从那里开始对分操作。另一个问题是,为什么构建系统没有告诉您至少是哪一组提交破坏了构建?在推送之前,您是否提交了3天的内容?请查看。至于获取过去3天内签入的所有ID的列表,请执行一个简单的git日志,选择一个足够老的提交,然后从那里开始对分操作。另一个问题是,为什么构建系统没有告诉您至少是哪一组提交破坏了构建?在推送之前,您是否进行了3天的提交?我不确定最后一次提交是什么时候-是否有方法检查3天前的版本-然后我可以运行测试,测试速度非常快?如果是,我该怎么做?TIA@DavidThielen-更新到Clarify我不确定它最后一次好的时间-有没有办法检查3天前的版本-然后我可以运行测试,测试非常快?如果是,我该怎么做?TIA@DavidThielen-更新以澄清