Подтвердить что ты не робот

Будет ли Subversion эффективно хранить документы OpenXML Office?

Я управляю Subversion как хранилище хранилищ инженерных документов для своей компании. Он работает достаточно хорошо, однако у меня есть вопрос о том, как обрабатываются форматы MS Office 2007 с помощью Subversion.

Я просматриваю электронную таблицу Excel 2007 (расширение .xlsx) в своей рабочей копии, в которой Subversion применила свойство свойства svn: mime-type/октет-поток. Это означает, что Subversion рассматривается как двоичный, правильно?

Я надеялся, что новые форматы документов MS Office будут эффективно храниться Subversion. Я понимаю, что полная копия двоичного файла будет сделана при каждой фиксации этого файла, тогда как если файл будет текстовым, небольшое изменение в файле приведет к небольшому количеству дополнительных данных, добавляемых в репозиторий (в типичная ситуация как минимум).

Я не очень разбираюсь в деталях XML, но я думал, что XML файл является текстом, и поэтому он будет эффективно храниться в Subversion.

Возможно ли настроить Subversion, чтобы документы MS Office OpenXML эффективно сохранялись?

Последующие действия (2009-11-09). Я обнаружил, что документы Office могут храниться как обычный текст с использованием форматов документов документа Office 2003 (Excel: XML Spreadsheet 2003; Word: Word XML Document. Существует предупреждение о потере форматирования, но мне еще предстоит встретить заметную потерю форматирования.

4b9b3361

Ответ 1

Из статья OpenXML в wikipedia:

Файл Office Open XML является ZIP-совместимый пакет OPC, содержащий XML-документы и другие ресурсы.

Другими словами, файлы OpenXML представляют собой файлы zip с файлами XML в них. Сжатие или шифрование "скремблирует" данные, саботируя способность подрывной деятельности генерировать дельта между версиями. Это не связано с svn:mimetype. Subversion считает, что все файлы являются двоичными при создании дельт.

На голландском языке мы говорим "измерение - это знание". На приведенном ниже графике показаны результаты эксперимента, когда я импортировал документ 500K OpenXML в репозиторий SVN 1.6 (версия 1). Затем я добавил абзац из другого документа, сохраненного и совершенного. Это повторялось 5 раз (ревизия от 2 до 6).

openxmlsvn.png

Как вы можете видеть, фиксация новой версии docx, которая просто добавляет абзац, обойдется вам в 150K дискового пространства. Это все еще намного эффективнее, чем просто копирование каждой ревизии без помощи системы контроля версий.

Я также повторил эксперимент с отдельным тестовым репозиторием, распаковывая каждую ревизию docx. Как вы можете видеть, хранение пересмотров документов было бы намного более эффективным, если бы оно не было сжато. Также интересно видеть, что сжатие собственных данных подрывной операции примерно так же эффективно, как и zip. Сохранение первой версии несжатого docx в подрывной операции занимает примерно такое же пространство, что и исходный docx.

YMMV.

Ответ 2

Subversion достаточно хорошо обрабатывает двоичные файлы. Он не сохраняет полную копию для каждой фиксации, но только эффективный двоичный diff.

Смотрите FAQ об этом.

Ответ 4

Вы когда-нибудь пытались открыть файл OpenXML в текстовом редакторе?

Чтобы сделать его коротким: это не текст, он все еще двоичный. Так что нет, вы не можете заставить Subversion работать с ним иначе.