Git: Как создать локальное репо с символическими ссылками на главное репозиторий Git - PullRequest
4 голосов
/ 25 августа 2011

Я хотел бы создать репозиторий Git, в котором пользователи могут извлекать только файлы из репозитория Git и никогда не могут в него загружаться.Поскольку эти данные, клонированные в удаленное хранилище, не нуждались в изменении, я думаю о создании программных ссылок на основное хранилище для экономии места (данные будут дублироваться среди многих пользователей).

Могу ли я создать программные ссылки в моемлокальное репо к файлам в удаленном репо, когда я делаю клон Git?

например, с некоторым изменением git clone <path>/gitrepo .

... где gitrepo - это основной каталог, аКоманда должна создать мое локальное git-репо с символическими ссылками, указывающими на gitrepo.Контроль версий должен быть сохранен.Пока я не сделаю git pull, мой локальный репо должен сохраняться, даже если основной gitrepo продвинулся вперед.Git pull должен воссоздать символические ссылки, указывающие на последнюю версию основного репо.

Я пытаюсь заменить ln -s на «контролируемую версию ln -s"

Спасибо, РБ

1 Ответ

3 голосов
/ 25 августа 2011

Git делает это автоматически при локальном клонировании.Из справочной страницы git clone:

--local, -l

Когда репозиторий для клонирования с находится на локальной машине, этот флаг обходит обычный транспортный механизм "gitware" иклонирует репозиторий путем создания копии HEAD и всего, что находится в каталогах объектов и ссылок.Файлы в .git/objects/directory жестко связаны, чтобы сэкономить место, когда это возможно.Теперь это значение по умолчанию, если в исходном хранилище задан синтаксис /path/to/repo, так что это, по сути, опция «без операции».Чтобы принудительно копировать вместо жестких ссылок (что может быть желательно, если вы пытаетесь создать резервную копию своего хранилища), но при этом избегать обычного механизма передачи данных с поддержкой git, можно использовать --no-hardlinks.

Другим интересным флагом может быть -s:

--shared, -s

Когда хранилище для клонирования находится на локальном компьютере, вместо использования жестких ссылок, автоматическая настройка.git/objects/info/alternates для обмена объектами с исходным хранилищем.Результирующий репозиторий начинается без какого-либо собственного объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...