我负责几个Excel文件和SQL模式文件。我该如何对这些文件执行更好的文档版本控制?
我需要知道这些文件中修改过的部分(不同部分)并保留所有版本以供参考。目前我在文件名上附加时间戳,但我发现它似乎效率低下。
有没有办法或好的做法来做更好的文档版本控制?
顺便说一句,编辑通过电子邮件发送给我文件。
既然你用git标记了你的问题,我假设你在询问Git的用法。
好吧,SQL转储是普通的文本文件,所以用Git跟踪它们是完全合理的。只需创建一个存储库并将其存储在其中。当你获得一个新版本的文件时,只需覆盖它并提交,Git会为你找出一切,你将能够看到修改日期,检查这个文件的特定版本并比较不同的版本。
如果你解压缩它们,.xlsx
也是如此。 .xlsx
文件是压缩的XML文件目录(参见How to properly assemble a valid xlsx file from its internal sub-components?)。除非解压缩,否则Git会将它们视为二进制。可以解压缩.xlsx
并跟踪对存档内各个XML文件的更改。
您也可以使用.xls
文件执行此操作,但问题是.xls
格式是二进制的,因此您无法从中获得有意义的差异。但您仍然可以看到修改历史记录和结帐特定版本。
我写的答案here可以应用于这种情况。名为xls2txt的工具可以提供.xls文件的人类可读输出。简而言之,您应该将它放到.gitattributes文件中:
*.xls diff=xls
在.git / config中:
[diff "xls"]
binary = true
textconv = /path/to/xls2txt
当然,我相信你也可以找到其他文件类型的类似工具,使git diff
成为办公文档非常有用的工具。这是我目前在我的全局.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 Customizing Git - Git Attributes
在过去的几天里,我一直在努力解决这个问题,并编写了一个小的.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在Managing ZIP-based file formats in Git中非常简单:
打开〜/ .gitconfig文件(如果已经存在则创建)并添加以下节:
[diff“zip”]
textconv = unzip -c -a
我们为Excel工作簿构建了一个开源Git命令行扩展:https://www.xltrail.com/git-xltrail。
简而言之,它的主要特点是它使git diff
可以处理任何工作簿文件格式,以便它显示工作簿的VBA内容上的差异(在某些时候,我们也会为工作表内容工作)。
它还处于早期阶段但可能有所帮助。
正如另一个答案的评论中所提到的,.xlsx文件只是XML。
要访问XML目录(可以使用git
-able),必须将.xlsx文件“解压缩”到目录中。在Windows上快速查看此方法是重命名该文件
.xlsx到
.zip,你会看到内在的内容。我将它与二进制文件一起存储,以便在结帐时,您无需执行其他步骤即可在Excel中打开文档。
这个Excel实用程序对我很有用:
对于工作簿和VBA宏来说,它是一个非常简单的版本控制工具。提交版本后,它将保存到PC上的Git存储库中。我从未尝试过。 SQL模式文件,但我确信有办法解决。
使用打开的文档扩展名.fods
。它是一种简单的,未压缩的XML标记格式,Excel和LibreOffice都可以打开,并且差异看起来很好。
我使用Excel文件的方法类似于Jon的,但我没有使用原始Excel文本数据,而是导出为更友好的格式。
这是我使用的工具:https://github.com/stenci/ExcelToGit/tree/master
您只需下载.xlsm文件(单击this page上的View Raw链接。)不要忘记按照自述文件中的说明检查Excel设置。您还可以添加代码以将SQL数据导出到文本文件。
该工作簿既是从二进制Excel到文本文件的转换器,也是Windows Git工具的启动器,它也可以用于非Excel相关项目。
我的工作版本配置了许多Excel工作簿。我也使用该文件为非Excel项目打开Git-gui,只需手动添加git文件夹。