如何将 gdoc 的修订历史导出到 git?

Posted

技术标签:

【中文标题】如何将 gdoc 的修订历史导出到 git?【英文标题】:How do I export the revision history of a gdoc to git? 【发布时间】:2012-12-22 17:24:27 【问题描述】:

我在 google 文档中有一个电子表格,我想将它集成到 git 工作流程中(并推送到 github)。是否有任何工具(甚至是支持 gdoc 版本的库)可以做到或帮助我做到这一点?

我有一些基于 google_spreadsheet gem 的旧 ruby​​ hack,它们读取和写入当前版本的 csv gdoc,但没有提取修订历史记录。

【问题讨论】:

在github.com/tidyverse/googledrive/issues/219github.com/tidyverse/googledrive/issues/219上通过 R 查看一些 2018-19 正在进行的工作 【参考方案1】:

我对你的问题很感兴趣,所以今天我一起做了一个小项目:

https://github.com/larsks/gitdriver

给定一个文档 ID,它将使用 Google Docs 文档的纯文本或 html 内容创建一个 git 存储库。这可以很容易地扩展到与其他文件类型一起使用。它工作时看起来像这样:

$ python gitdriver.py -T 1j6Ygv0ow5A8_ywTMwJbuKVrxrSsSH2wJs3a8Q66mvt4
Create repository "Untitled"
Initialized empty Git repository in /home/lars/projects/gitdriver/Untitled/.git/
[master (root-commit) 24d35e7] revision from 2013-01-08T21:57:38.837Z
 1 file changed, 1 insertion(+)
 create mode 100644 content
[master fd243ee] revision from 2013-01-08T21:57:45.800Z
 1 file changed, 1 insertion(+), 1 deletion(-)
 rewrite content (95%)
[master 5ad1a26] revision from 2013-01-09T01:47:29.593Z
 1 file changed, 1 insertion(+), 1 deletion(-)
 rewrite content (92%)
$ cd Untitled
$ git log --oneline
5ad1a26 revision from 2013-01-09T01:47:29.593Z
fd243ee revision from 2013-01-08T21:57:45.800Z
24d35e7 revision from 2013-01-08T21:57:38.837Z

这需要您通过 Google 设置必要的应用程序凭据。而且它不做任何错误检查。并且可能会吃掉你的金鱼。这意味着作为 API 的演示以及您可以如何做这样的事情;它并非旨在成为功能性产品。

【讨论】:

这似乎是一个很酷的开始——我需要安装什么 python 版本和依赖项才能运行它?在运行 pip install google-api-python-clientpyyamlrequests 后,我尝试使用 python 2.7 运行它,但仍然有一些回溯:gist.github.com/4514298 这个回溯有些奇怪;它报告您的os 模块没有urandom 功能。你是如何安装 Python 2.7 的?作为记录,这在 OS X 和 Linux 下都可以正常工作(w/ Python 2.7 和 requests 1.1.0)。 这真是太棒了 larsks,感谢您撰写并发布它。我确实在截断修订列表方面遇到了一些问题,这些问题似乎由this fork of your code 修复。这为我完成了工作,但你可能会考虑联合起来。【参考方案2】:

gdoc 没有设置导出修订历史source。

Google 云端硬盘确实有一个 API 可以访问所有修订版 here。这提供了一种下载所有修订版的简便方法。然后你可以创建一个脚本将它们一一添加到git中。修订历史记录存在一些问题,请参阅here。

【讨论】:

这是非常有用的研究;谢谢!权威的说法是,它的设计目的不仅仅是恢复到先前的状态,这表明我最好重新考虑这个项目,尽管如果它也适用于所有 GDocs 的话,尝试使用驱动 API 可能会很有趣。

以上是关于如何将 gdoc 的修订历史导出到 git?的主要内容,如果未能解决你的问题,请参考以下文章

将具有重命名中继历史的SVN仓库导入Git

在 Git 中,如何获取从一个修订版到另一个修订版的文件更改的详细列表?

将Git代码提交历史记录导出

如何在 Win 7 64 位机器中重命名 gDoc 打印机

基于合并日期的 Git 存档

如何创建 oracle 程序以将数据导出到历史表中?