git-p4 и огромные размеры файлов

Я пытаюсь преобразовать репозиторий Perforce(p4) в git (предпочтительно в Helix4Git, реализацию git-сервера по Perforce).

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

В P4 у меня есть один файл //depot/foo.txt, который составляет 10 МБ. Я "клонировал" его, используя команду слияния P4, поэтому у меня в одном репозитории дважды один и тот же файл, который называется //depot/bar.txt.

//depot
    .. foo.txt (10MB) [internal-id==> 4509b9a8.txt]
    .. bar.txt (10MB, clone of foo.txt) [internal-id==> 4509b9a8.txt]

Сервер P4 сохраняет файл один раз, используя две внутренние ссылки, чтобы уменьшить используемое дисковое пространство, поэтому используется всего 10 МБ. Хотя на локальном диске у меня было бы две физические копии (10+10=20 МБ). Теперь вот проблема:

Я использую git-p4, чтобы конвертировать мой репозиторий P4 в git. Сначала я клонирую его на свой локальный компьютер, а затем устанавливаю git-remote и отправляю все, чтобы, наконец, иметь его на моем git-сервере.

Как упоминалось ранее, у меня есть 20 МБ на локальном диске, и когда я отправляю его на мой git-сервер, он также использует 20 МБ.

1) Если я клонирую файл в git, физически ли он клонируется и на сервере?

2) Есть ли вероятность, что git-p4 или git-сервер обнаружат этот "клон" - что это один и тот же файл - и также использует ссылки внутри? Либо сам git-сервер, либо с помощью функции файловой системы (программная или жесткая ссылка и т. Д.).

Дополнительный вопрос) Поможет ли здесь MacOS APFS для сервера git?

Большое спасибо!

1 ответ

Когда вы перемещаете клонированные файлы в Git, они будут храниться отдельно. Git хранит только содержимое файла и права доступа к нему. Метаданные и идентификатор inode не отслеживаются.

Лучше всего добавить клона в gitignore или же .git/info/exclude

Ссылка: введите описание ссылки здесь

Другие вопросы по тегам