У меня есть особая ситуация, когда мне нужно работать над конкретным пакетом, состоящим из 2-х репозиториев, и при этом иметь возможность фиксировать / выдвигать каждое репо.
Вот упрощенный пример:
- repoA с dirs dirA , dirB , dirB / dir2
- repoB с dirs dirC , dirB / dir1
- Мне нужно работать с пакетом, содержащим: dirA , dirB , dirB / dir1 , dirC
Вот что я сделал:
- Я начал с клонирования обоих репозиториев.
- Затем я добавил в repoA клон dir файл .git / info / exclude, содержащий: dirB, dirC
- Затем я создал в repoA клон dir 2 символические ссылки на repoB dirB / dir1 и dirC.
- Наконец я удалил в репоА клон dir dirB / dir2.
Вот что я получаю в директории клонирования репо:
- dirB / dir1 (символическая ссылка на repoB)
- dirC (символическая ссылка на repoB)
git status
выдача удаленных файлов в dirB / dir2
Это хорошо для repoB, так как я могу без проблем фиксировать и отправлять свои изменения. Но для repoA, конечно, я не хочу фиксировать / толкать удаление dirB / dir2 ... Есть ли в git что-нибудь, позволяющее сохранять dir в индексе, но не отображать его в рабочем дереве?
Пока я вижу два возможных решения, которые нам не очень нравятся:
- создайте третий каталог, содержащий символические ссылки на нужные файлы в repoA и repoB ... но это вызовет много дополнительной работы, поскольку repoA содержит в действительности много директорий!
- создать выделенную ветку в репо из ветки разработки без dirB / dir2. Чтобы облегчить объединение в будущем, объедините новую ветвь с разработкой без удаления dirB / dir2. Не так хорошо, так как это заставило бы создать одну выделенную ветку пакета на ветку repoA, над которой нам нужно работать ...
Любая помощь будет с благодарностью O:)