Работайте с git над subdir из upstream, сохраняя возможности слияния в такте - PullRequest
0 голосов
/ 22 мая 2019

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

Пример: Upstream использует настройку monorepo с определенным подкаталогом для project/xyz. Я хотел бы иметь возможность разделить этот каталог на отдельную ветку или репо, чтобы содержимое project/xyz находилось в корне новой ветки или репо. Я сделаю модификации здесь. Но я также хотел бы иметь возможность периодически объединять изменения, которые были внесены вверх по течению, обратно в мою ветку или репо, сохраняя историю в такте.

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

Я посмотрел на git subtree, но, насколько я понимаю, он работает, но похож на подмодуль, где подкаталог проекта указывает на другой репозиторий. Это не то, чего я хочу (я должен был бы изменить исходный проект, что я не могу сделать, и предоставить всем этим коммиттерам также доступ на запись в мое репо).

Я также посмотрел на git filter-branch, но он создает новые хеши коммитов и поэтому лишает возможности слияния из апстрима снова.

У кого-нибудь есть рабочий процесс для этого? Это возможно только с Git? Кто-нибудь может описать сценарий, который мог бы сделать эту работу?

1 Ответ

0 голосов
/ 22 мая 2019

Если размер клонированного проекта не является проблемой, вы можете избежать неприятностей с так называемой «разреженной проверкой» : в основном эта функция позволяет вам иметь всеистория в локальном клоне, но проверка только выбранного подмножества каталогов.

Коммиты, которые будут записаны в этом репо, все еще "нормальны" в том смысле, что они будут включать в себя полное состояние проекта.Другими словами, ваше так называемое рабочее дерево - место, где извлекаются файлы проекта, будет поддерживать ограниченный обзор всего проекта.

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