2011-02-01 2 views
2

Каковы наилучшие методы для управления версиями данных, содержащиеся в нескольких больших (100 МБ +) CSV-файлах?Рекомендации по сравнению с версиями текстовых данных

Является ли SVN хорошим вариантом?

Update: После обсуждения на это некоторое время, я чувствую, что это может быть лучшим вариантом для GZIP/Zip файл CSV, а затем добавить его в репозиторий. Таким образом, я бы сэкономил на головной боли управления версиями, не теряя при этом дисковое пространство. Это, по крайней мере, так хорошо, если не лучше, чем управление их версиями вручную.

Ищем идеальное решение.

Кроме того, небольшая заметка: Управление версиями содержимого файла не является обязательным требованием. Например, мне не нужно знать, какие слова были изменены в файле, пока я могу записать сводку изменений или добавить примечание к каждой версии.

ответ

1

SVN ужасно медленный, потому что он передает все данные по сети. Попробуйте локальный репозиторий git или hg. Это требует только доступа к файлам, который должен быть намного быстрее, чем сеть. Оба типа репо также имеют гораздо более эффективную обработку перемещений файлов, переименование файлов и их слияние. Кроме того, git может использовать «плагины» для поддержки дополнительных типов файлов, таких как слияние офисных документов (odf, doc и т. Д.).

В отличие от SVN у вас есть только один скрытый репо, содержащий сжатый репозиторий. SVN имеет .svn dir в каждом поддиректории, содержащем последнее состояние файла (и другие вещи).

Некоторые случайные числа:

Assume размер всех файлов (не репо данные) в репозитории 100MB

  • SVN Checkout бы от 200 до 250МБ, все старые версии должны быть перенесена из сервер SVN.
  • Резерв git или hg займет 150 МБ (при условии, что файлы могут быть хорошо сжаты), включая все версии файлов.

Это то, что мы пережили с SVN и git. Иногда я использую hg (mercurial).

Что касается ответа MrEyes, я бы также предложил добавить некоторую информацию о версии в файл CSV или имя файла. Git будет идентифицировать переименование файла, включая изменения и т. Д.

1

Это во многом зависит от того, как вы собираетесь использовать эти файлы.

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

Однако ...

В зависимости от использования не может быть хорошим решением. Допустим, вы проверяете CSV, и это номер версии SVN 1234. Кто-то затем проверяет этот файл, может быть, отправляет его кому-то другому и т. Д. И т. Д. Владелец CSV не будет знать из CSV, какую ревизию он и поэтому не будут знать, использует ли они последнюю версию.

Лично я бы поместил номер версии в имя файла или добавил строку в начало/конец CSV, содержащую номер версии, но это также зависит от вашего использования.

Пища для размышлений ...

EDIT Дополнительно может быть проблемой с файлами изменениями, я не уверен, если SVN поддерживает на CSV посмотреть различие, так каждый раз, когда Вы регистрируетесь, жгуты недр СВЕН, это может полностью заменить старый файл (сохраняя старый для справки). Это может быстро использовать много дискового пространства.

Смежные вопросы