В наших файлах проекта, если существуют двоичные файлы, такие как .doc, .xls, .jpg, и мы принимаем решение не сохранить их прошлые изменения (просто сохраняющий последнюю версию, в порядке), есть ли способ сказать SVN, Мерзавцу, или Подвижный или некоторый другой инструмент пропускать изменения для этих файлов или для конкретной папки?
Скажите, существует 4 МБ .doc файл, что я должен зарегистрироваться в сотне времен, но я действительно не забочусь так о его прошлых версиях. Таким образом, если система сохраняет 100 изменений его, это уже - 400 МБ... регистрируясь, 300 раз означает 1.2 ГБ для 1 файла, и это не хорошо. Только последняя версия хороша так, чтобы все могли синхронизировать к ней. Также я не хочу других людей, проверяют проект и имеют для проверки 20 ГБ материала. (будет Мерзавец и Подвижное содержание весь пересмотр в локальном репозитории каждого человека?)
Я знаю одну программу, которая это делает, но ответ вам не понравится.
Это Visual Sourcesafe. Установите флаг 'store only latest version' на файле, и он перестанет хранить историю.
Если вам нужна эта функция в приличном SCM, я бы рекомендовал вообще не помещать файл в SCM, а хранить его в другом месте, например, в решении для управления документами или даже просто в общем файловом ресурсе.
Обратите внимание, что это не совсем ответ.
Если я откажусь от обсуждения неправильной версии файла для потомков, я прокомментирую хотя бы одну часть вашего вопроса, что может заставить вас пересмотреть решение о сохранении всех ревизий файла в репозитории.
Системы контроля версий обычно не хранят весь файл для каждой новой ревизии, они сохраняют изменения. В зависимости от системы иногда у вас может быть полная копия файла, но большинство ревизий будут только изменениями.
Например, в 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 МБ. Это не так много
Я предлагаю следующее:
Для вашей конкретной потребности, где вы можете удалить предыдущие версии, когда захотите, VCS ( Система контроля версий , сделанная так, чтобы никогда не теряла версия) не очень подходят.
Менеджер репозитория (который является более продвинутым решением, чем простой общий путь в файловой системе) - это то, что вы ищете.
(Например, Nexus Sonatype , если упомянуть только один)
Быстрая проверка цен на жесткие диски показывает, что внутренние диски емкостью 1 терабайт (ТБ) стоят около 75 долларов США каждый. Используя вашу математику, это 250 000 копий вашего файла размером 4 МБ, или $0,0003 за копию. Типичные накладные расходы программиста за час работы составляют около $100.
Что стоит дороже: хранить все версии этого файла или платить программисту за воссоздание старой версии, если вам когда-нибудь снова понадобится эта копия?
Основная обязанность систем контроля версий - хранить историю изменений, поэтому я не думаю, что это возможно. Зачем использовать контроль версий, если вам нужна только последняя версия?
Это работа не для VCS, а для файловой системы, как сказал Кен.
Однако, если вам действительно нужна такая «функция», вы можете использовать механизм хуков , чтобы удалить предыдущие (скажем, старше трех коммитов) версии файла из истории.
В общем, нет: VCS предназначен для хранения всей истории. Однако с пространством не все потеряно; все названные вами системы будут хранить двоичные различия для каждой ревизии, а не полную копию всего файла. Это означает, что требуемое пространство часто будет гораздо меньше.
Если вам нужна только синхронизация файлов между компьютерами, используйте Dropbox.
Если вы используете контроль версий, то посмотрите, что написал Lasse V. Karlsen, дисковое пространство стоит дешево.