【问题标题】:Find specific combinations of files of commits in git在 git 中查找提交文件的特定组合
【发布时间】:2019-03-19 10:57:45
【问题描述】:

我有以下情况想要解决。我目前专注于为此使用 git,但这可能不是正确的路径。

我有一个文件 docker-compose.yml,我们称这个文件为 A 和一个文件,docker-compose.override.yml,我们称这个文件为 B (未来我们还会有额外的文件,但由于这基本上是重复的情况,我们暂时忽略这个扩展)

A 和 B 的不同版本使用 v1.0 等表示,IE:Av1.0 和 Bv2.1

我们从 Av1.0 和 Bv1.0 开始 然后我们添加 Av1.1(因此保留 Bv1.0) 然后我们添加 Bv1.1 等等。从历史的角度来看,你会看到这样的事情:

Av1.0 Bv1.0 Av1.1 Bv1.0 Av1.1 Bv1.1 Av2.0 Bv1.1 Av3.0 Bv1.1 AV3.0 Bv3.0

(记住,文件名为A和B,只是内容不同)

如何从 repo 中找到特定的版本集:

  • 能够找到特定版本的 A
  • 能够找到与此版本 A 相关的所有 B 版本

我考虑过使用标签和特定的提交字符串,但我也希望用户提交新版本的 A 或 B 而不必遵守非常严格的文本输入(标签或提交),因为很容易出现拼写错误。 另一个解决方案是完全自动化添加到 repo,但我不知道要开始。因此,我们将不胜感激。

【问题讨论】:

  • 我什至不认为 Git 必须参与其中。每次提交时似乎都存在版本号的文件。您可能希望根据特定模式使用 grep 之类的东西。
  • 文件的内容发生了变化,而不是名称本身。因此,我们需要多个目录。这是一种选择,但我更喜欢使用 git 风格的方式,如果有的话。
  • 此时我们正在考虑使用自动放置的标签,因此不会出现用户错误,使用 git 挂钩。然后我们可以选择标签来得到正确的组合。

标签: git docker-compose tags find commit


【解决方案1】:

经过大量搜索和阅读,我找到了完成它的方法。

结合使用分支和标记,我们可以达到预期的效果。

怎么做?

  • 每个主要版本都有自己的分支
  • 每个次要版本都在主要版本分支下提交
  • 每个版本都使用与版本匹配的版本控制系统进行标记

因此可以在分支下找到主要版本的最新版本 任何其他需要的版本都可以通过使用每个提交的标签找到。

重要提示:标记是通过使用 git commit hooks 完成的。因为由于拼写错误或其他问题,不应由人工进行标记。并且标记只能在成功提交后完成。

最终会是这样的:

Av1.0  Bv1.0  <- branch 1.0 tag 1.0-0
Av1.1  Bv1.0  <- branch 1.1 tag 1.1-0
Av1.1  Bv1.1  <-            tag 1.1-1
Av2.0  Bv1.1  <- branch 2.0 tag 2.0-0 (it is the first version in this branch, so it is a 0)
Av3.0  Bv1.1  <- branch 3.0 tag 3.0-0
Av3.0  Bv3.0  <-            tag 3.0-1 (it is the 2nd version of B in this branch so it gets a 1)

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 2011-08-20
    • 1970-01-01
    • 2019-04-28
    • 2018-10-17
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多