* [newbies] git pull into subdirectory
@ 2025-11-11 18:36 Alexander Lubyagin
2025-11-12 5:25 ` Anton Farygin
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Alexander Lubyagin @ 2025-11-11 18:36 UTC (permalink / raw)
To: devel-newbies
Добрый день.
Возник такой вопрос.
Во многих репозиториях Альта принят принцип - хранить исходники в
подкаталоге %name/%name/
Как оформить первый коммит, чтобы из удалённого репозитория свежие
коммиты подтягивались сразу в подкаталог по git fetch?
Вручную, у меня получилось так, для пакета mdless (markdown viewer in Ruby):
cd mdless
git init -b master .
git remote add upstream https://github.com/ttscoff/mdless
git remote -v
git fetch upstream
git merge -s ours --no-commit upstream/develop
git read-tree --prefix=mdless -u upstream/develop
git commit -m "Subtree merged in mdless/"
git remote add local /opt/gk/man/mdless
git remote -v
git push --set-upstream local master
ls -l mdless/
git ls-files | less
--
Однако, таким способом получается дублирующийся список файлов: в ./ и в
./mdless/
Я искал другие способы. Из найденных:
[1] Использование git subtree
[2] Использование git sparse checkout
[3] Использование git worktree
[4] Использование submodule
[5] Переименование файлов + filter-branch:
https://stackoverflow.com/a/4042965
Какой из вариантов наиболее правильный?
Я пробовал смотреть в имеющихся пакетах, но, бывает, changelog длиннее,
чем git log.
Или, всё же, правильный вариант - с gear-uupdate?
https://www.altlinux.org/Gear/gear-uupdate
--
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] git pull into subdirectory
2025-11-11 18:36 [newbies] git pull into subdirectory Alexander Lubyagin
@ 2025-11-12 5:25 ` Anton Farygin
2025-11-12 15:07 ` shad
2025-11-12 7:49 ` Alexander Lubyagin
2025-11-12 16:58 ` Paul Wolneykien
2 siblings, 1 reply; 7+ messages in thread
From: Anton Farygin @ 2025-11-12 5:25 UTC (permalink / raw)
To: devel-newbies
On 11/11/25 21:36, Alexander Lubyagin wrote:
> Добрый день.
>
> Возник такой вопрос.
>
> Во многих репозиториях Альта принят принцип - хранить исходники в
> подкаталоге %name/%name/
Не надо учиться плохому, учитесь хорошему.
Такая схема хранения исходников приводит к дополнительным действиям при
работе с апстримом.
Просто вынесите всё, что альтовое в отдельный каталог .gear а дерево
апстримных исходников пусть лежит как в апстриме - в корне проекта.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] git pull into subdirectory
2025-11-11 18:36 [newbies] git pull into subdirectory Alexander Lubyagin
2025-11-12 5:25 ` Anton Farygin
@ 2025-11-12 7:49 ` Alexander Lubyagin
2025-11-12 16:58 ` Paul Wolneykien
2 siblings, 0 replies; 7+ messages in thread
From: Alexander Lubyagin @ 2025-11-12 7:49 UTC (permalink / raw)
To: devel-newbies
11.11.2025 21:36, Alexander Lubyagin пишет:
> Во многих репозиториях Альта принят принцип - хранить исходники в
> подкаталоге %name/%name/
>
> Как оформить первый коммит, чтобы из удалённого репозитория свежие
> коммиты подтягивались сразу в подкаталог по git fetch?
Вроде, получилось:
$ cd mdless
$ git clone --separate-git-dir .git https://github.com/ttscoff/mdless mdless
URL: https://git-scm.com/docs/git-clone
P. S. Антон Фарыгин (rider@), спасибо за ответ - не могу на него
ответить, т.к. спам-фильтр Яндекса задерживает письма на сутки и дольше.
Прочитал в архиве списка рассылки.
--
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] git pull into subdirectory
2025-11-12 5:25 ` Anton Farygin
@ 2025-11-12 15:07 ` shad
2025-11-12 17:13 ` Anton Farygin
0 siblings, 1 reply; 7+ messages in thread
From: shad @ 2025-11-12 15:07 UTC (permalink / raw)
To: devel-newbies
12.11.2025 16:25, Anton Farygin пишет:
> Не надо учиться плохому, учитесь хорошему.
>
> Такая схема хранения исходников приводит к дополнительным действиям при
> работе с апстримом.
>
Добрый день, не поймите неправильно, а можно полюбопытствовать, а чем
регламентированно это "хорошее"?
Я не видел ни одного полиси утвержденного сообществом ALT Linux
обязывающего так собирать, возможно просмотрел, да и учитывая иногда
"криворукость" некоторых апстримов, сборка с гита влечет за собой
"героические победы на проблемами".
Справедливости ради, "пол сизифа" собрано с апстрим тарболов, часть
пакетов вооще старым методом собирается через src.rpm, а уж делать ли
дополнительные действия или не делать при работе с апстримом, мне
кажется решает тот кто собирает... понятно, что в приоритете сборка с
гита и по тегам желательно, ну а так всеж решает мантейнер пакета, как
ему собирать... или я не прав?
Мне очень интересна данная позия в сообществе :)
С уважением
---
Aleksandr Shamaraev (shad)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] git pull into subdirectory
2025-11-11 18:36 [newbies] git pull into subdirectory Alexander Lubyagin
2025-11-12 5:25 ` Anton Farygin
2025-11-12 7:49 ` Alexander Lubyagin
@ 2025-11-12 16:58 ` Paul Wolneykien
2025-11-12 17:46 ` Mikhail Efremov
2 siblings, 1 reply; 7+ messages in thread
From: Paul Wolneykien @ 2025-11-12 16:58 UTC (permalink / raw)
To: devel-newbies
В 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=...
> Вручную, у меня получилось так, для пакета mdless (markdown viewer in Ruby):
>
> cd mdless
> git init -b master .
> git remote add upstream https://github.com/ttscoff/mdless
> git remote -v
> git fetch upstream
> git merge -s ours --no-commit upstream/develop
> git read-tree --prefix=mdless -u upstream/develop
> git commit -m "Subtree merged in mdless/"
> git remote add local /opt/gk/man/mdless
> git remote -v
> git push --set-upstream local master
> ls -l mdless/
> git ls-files | less
>
> --
>
> Однако, таким способом получается дублирующийся список файлов: в ./ и в
> ./mdless/
>
> Я искал другие способы. Из найденных:
> [1] Использование git subtree
> [2] Использование git sparse checkout
> [3] Использование git worktree
> [4] Использование submodule
> [5] Переименование файлов + filter-branch:
> https://stackoverflow.com/a/4042965
>
> Какой из вариантов наиболее правильный?
> Я пробовал смотреть в имеющихся пакетах, но, бывает, changelog длиннее,
> чем git log.
>
> Или, всё же, правильный вариант - с gear-uupdate?
> https://www.altlinux.org/Gear/gear-uupdate
>
> --
>
> _______________________________________________
> devel-newbies mailing list
> devel-newbies@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-newbies
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] git pull into subdirectory
2025-11-12 15:07 ` shad
@ 2025-11-12 17:13 ` Anton Farygin
0 siblings, 0 replies; 7+ messages in thread
From: Anton Farygin @ 2025-11-12 17:13 UTC (permalink / raw)
To: devel-newbies
On 11/12/25 18:07, shad wrote:
>
>
> 12.11.2025 16:25, Anton Farygin пишет:
>> Не надо учиться плохому, учитесь хорошему.
>>
>> Такая схема хранения исходников приводит к дополнительным действиям
>> при работе с апстримом.
>>
>
> Добрый день, не поймите неправильно, а можно полюбопытствовать, а чем
> регламентированно это "хорошее"?
>
> Я не видел ни одного полиси утвержденного сообществом ALT Linux
> обязывающего так собирать, возможно просмотрел, да и учитывая иногда
> "криворукость" некоторых апстримов, сборка с гита влечет за собой
> "героические победы на проблемами".
>
> Справедливости ради, "пол сизифа" собрано с апстрим тарболов, часть
> пакетов вооще старым методом собирается через src.rpm, а уж делать ли
> дополнительные действия или не делать при работе с апстримом, мне
> кажется решает тот кто собирает... понятно, что в приоритете сборка с
> гита и по тегам желательно, ну а так всеж решает мантейнер пакета, как
> ему собирать... или я не прав?
>
> Мне очень интересна данная позия в сообществе :)
Единой позиции нет, всегда надо смотреть на то, какой апстрим.
Я бы предложил такой алгоритм выбора схемы ведения проекта:
1) upstream в git, сборка из git всегда приводит к нормальному
результату - > брать апстримное дерево git, добавлять в него .gear с
артефактами altlinux
2) upstream в git + небольшое количество submodules -> брать апстримное
дерево git, добавлять в него .gear с артефактами altlinux, submodules
мержить в основную историю и собирать из созданных тегов (поискать
скрипт update-submodules или что-то подобное).
3)) upstream в git + большое количество submodules -> брать апстримное
дерево git, добавлять в него .gear с артефактами altlinux, все
submodules паковать в отдельном тарболле (пример clickhouse)
4) upstream в git, сборка из git невозможна по каким-то веским причинам
(например в git отсутствует часть кода, которая есть только в тарболле)
- качать тарболл, импортировать его и собирать из тарболла
5) upstream в hg/svn/cvs и др. - > качать тарболл, импортировать его и
собирать из апстримного тарболла
6) без исходников (графика, датасеты, игровые паки и т.д.) очень
большого размера - > качать тарболл и собирать через src.rpm
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] git pull into subdirectory
2025-11-12 16:58 ` Paul Wolneykien
@ 2025-11-12 17:46 ` Mikhail Efremov
0 siblings, 0 replies; 7+ messages in thread
From: Mikhail Efremov @ 2025-11-12 17:46 UTC (permalink / raw)
To: devel-newbies
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
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-11-12 17:46 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-11 18:36 [newbies] git pull into subdirectory Alexander Lubyagin
2025-11-12 5:25 ` Anton Farygin
2025-11-12 15:07 ` shad
2025-11-12 17:13 ` Anton Farygin
2025-11-12 7:49 ` Alexander Lubyagin
2025-11-12 16:58 ` Paul Wolneykien
2025-11-12 17:46 ` Mikhail Efremov
devel@ where you _can_ ask
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel-newbies/0 devel-newbies/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel-newbies devel-newbies/ http://lore.altlinux.org/devel-newbies \
devel-newbies@lists.altlinux.org devel-newbies@lists.altlinux.ru devel-newbies@lists.altlinux.com
public-inbox-index devel-newbies
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel-newbies
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git