我负责几个Excel文件和SQL模式文件。我应该如何对这些文件执行更好的文档版本控制?
我需要知道这些文件中修改过的部分(不同部分),并保留所有版本以供参考。目前,我在文件名上附加了时间戳,但是我发现它似乎效率很低。
有没有一种方法或良好的做法来进行更好的文档版本控制?
顺便说一句,编辑人员通过电子邮件将文件发送给我。
我负责几个Excel文件和SQL模式文件。我应该如何对这些文件执行更好的文档版本控制?
我需要知道这些文件中修改过的部分(不同部分),并保留所有版本以供参考。目前,我在文件名上附加了时间戳,但是我发现它似乎效率很低。
有没有一种方法或良好的做法来进行更好的文档版本控制?
顺便说一句,编辑人员通过电子邮件将文件发送给我。
Answers:
既然您用标记了您的问题 吉特 我假设您正在询问有关Git的用法。
好吧,SQL转储是普通的文本文件,因此使用Git跟踪它们非常有意义。只需创建一个存储库并将其存储在其中即可。当您获得文件的新版本时,只需将其覆盖并提交,Git就会为您找出所有内容,您将能够看到修改日期,检出该文件的特定版本并比较不同版本。
.xlsx
如果将它们解压缩,也是如此。.xlsx
文件是XML文件的压缩目录(请参阅如何从其内部子组件正确组装有效的xlsx文件?)。除非解压缩,否则Git会将其视为二进制文件。可以将zip解压缩.xlsx
并跟踪对存档内单个XML文件的更改。
您也可以对.xls
文件执行此操作,但是这里的问题是.xls
格式是二进制的,因此无法从中获取有意义的差异。但是您仍然可以查看修改历史记录和签出特定版本。
.xlsx
是XML,因此应该可以正常工作。通常,无法轻松比较两个.xls
文件。您可能可以添加一个预提交的钩子,该钩子将.csv
它放在附近,您将能够比较它们。
我在这里写的答案可以在这种情况下应用。名为xls2txt的工具可以提供人类可读的.xls文件输出。简而言之,您应该将其放入.gitattributes文件:
*.xls diff=xls
并在.git / config中:
[diff "xls"]
binary = true
textconv = /path/to/xls2txt
当然,我敢肯定,您也可以找到适用于其他文件类型的类似工具,这git diff
对于Office文档而言是非常有用的工具。这是我目前在全局.gitconfig中拥有的内容:
[diff "xls"]
binary = true
textconv = /usr/bin/py_xls2txt
[diff "pdf"]
binary = true
textconv = /usr/bin/pdf2txt
[diff "doc"]
binary = true
textconv = /usr/bin/catdoc
[diff "docx"]
binary = true
textconv = /usr/bin/docx2txt
Pro Git书中有一个很好的主题:8.2定制Git-Git属性
在过去的几天里,我一直在努力解决这个确切的问题,并且编写了一个小型.NET实用程序来提取和规范化Excel文件,使它们更易于存储在源代码管理中。我在这里发布了可执行文件:
https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe
..以及此处的来源:
https://bitbucket.org/htilabs/ooxmlunpack
如果有兴趣,我很乐意让它更具可配置性,但是目前,您应该将可执行文件放在一个文件夹中(例如,源存储库的根目录),然后在运行它时,它将:
显然,并非所有这些事情都是必需的,但最终结果是一个电子表格文件,该文件仍将在Excel中打开,但更适合于差异压缩和增量压缩。同样,存储提取的文件也使在版本历史记录中更明显地体现了每个版本中进行了哪些更改。
如果有胃口,我很乐意使该工具更具可配置性,因为我想并不是每个人都希望提取内容,或者可能要从公式单元格中删除值,但是目前这对我都很有用。
在测试中,一个2 MB的电子表格“解包”到21 MB,但是后来我能够在1.9 MB的Mercurial数据文件中存储它的五个版本,每个版本之间都有很小的变化,并使用Beyond Compare在文字模式。
注意:尽管我使用的是Mercurial,但我在研究解决方案时会阅读此问题,并且该解决方案没有针对Mercurial的问题,对于Git或任何其他VCS来说应该可以正常工作。
Tante在管理Git中基于ZIP的文件格式时建议了一种非常简单的方法:
打开〜/ .gitconfig文件(如果尚不存在,则创建)并添加以下节:
[diff "zip"] textconv = unzip -c -a
我们已经为Excel工作簿构建了一个开源Git命令行扩展:https : //www.xltrail.com/git-xltrail。
简而言之,主要功能是它可以git diff
处理任何工作簿文件格式,以便显示工作簿的VBA内容上的差异(有时,我们也将其用于工作表内容)。
现在还处于初期,但可能会有所帮助。
如另一个答案的注释中所述,.xlsx文件只是XML。
要进入XML目录(git
可用),您必须将.xlsx文件“解压缩”到目录中。在Windows上查看此问题的快速方法是将文件<filename> .xlsx重命名为<filename> .zip,您将看到内部内容。我会将其与二进制文件一起存储,以便在结帐时不必为了在Excel中打开文档而执行其他步骤。
这个Excel实用程序对我来说很好用:
它是用于工作簿和VBA宏的非常简单的版本控制工具。提交版本后,该版本将保存到PC上的Git存储库中。我从来没有尝试过。SQL模式文件,但是我敢肯定有办法解决。
xltrail
比这容易得多。
我使用Excel文件的方法与Jon相似,但是我没有处理原始的Excel文本数据,而是将其导出为更友好的格式。
这是我使用的工具:https : //github.com/stenci/ExcelToGit/tree/master
您所需要做的就是下载.xlsm文件(单击此页面上的View Raw链接。)不要忘记按照自述文件中的说明检查Excel设置。您还可以添加代码以将SQL数据导出到文本文件。
该工作簿既是从二进制Excel到文本文件的转换器,又是Windows Git工具的启动器,它还可以与非Excel相关项目一起使用。
我的工作版本配置了许多Excel工作簿。我还使用该文件为非Excel项目打开Git-gui,只需手动添加git文件夹。