Скрипт для удаления истории всех двоичных файлов в Git, без удаления самого файла - PullRequest
1 голос
/ 01 марта 2010

Скажем, у меня есть огромный репозиторий git, в котором есть множество swfs и изображений. Я хочу, чтобы они были включены в размещенный репозиторий github, но они не должны быть версионированы, и я не хочу хранить их где-то еще.

Каким самым простым способом я могу удалить их историю при каждом добавлении в репозиторий? ... Так что, в конце концов, у меня есть все swfs и изображения, но нет истории для них.

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

Ответы [ 2 ]

5 голосов
/ 01 марта 2010

Не прямой ответ, но я не уверен, что здесь есть проблема:

Если ваши swfs и файлы изображений не перемещаются, они будут иметь такой же SHA1 коммит после коммита. Они будут занимать одно и то же дисковое пространство и обращаться к одному и тому же BLOB-объекту.
согласно GitPro book :

* +1007 *

Объект «blob» - это не что иное, как кусок двоичных данных. Он не относится ни к чему другому и не имеет никаких атрибутов, даже имени файла.

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

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

2 голосов
/ 01 марта 2010

Невозможно удалить «историю», не разрушив целостность SHA1 всей временной шкалы репозитория. Это одна из сильнейших возможностей Git: каждый идентификатор коммита - это хеш, созданный на его полной исторической временной шкале.

Но, насколько мне известно, бинарные объекты хранятся в каком-то виде diff, поэтому они не будут тратить слишком много памяти - если это ваша задача.

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

...