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
Ссылка: введите описание ссылки здесь