【问题标题】:Managing documents using GIT使用 GIT 管理文档
【发布时间】:2011-01-11 08:20:14
【问题描述】:

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

【问题讨论】:

    标签: git project-management cvs


    【解决方案1】:

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

    但我认为使用任何 VCS 都不是文档版本控制的好解决方案,尤其是在 Web 应用程序中。这是因为对于类似办公室的文档,您将主要使用二进制数据。当涉及到二进制数据时,VCS 很糟糕(没有例外)。您将无法进行任何差异,并且元数据管理不适合此类事情 - 提交的作者主要绑定到特定帐户(并且您可能会为 git 使用一个系统帐户),没有其他信息(基本文件除外信息:大小、权限、ctime)已存储,因此您必须将其(作者身份、Web 应用程序用户的权限、其他元数据)存储在您自己附近。另请注意,多个用户可以同时提交数据,因此您的版本控制中会有分支。当您拥有庞大的数据集时(并且使用二进制办公文件,它可能会比您想象的更快),您将无法对此类存储库进行分区。

    IMO,在这里使用 VCS 给您带来的收益非常小,并引入了额外的问题。

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

    【讨论】:

    【解决方案2】:

    没有通用的“保存时提交”功能(至少一个与您提到的文档类型相关的所有编辑器集成)

    最简单的方法是后台作业,例如每 5 分钟提交一次(或在 Git 的情况下为 'git add -A && git commit -m "xxx")。

    其实Mark Longaircmets:

    flashbake 旨在从 cron 运行,以执行您在第二段中描述的操作,并提供某种合理的提交消息。
    不过,我不确定这就是原始海报所追求的。

    Original project here:

    • 自动备份很好,除非您有要查看其增量历史记录的文件。
    • 源代码控制非常适合该历史记录,但大多数工具都希望作者在此过程中手动提交更改。
    • => 无缝的源代码控制解决方案结合了自动备份的便利性和源代码版本控制的强大功能。

    【讨论】:

    • 其实,如果文件会在上传时添加,上传后服务器端会自动添加并提交。
    • 我从来没有想要这样的东西,所以我自己没有尝试过,但是 flashbake github.com/commandline/flashbake/wiki 旨在从 cron 运行以执行您在第二段中描述的某种操作合理的提交信息。不过,我不确定这就是原始海报所追求的。
    • @Mark:很有趣,谢谢。我的回答中包含了您的评论(以及一些其他信息)。
    【解决方案3】:

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

    【讨论】:

    • 事后,为复活这家伙道歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    相关资源
    最近更新 更多