
Я пытаюсь преобразовать репозиторий Perforce(p4) в git (предпочтительно в Helix4Git, реализацию git-сервера от perforce).
Я свожу свою проблему к простому варианту использования, чтобы найти решение более крупной проблемы.
В P4 у меня есть один файл//depot/foo.txtчто составляет 10 МБ. Я «клонировал» его, используя команду merge P4, поэтому у меня есть один и тот же файл дважды в моем репозитории, называемый//депо/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 МБ). Теперь вот проблема:
я используюгит-p4для конвертации моего репозитория P4 в git. Сначала я клонирую его на свой локальный компьютер, а затем настраиваю git-remote и отправляю все, чтобы наконец получить это на своем сервере git.
Как я уже упоминал ранее, у меня на локальном диске есть 20 МБ, и когда я отправляю данные на свой сервер git, он также использует 20 МБ.
1) Если я клонирую файл в git, будет ли он физически клонирован и на сервере?
2) Есть ли вероятность, что git-p4 или сервер git обнаружит этот "клон" - что это тот же файл - и также использует внутренние ссылки? Либо сам сервер git, либо с помощью функции файловой системы (мягкая или жесткая ссылка и т. д.).
Дополнительный вопрос) Поможет ли здесь macOS APFS для сервера git?
Большое спасибо!
решение1
Когда вы переместите клонированные файлы в Git, они будут сохраненыв отдельности. Git хранит только содержимое файла и права доступа к файлу. Метаданные и идентификатор инода не отслеживаются.
Лучший вариант — добавить клон gitignore
или.git/info/exclude