[newbies] git pull into subdirectory
Mikhail Efremov
sem на altlinux.org
Ср Ноя 12 20:46:16 MSK 2025
On Wed, 12 Nov 2025 19:58:58 +0300 Paul Wolneykien wrote:
> В Tue, 11 Nov 2025 21:36:19 +0300
> Alexander Lubyagin <lubyagin на yandex.ru> пишет:
>
> > Добрый день.
> >
> > Возник такой вопрос.
> >
> > Во многих репозиториях Альта принят принцип - хранить исходники в
> > подкаталоге %name/%name/
> >
> > Как оформить первый коммит, чтобы из удалённого репозитория свежие
> > коммиты подтягивались сразу в подкаталог по git fetch?
>
> В последнее время использую команду git subtree.
>
> Ранее же делал через -Xsubtree, то есть:
>
> git pull/merge --allow-unrelated-histories -Xsubtree=subdir/ ...
>
> После первого раза git потом сам туда складывает. Однако, чтобы любой
> из данных способов сработал, необходимо, чтобы subdir/ уже существовал
> _внутри git_. Для этого нужно сделать, например, вот так:
>
> mkdir subdir
> touch subdir/.gitignore
> git add subdir/.gitignore
> git commit -m "Prepare subdir for git://project.path/repo.git"
>
> И дальше уже git subtree или git pull --allow.. -Xsubtree=...
У меня почти все репо с апстримными исходниками в subtree, но я просто
готовлю subtree по инструкции с
https://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html
Никаких "touch subdir/.gitignore" при этом не требуется.
Потом мержу апстрим как git merge -X subtree=<subdir> <тэг>
Единственная проблема, которую я встречал при такой схеме: если в
дереве исходников апстрима есть каталог, имя которого совпадает с
именем subdir (а обычно это %name), то git'у может снести крышу при
мерже. В этом случае я просто переименовываю subdir в %{name}-src.
Впрочем, давно уже такого не видел, может git уже научился справляться
с этим.
--
WBR, Mikhail Efremov
Подробная информация о списке рассылки devel-newbies