2016-05-12 3 views
1

У меня есть рабочий каталог на сервере, с которым я могу получить доступ либо с интерактивным ssh, либо с монтированием моего дома с помощью sshfs, и я хотел бы создать голый репозиторий, чтобы начать совместное использование Это.git clone --bare from ssh: папка объектов пустая

Ведение

git clone --bare mount_point/path 

и

git clone --bare ssh://[email protected]/path 

дают два разных результата. В частности, основное отличие заключается в папках объектов. Первый имеет 00, 0b, ... подпапки и определенные файлы в подпапке pack. Второй вместо этого имеет только info и pack, а файлы в pack отличаются от первого. Как следствие, размеры двух клонированных годовых репозиториев различны.

Хотя, на обоих я могу успешно выполнить либо git log, либо, например, git diff.

Может ли кто-нибудь сказать мне, что происходит? Может ли быть, что git-clone over ssh сжимает больше объектов в репозитории? Или я теряю информацию где-то?

Большого спасибо

ответ

1

мерзавец оптимизирует клонировал хранилище хранилища, когда он имеет дело с хранилищами на один и ту же объемах/же coputers. Посмотрите на --no-hardlinks, --local и т. Д. Варианты git clone --help. На самом деле можно заставить его сделать «реальную копию», но обычно вам это не нужно.

Обновление: Хорошо, никаких жестких ссылок. Перед сетевым передачей git упаковывает объекты, отсутствующие на принимающей стороне, и эти пакеты сохраняются по мере их получения без распаковки. git gc делает то же самое. .git/objects/pack/ содержит упакованные предметы, как следует из названия. Чтобы просмотреть содержимое определенного файла пакета, используйте git verify-pack -v .git/objects/pack/pack-<smth>.idx. Проверьте this doc для учебника.

+0

На самом деле это не так, потому что рабочий каталог находится в другой файловой системе, поэтому в этом случае невозможно создать жесткие ссылки. Кроме того, случайно вы знаете, какие файлы внутри объектов/пакетов? – deandrade87