[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