我正在将工作场所的基础设施转换为使用 git 而不是 svn。整体迁移进展顺利,但我们有一个我开发的工具来进行 SQL 模式迁移。
为了处理单个模式更改依赖关系,迁移脚本使用颠覆关键字替换将最后更改的修订号放入模式中。使用 git,我们不能使用相同的想法,因为修订历史是非线性的(我们完全打算利用分支功能)。
因此,如何从 git 中获取提交 id 的拓扑排序列表?除此之外,有人对如何处理这个问题有更好的想法吗?
我正在将工作场所的基础设施转换为使用 git 而不是 svn。整体迁移进展顺利,但我们有一个我开发的工具来进行 SQL 模式迁移。
为了处理单个模式更改依赖关系,迁移脚本使用颠覆关键字替换将最后更改的修订号放入模式中。使用 git,我们不能使用相同的想法,因为修订历史是非线性的(我们完全打算利用分支功能)。
因此,如何从 git 中获取提交 id 的拓扑排序列表?除此之外,有人对如何处理这个问题有更好的想法吗?
git rev-list old-revision..new-revision
这显示最新的优先。如果您想要最旧的优先,请添加--reverse
如果您想有一种方法来跟踪文件在源代码存储库中的来源,您可能需要研究标记您的工作并找到某种方法来使用它来自的标记来标记文件。其中一些取决于您的实际部署过程,但我的简短回答是用基于标签的机制替换 svn 关键字。(实际上,这可能是您一直在 svn 中应该做的事情。)
我听说过这里提到的“涂抹过滤器”,但我自己没有使用过它们,所以我无法推测它们如何适合这里。