[devel] QI: git, экономия на трафике мнимая

Anton Farygin =?iso-8859-1?q?rider_=CE=C1_altlinux=2Ecom?=
Ср Янв 10 16:46:00 MSK 2007


Fr. Br. George wrote:
> On Sun, Jan 07, 2007 at 11:08:22PM +0300, Anton Farygin wrote:
>> работает ли у нас сейчас дельта между тарболлами ?
> По-видимому работает, как и для других файлов.

А вот я как посмотрю - не работает.

> 
>> Т.к. в данный момент сижу через GPRS, то объёмы трафика весьма заметны..
>> обновление остановил на 3-х мегабайтах..
>> по моим прикидкам трафик должен составлять не более ста килобайт.
> Ты уверен, что оба тридцатимегатайтных архива имеют
> одинаковую структуру? Мало ли, что там они у себя в upstream поменяли...
> Теоретически можно изготовить два тарболла с полностью идентичной
> файловой системой, дельта между которыми будет 100%.
> 
> Впрочем, это так, к слову; см. ниже.

Проверяется тривиально - xdelta между тарболлами.

> 
>> Возникает стойкое мнение, что перекачиваются файлы целиком (но в сжатом
>> виде), вместо дельт.
> Разумеется:
> $ git-diff HEAD^^ | awk '/ImageMagick-6.3.1-3.tar/,/ImageMagick.desktop/{print}'
> diff --git a/ImageMagick-6.3.1-3.tar b/ImageMagick-6.3.1-3.tar
> deleted file mode 100644
> index f4ceab0..0000000
> Binary files a/ImageMagick-6.3.1-3.tar and /dev/null differ
> diff --git a/ImageMagick-6.3.1-6.tar b/ImageMagick-6.3.1-6.tar
> new file mode 100644
> index 0000000..1eb2b27
> Binary files /dev/null and b/ImageMagick-6.3.1-6.tar differ
> diff --git a/ImageMagick.desktop b/ImageMagick.desktop
> 
> То есть это два разных файла: один ты удалил, другой завёл.

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

> 
>> с этим надо что-то сделать..
> Одно из двух:
> либо делать git-mv (хотя это всё равно без гарантии, см. выше),
> либо хранить таки распакованный архив (gear-srpmimport рулит).

Распакованный архив мне не удобно, а вот с git-mv надо посмотреть будет.

Но судя по всему когда-то такие фокусы работали и перестали работать с
какого-то времени. Может быть нужно соблюдать порядок ? (сначала add,
потом rm) ?

Хотя я сомневаюсь. Есть ещё варианты рещения этого вопроса ? как git
заставить понимать, что xxx-1.0 и xxx-1.1 это один и тот же файл ?

Rgds,
Rider




Подробная информация о списке рассылки Devel