保留旧版本的 Git 最佳实践

Posted

技术标签:

【中文标题】保留旧版本的 Git 最佳实践【英文标题】:Git best practices on keeping previous versions 【发布时间】:2020-08-15 05:10:03 【问题描述】:

我目前正在开发一个运行模型的应用程序,一个常见的要求是我们需要将当前模型与具有相同输入的先前版本进行比较。到目前为止,我们为每个生产版本都保留了一份副本,如下所示:

application_base

v1 v2 v3 等

作为他们自己的文件夹,并将整个内容推送到存储库。这似乎......不是最好的方法,它会导致每个版本的拉取请求看起来像数百个文件有代码更改,即使它只是几个。我已经看到了几种方法,但它们看起来都很老套,我不可能是唯一一个遇到过这个问题的人,最好的做法是什么?

谢谢。

【问题讨论】:

你完全颠覆了 git 和版本控制系统的观点,将版本保存在单独的文件夹中,而不是依赖于提交历史。请在下方回复您的评论,不同的团队可以简单地查看标记版本,就像git checkout v2.2.1 一样简单。他们不需要成为 git 专家。你甚至可以给他们一个 Git 的 GUI 前端。 那么在这个用例中不应该使用 git(或至少一个 repo)的答案是什么?这并不灵活,需要在共享服务器上有一个中心位置,其中存在多个版本的应用程序,然后其他团队可以针对其中任何一个版本运行。我无法说服管理层采用需要我们的客户学习足够的 git 以在运行之前检查他们想要的版本的工作流程,他们的技术技能非常有限。我意识到这并不理想,但有时在现实世界中就是这样,我正在努力寻找最不坏的选择。 是的,这就是我的回答。如果您按目录进行版本控制,那么为什么要使用版本控制系统? VSC 旨在就地维护版本、跟踪更改并允许您查看以前的版本。如果您正确使用 git(在原地 进行更改并使用 git commitgit checkout),但只为您的客户使用“目录中的发布版本”方法,那么不要使用 git对于后半部分。使用普通文件服务器。开发人员根据需要将新版本复制或同步到它。了解 GitHub 如何允许您发布未存储在 git 存储库中的“版本”。同样的事情。 【参考方案1】:

您可以使用git tags 来标记版本/发行版。这样,您可以在一个目录中完成所有工作。差异不是很大,而是差异。

检查特定标签也很容易,因此您应该能够“将当前模型与具有相同输入的先前版本进行比较”。

【讨论】:

很确定这行不通,我们需要同时提供多个版本。可能有一个团队在版本 1 上运行测试,另一个在版本 2 上运行测试,等等。他们通常也不知道如何使用 git,更不用说我们相信他们正在修改我们的应用程序源代码(这将需要让他们结帐)。当我们只希望旧版本可供我们的团队记录和比较时,您的方法似乎是标准的,但是当一些消费者可能希望在不与我们的团队互动的情况下访问旧版本时,这就会失败。 另外阅读您的回复我可能表达得不好,当我说将当前模型与以前的版本进行比较时,我并不是指源代码差异,而是指输出,所以我们需要运行版本 1、版本 2、版本 3 等并比较输出。显然我们也希望能够比较代码。 根据您在上层 cmets 中提供的信息,在我看来,您需要使用 Artifactory 之类的东西。这样,有权访问您的工件存储库的人可以下载以前预构建的模型,并可以在自己的环境中运行它们,然后他们可以比较输出。您仍然可以通过 git 比较源代码差异。

以上是关于保留旧版本的 Git 最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

Git分布式版本控制系统最佳实践

不同版本间 Git 合并的最佳实践

iOS 5 最佳实践(发布/保留?)

Git:将“git clone”到现有文件夹的最佳实践是啥?

Git Flow——Git团队协作最佳实践

万字详解!Git 入门最佳实践