Какой-либо Системе управления версиями нравится SVN, Мерзавец, или Подвижный позволил Вам “сохранить последнюю версию”, но не изменения? (такой что касается двоичных файлов)

В наших файлах проекта, если существуют двоичные файлы, такие как .doc, .xls, .jpg, и мы принимаем решение не сохранить их прошлые изменения (просто сохраняющий последнюю версию, в порядке), есть ли способ сказать SVN, Мерзавцу, или Подвижный или некоторый другой инструмент пропускать изменения для этих файлов или для конкретной папки?

Скажите, существует 4 МБ .doc файл, что я должен зарегистрироваться в сотне времен, но я действительно не забочусь так о его прошлых версиях. Таким образом, если система сохраняет 100 изменений его, это уже - 400 МБ... регистрируясь, 300 раз означает 1.2 ГБ для 1 файла, и это не хорошо. Только последняя версия хороша так, чтобы все могли синхронизировать к ней. Также я не хочу других людей, проверяют проект и имеют для проверки 20 ГБ материала. (будет Мерзавец и Подвижное содержание весь пересмотр в локальном репозитории каждого человека?)

10
задан nopole 14 June 2010 в 22:18
поделиться

8 ответов

Я знаю одну программу, которая это делает, но ответ вам не понравится.

Это Visual Sourcesafe. Установите флаг 'store only latest version' на файле, и он перестанет хранить историю.

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

3
ответ дан 3 December 2019 в 14:24
поделиться

Обратите внимание, что это не совсем ответ.

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

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

Например, в Mercurial я попробовал следующее: Сначала я загрузил спецификацию языка C # 3.0 в виде файла Word по этому адресу: http://download.microsoft.com/download/3/8/8/ 388e7205-bc10-4226-b2a8-75351c669b09 / CSharp% 20Language% 20Specification.doc

Затем я зафиксировал это в новом репозитории Mercurial. Размер до фиксации (пустой репозиторий) составлял 80 байтов, размер файла на диске составлял 2,387,968 байта, а размер репозитория после фиксации составлял 2,973,696 байта. Обратите внимание, что файл теперь фактически сохраняется дважды: один раз в моей рабочей копии (той, которую я могу редактировать), и один раз в моем репозитории как часть моей первоначальной фиксации.

Затем я открыл файл и изменил все вхождения 3.0 на 4.0 (без кавычек) и все вхождения C # на VB и сохранен. Затем я зафиксировал новую версию с однобуквенным комментарием. Размер репозитория после коммита теперь составляет 3,497,984 байта. Разница составляет 512 КБ (в репозитории задействованы некоторые фрагменты, следовательно, размер является точным значением в 512 КБ).

Если я сейчас снова открою файл, изменю только титульную страницу VB обратно на C #, сохраните и снова зафиксируйте, размер репозитория увеличивается на 276КБ, до 3,780,608 байт.

Как видите, при изменении не фиксируется полная копия файла, но, конечно, различия не находятся в диапазоне «10 КБ».

Предположим, что средний размер каждого различия, только для этого файла, будет несколько посередине между ними, скажем, в среднем до 50% между двумя значениями. Это означает, что 300 коммитов изменений в этот файл, в среднем 394 КБ, составляют 115 МБ. Это не так много

Я предлагаю следующее:

  • Прекратите быть скрягой, дисковое пространство дешево, по сравнению с головной болью, которую вы испытаете, когда кто-то скажет: «Я действительно хотел бы знать, как этот файл выглядел в последний раз. за неделю до того, как вы его испортили ".
17
ответ дан 3 December 2019 в 14:24
поделиться

Для вашей конкретной потребности, где вы можете удалить предыдущие версии, когда захотите, VCS ( Система контроля версий , сделанная так, чтобы никогда не теряла версия) не очень подходят.

Менеджер репозитория (который является более продвинутым решением, чем простой общий путь в файловой системе) - это то, что вы ищете.
(Например, Nexus Sonatype , если упомянуть только один)

2
ответ дан 3 December 2019 в 14:24
поделиться

Быстрая проверка цен на жесткие диски показывает, что внутренние диски емкостью 1 терабайт (ТБ) стоят около 75 долларов США каждый. Используя вашу математику, это 250 000 копий вашего файла размером 4 МБ, или $0,0003 за копию. Типичные накладные расходы программиста за час работы составляют около $100.

Что стоит дороже: хранить все версии этого файла или платить программисту за воссоздание старой версии, если вам когда-нибудь снова понадобится эта копия?

4
ответ дан 3 December 2019 в 14:24
поделиться

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

1
ответ дан 3 December 2019 в 14:24
поделиться

Это работа не для VCS, а для файловой системы, как сказал Кен.

Однако, если вам действительно нужна такая «функция», вы можете использовать механизм хуков , чтобы удалить предыдущие (скажем, старше трех коммитов) версии файла из истории.

3
ответ дан 3 December 2019 в 14:24
поделиться

В общем, нет: VCS предназначен для хранения всей истории. Однако с пространством не все потеряно; все названные вами системы будут хранить двоичные различия для каждой ревизии, а не полную копию всего файла. Это означает, что требуемое пространство часто будет гораздо меньше.

1
ответ дан 3 December 2019 в 14:24
поделиться

Если вам нужна только синхронизация файлов между компьютерами, используйте Dropbox.

Если вы используете контроль версий, то посмотрите, что написал Lasse V. Karlsen, дисковое пространство стоит дешево.

0
ответ дан 3 December 2019 в 14:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: