[newbies] git pull into subdirectory

Paul Wolneykien manowar на altlinux.org
Ср Ноя 12 19:58:58 MSK 2025


В 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



Подробная информация о списке рассылки devel-newbies