2011-01-11 71 views
5

我正在一个网站上工作,我将能够创建项目并将数据上传到我的每个产品。数据可能主要以电子表格文档,图像,pdf等形式出现。理想情况下,我想使用VCS(git pref)类型的设置,每次更新特定文档时,我都可以将该文档提交给回购。关于如何实施的任何想法都会有所帮助。使用GIT管理文档

回答

8

你可以在每次上传后在子shell中调用git。

但我不认为使用任何VCS它是文档版本控制的好方案,特别是在Web应用程序中。这是因为对于类似办公室的文档,您将主要使用二进制数据。当涉及到二进制数据时,VCS吸引(无例外)。你将无法做任何差异,元数据管理不适合这样的事情 - 作者的提交大多是有限的特定帐户(你可能会使用一个系统帐户的git),没有额外的信息(基本文件除外信息:大小,权限,ctime)被存储,所以你必须自己存储它(作者,Web应用程序用户的权限,额外的元数据)。另请注意,有几个用户可以同时提交数据,因此版本控制中会有分支机构。当你拥有庞大的数据集(并且使用二进制办公文件时它会比你想象的要快),你将无法分割这样的存储库。

国际海事组织,在这里使用VCS给你很小的收益,并引入其他问题。

我建议在数据库中保留元数据(文件名,修订版,其他内容),并在磁盘上保留文件修订版。将每个文件的修订保留在单独的唯一目录中。一个提示:不要使用来自上传的文件名。使用散列函数根据内容和元数据计算唯一名称。

1

没有一个通用的“承诺上保存”功能(至少有一个与你所提到的文档类型相关联的所有编辑综合)

最简单的方法将是一个后台作业这将提交(或例如Git中的git add -A && git commit -m "xxx"),例如每5分钟一次。

其实,Mark Longair评论:

flashbake被设计为从cron运行做什么,你在以某种合理的提交信息的第二段描述。
虽然我不确定那是什么原始海报。

Original project here

  • 自动备份是好的,除非你有您要查看的增量历史文件。
  • 源代码管理对于该历史非常有用,但大多数工具都希望作者能够在此过程中手动提交更改。
  • =>无缝源代码管理解决方案将自动备份的便利性与源代码版本控制的强大功能相结合。
+0

实际上,如果文件将被添加上传,服务器端会在上传后自动添加并提交。 – cezio 2011-01-11 10:15:05

+0

我从来没有想过这样的事情,所以没有尝试过自己,但flashbake https://github.com/commandline/flashbake/wiki旨在从cron运行,做你在第二段中描述的某种合理的提交信息。不过,我不确定这就是原来的海报。 – 2011-01-11 16:26:18

+0

@Mark:有意思,谢谢。我在回答中包含了您的评论(以及其他一些信息)。 – VonC 2011-01-11 16:35:55

1

作为Cezio回答的一个分支,如果您真的想使用VCS进行版本控制,请考虑LaTeX。由于它基本上是编译成文档的源代码(通常为PDF,通过pdflatex),因此它是版本控制的合理候选者。