Клон репозитория Git, исключая подкаталог - PullRequest
5 голосов
/ 23 ноября 2010

У меня есть Git-репозиторий с большой историей. Я хотел бы сделать это доступным для других, но один из каталогов в нем содержит собственный код, который не может быть распространен. Есть ли способ сделать клон репозитория (с историей), который исключает этот каталог?

Бонус: я также хотел бы иметь возможность объединить изменения в "открытый" код, сделанные в старом главном репозитории, в клон.

1 Ответ

1 голос
/ 24 ноября 2010

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

Вам нужно будет filter-branch настроить дерево. Скрипт должен будет изначально создать репозиторий, который является субмодулем внутри репозитория. Он должен будет фиксировать этот внутренний репозиторий всякий раз, когда происходит изменение, и корректировать ссылку на подмодуль в родительском объекте, фиксируя это также на этом уровне.

Теперь вы можете опубликовать репозиторий, и никто не сможет выполнить операцию подмодуля git, но это то, что вам нужно.

...