Управление документами с помощью GIT - PullRequest
5 голосов
/ 11 января 2011

Я работаю над сайтом, на котором я смогу создать проект и загрузить данные в каждый из моих продуктов. Данные могут быть в основном в форме электронных таблиц, изображений, PDF-файлов и т. Д. В идеале я хотел бы использовать настройку типа VCS (git pref), где каждый раз, когда я обновляю конкретный документ, я могу просто передать этот документ Сделки рЕПО. Любые идеи о том, как я мог бы реализовать, будут полезны.

Ответы [ 3 ]

8 голосов
/ 11 января 2011

Вы можете вызывать git в подоболочке после каждой загрузки.

Но я не думаю, что использование VCS является хорошим решением для управления версиями документов, особенно в веб-приложениях.Это потому, что с офисными документами вы будете использовать в основном двоичные данные.VCS отстой (без исключений), когда приходит к двоичным данным.Вы не сможете делать какие-либо различия, и управление метаданными не подходит для таких вещей - автор commit в основном привязан к конкретной учетной записи (и вы будете использовать, вероятно, одну системную учетную запись для git), никакой дополнительной информации (кроме базового файла)информация: размер, разрешения, ctime) хранится, поэтому вам придется хранить ее (авторство, разрешения для пользователей веб-приложений, дополнительные метаданные) рядом с собой.Также обратите внимание, что несколько пользователей могут фиксировать данные одновременно, поэтому в вашей версии будут ветки.Когда у вас будет огромный набор данных (и с бинарными офисными файлами он может появиться быстрее, чем вы думаете), вы не сможете разбить такой репозиторий.

IMO, использование VCS здесь дает вам очень небольшой выигрыш и вводит дополнительныепроблемы.

Я бы посоветовал хранить метаданные в базе данных (имя файла, ревизии, дополнительные материалы) и хранить ревизии файлов на диске.Храните каждый файл с ревизиями в отдельном, уникальном каталоге.Один совет: не используйте имена файлов, полученные при загрузке.Используйте хэш-функции для вычисления уникального имени на основе содержимого и метаданных.

1 голос
/ 03 ноября 2012

В качестве ответвления от ответа Cezio, если вы действительно хотите использовать VCS для контроля версий, рассмотрите LaTeX.Поскольку это по сути исходный код, который скомпилирован в документ (обычно в формате PDF через pdflatex), он является разумным кандидатом для контроля версий.

1 голос
/ 11 января 2011

Не существует универсальной функции фиксации при сохранении (по крайней мере, одна интегрирована со всеми редакторами, связанными с указанными вами типами документов)

Самый простой способ - это фоновое задание, которое фиксирует (или 'git add -A && git commit -m "xxx" в случае Git), например, каждые 5 минут.

На самом деле, Mark Longair комментарии:

flashbake предназначен для запуска из cron для выполнения того, что вы описываете во втором абзаце с каким-то разумным сообщением о коммите.
Хотя я не уверен, что это именно то, за чем последовал оригинальный постер.

Оригинальный проект здесь :

  • Автоматическое резервное копирование - это хорошо, если у вас нет файлов, для которых вы хотите просмотреть добавочную историю.
  • Контроль версий отлично подходит для этой истории, но большинство инструментов ожидают, что автор будет вручную фиксировать свои изменения по пути.
  • => Бесшовное решение для управления исходным кодом сочетает в себе удобство автоматического резервного копирования и мощь управления версиями исходного кода.
...