如何保持某个git存储库状态始终可访问?

时间:2011-07-06 17:27:14

标签: svn git tags workflow

我正在尝试为一小群人合作开发用于数据分析的软件的规则。重要的是有一种方法可以在过去的某个时刻重现代码的运行,即恢复到过去的状态(版本控制应该允许的东西)。在过去,svn对我们来说是可能的。然后,我们可以使用用于该运行的svn修订号来标记我们的数据分析结果。

stories关于如何通过分支,合并和重新定位,历史丢失/无法访问/噩梦到达等等。同时,为实验性功能开发轻松处理分支是什么使得我们考虑从svn切换到git。

那么:我们应遵循哪些规则来确保我们能够轻松且始终能够检索为给定分析运行的代码状态?只使用主分支进行分析运行?如果是这样,主分支上应该禁止哪些操作?

编辑:下面解释了两个好的建议:标记重要的提交将使分析透明和可重复(antlersoft)。除了保持标签安静之外,这不需要新的规则。此标记工作流程不需要用于变基和合并的规则。汤姆安德森的建议是有用的,因为一个中央仓库应该容纳所有附加标签的代码(这将是一个约定/规则),可以让其他成员访问这些代码。

3 个答案:

答案 0 :(得分:3)

对此的解决方案不必涉及限制您可以在任何分支上执行的操作。只需使用git标签,不要删除或移动它们。标记用于运行每个分析的提交,并使用分析记录提交标记(这与您在svn中的操作非常相似,除了代替VCS生成的修订号,它是您提供的标记名称)。然后,无论您在分支上做什么(rebase等),分析的版本及其所有历史记录都将始终可用。

答案 1 :(得分:2)

您需要遵循的唯一规则是永不删除历史记录。这意味着永远不要改变,或使用其他一些不常见的操作。

相反,它意味着永远不会在运行分析的存储库中重新定位(等)。人们可以在其他存储库中自由变换。您是否有可能建立一个“黄金大师”存储库,每个人都推送代码,使用无重组策略,并使用它来运行您的分析?然后,人们可以在本地开发代码,然后在准备运行时推送到该存储库。对于使用DVCS的团队来说,这是一个相当正常的工作流程。

如果人们需要从他们的本地存储库运行分析(用于发布),那么事情就更棘手了。我建议每个人在本地有两个存储库,一个用于开发,一个用于分析。在开发存储库中允许重新定位,但必须将代码推送到分析存储库以供使用(然后再移至团队的其他成员)。这有点弱,因为它只是阻止人们在分析存储库中重新定位的惯例,而对于没有人直接使用的中央存储库,不会发生重新定位。

答案 2 :(得分:2)

我知道这个帖子已经老了,但我只是想清楚一点...... 重新定位不会删除任何历史记录,也不会删除任何提交。它只添加新的提交并移动分支参考 只要提交被任何东西(分支,标记或其他提交)引用,它将永远存在 只有未引用的对象(如果它们是旧的)(默认情况下是30天)并且您进行垃圾收集或类似操作时,它们将被删除。