Эффективное хранение бинарных файлов в репозитории git - PullRequest
8 голосов
/ 28 апреля 2009

Я хотел бы иметь git-репозиторий, который состоит в основном из двоичных файлов.

Мне нужно следить за измененными, добавленными и удаленными файлами в хранилище, но я не хочу, чтобы git версировал содержимое самих файлов.

Другими словами, мне просто нужно, чтобы git отслеживал изменения (журнал изменений), но не содержимое.

Возможно ли это даже с помощью git?

Должен ли я использовать что-то еще для этого?

Ответы [ 5 ]

13 голосов
/ 22 апреля 2011

Из @ ответа Тобу на этот связанный вопрос :

Чтобы создавать версии и распространять двоичные файлы, не сохраняя их в git, попробуйте git-annex .

9 голосов
/ 28 апреля 2009

git - это трекер контента, поэтому, если вы не хотите отслеживать контент, он звучит так, как будто он не подходит для работы. Однако я не уверен, как именно вы будете отслеживать изменения в файлах, не отслеживая их содержимое.

2 голосов
/ 29 апреля 2009

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

1 голос
/ 29 апреля 2009

Может быть, я не понимаю ваш вопрос, но что если вы сохраните в текстовом файле метку времени всех файлов? Затем вы можете сохранить в системе управления версиями только этот файл и позволить вашей VCS различать его разные версии.

0 голосов
/ 09 апреля 2015

но я не хочу, чтобы git версировал содержимое самих файлов.

Это именно то, что делает Git Large File Storage (LFS) (GitHub, апрель 2015 г.).

Проект git-lfs (см. git-lfs.github.com ) и протестирован с сервером, поддерживающим его : lfs-test-server :
Вы можете хранить метаданные только в git-репо, а большой файл - в другом месте.

https://cloud.githubusercontent.com/assets/1319791/7051226/c4570828-ddf4-11e4-87eb-8fc165e5ece4.gif

  • Большие файлы синхронизируются отдельно с настраиваемым LFS-сервером Git через HTTPS, поэтому вы не ограничены в том, куда вы помещаете свой Git-репозиторий.

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

  • Метаданные, хранящиеся в Git, можно расширять для будущего использования. В настоящее время он содержит хэш содержимого файла и размер файла, поэтому клиенты могут отображать индикатор выполнения во время загрузки или отказаться от загрузки большого объема.

...