【问题标题】:how use git to manage historical of updates in field text of DB like mysql?如何使用 git 管理数据库(如 mysql)字段文本中的更新历史记录?
【发布时间】:2016-12-23 11:20:44
【问题描述】:

我有一个带有Foo 表和bar 字段作为文本的mysql db。

我想保留该领域的每次变化的历史记录。

目前我有hirtory 表,并在更新bar 字段之前在数据库中插入每个版本。

但是当唯一的变化是一个字母时,存储所有版本是愚蠢的。

我想使用 git 代替我的 hirtory 表,我该怎么做?

PS:我正在使用 ruby​​ on rails 4.2 应用程序

【问题讨论】:

  • 我猜您是在问这个问题,因为该列存储了大量文本(可能用于 wiki 页面,或者可能是其他内容)。我建议看看其他人是如何解决相同(或类似)问题的。 This answer 有几个链接可以作为起点,给你一些想法。
  • 不是很长的文本,这取决于...这是规则/法律条款

标签: mysql ruby-on-rails git history


【解决方案1】:

不要。 Git 用于管理源代码,而不是数据库内容。如果您需要跟踪数据库中的更改,则可以使用历史记录表(就像您现在所做的那样),但还有一个很棒的 gem 可以解决这个问题:https://github.com/airblade/paper_trail

【讨论】:

  • AFAIK,git 不区分纯文本和源代码。就您的答案而言,这是一个小问题,但重要的是要大声疾呼。我想 OP 可以设计一个使用 SQL 转储(纯文本)的系统,然后是 git 版本。但是没有什么能阻止某人使用 git 来管理纯文本(非源代码)的历史记录。
  • 是的,git 管理文本文件——无论是源代码还是其他任何东西。但不是数据库。是的,你可以做一个 SQL 转储并在 Git 中跟踪它,但这仍然是个坏主意。 Matrix 您能否详细说明您的用例 - 为什么要存储这些版本,以及域是什么,而不是将其抽象为 Foo 和 bar?那么我们也许可以提供更好的解决方案。
  • 如果 git 的历史记录不在数据库中,这不是问题...用例:用户可以编写法律文本,我想显示每个法律条款的所有版本并显示它们之间的差异
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 2017-12-09
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
相关资源
最近更新 更多