Git теги поддеревьев - PullRequest
       5

Git теги поддеревьев

6 голосов
/ 23 января 2010

Я хочу использовать объединение поддеревьев, чтобы вытащить удаленный проект в каталог в моем собственном дереве git. Я следовал инструкциям здесь: с использованием объединения поддеревьев

Но я не уверен, как оформить заказ. Я предполагаю, что это распространенный запрос - вы хотите добавить внешний проект, но получите безопасную версию исходного кода с тегами. Решение слияния поддеревьев прекрасно работает, но я не уверен, как получить нужный тег? Люблю мерзавца, но иногда у меня болит голова ....

Ответы [ 3 ]

3 голосов
/ 23 января 2010

Когда вы наберете git tag, вы получите список всех тегов в вашем хранилище. Здесь также отображаются удаленные теги, и я не знаю, могут ли они конфликтовать (не проверял), и как проверить, какие теги были импортированы в ваш репозиторий.

Но то, что я проверил, так это то, что когда вы добавляете удаленное приложение, а оно извлекается из другого проекта, вы видите, какие теги импортированы. Затем вы можете объединить с этим тегом, например:

git merge -s ours --no-commit v0.1.2 # instead of: Bproject/master (2)
git read-tree --prefix=dir-B/ -u v0.1.2 # instead of: Bproject/master (3)

и должно работать.

Надеюсь, это немного поможет, но я не настолько продвинут в git, как хотелось бы: -)

2 голосов
/ 03 февраля 2012

GitHub использует HowTo для kernel.org: http://help.github.com/subtree-merge/

0 голосов
/ 14 июня 2017

Я сделал это для примера проекта на Github , который называется hesco / hesco-weave следующим образом:

Я использовал команды curl, jq , cut и tail в следующих примерах, поэтому их нужно иметь перед запуском примеров.

Первый , найдены два последних тега проекта:

me@ubuntu: ~ $ curl -s https://api.github.com/repos/hesco/hesco-weave/git/refs/tags | jq -r ".[].ref" | cut -d "/" -f 3
v0.1
v0.2
v0.3
v0.4
v0.5
v0.6
v0.7
v0.8
v0.8.6
v0.8.7

me@ubuntu: ~ $ curl -s https://api.github.com/repos/hesco/hesco-weave/git/refs/tags | jq -r ".[].ref" | cut -d "/" -f 3 | tail -n 3
v0.8.6
v0.8.7

Или, если у вас есть проверенная версия проекта:

me@ubuntu: ~/github/hesco-weave (master) $ git remote -v
origin  https://github.com/hesco/hesco-weave.git (fetch)
origin  https://github.com/hesco/hesco-weave.git (push)
me@ubuntu: ~/github/hesco-weave (master) $ git tag -l
v0.1
v0.2
v0.3
v0.4
v0.5
v0.6
v0.7
v0.8
v0.8.6
v0.8.7

me@ubuntu: ~/github/hesco-weave (master) $ git tag -l | tail -n 2
v0.8.6
v0.8.7

Ша ссылок следующие:

me@linux: ~ $ git ls-remote | tail -n 2
be74d8368acd4815b6863daded46a232944e0d84  refs/tags/v0.8.6
9181306caa304b4cf8b3764b1446c0c4006833d8  refs/tags/v0.8.7

Второй , git-репозиторий создан:

me@linux: ~  $ mkdir -p ~/test
me@linux: ~  $ cd ~/test
me@linux: ~/test  $ git init
Initialized empty Git repository in ~/test/.git/
me@linux: ~/test  $ touch README.md
me@linux: ~/test  $ git add .
me@linux: ~/test  $ git commit -m "README.md added"
[master (root-commit) b1ac90e] README.md added
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md
me@linux: ~/test (master) $ git log
commit 19c0570a414c4fd1635444b7a937dfc41c93a847
Author: Me <me@linux.me>
Date:   Wed Jun 14 13:02:05 2017 +0200

README.md added

Третий , тег v0.8.6 хранилища Github добавляется в созданное хранилище как поддерево:

me@linux: ~/test (master) $ git subtree add --squash --prefix=weave https://github.com/hesco/hesco-weave.git v0.8.6

git fetch https://github.com/hesco/hesco-weave.git v0.8.6
warning: no common commits
remote: Counting objects: 543, done.
remote: Compressing objects: 100% (193/193), done.
remote: Total 543 (delta 306), reused 536 (delta 306), pack-reused 0
Receiving objects: 100% (543/543), 93.19 KiB | 0 bytes/s, done.
Resolving deltas: 100% (306/306), done.
From https://github.com/hesco/hesco-weave
 * tag               v0.8.6     -> FETCH_HEAD
Added dir 'weave'

Информация о трассировке:

me@linux: ~/test (master) $ git log
commit e5dc318c4437cd22ebddb9e82e8c419aef72a781
Merge: b1ac90e 19c0570
Author: me <me@linux.me>
Date:   Wed Jun 14 13:02:25 2017 +0200

    Merge commit '19c0570a414c4fd1635444b7a937dfc41c93a847' as 'weave'

commit 19c0570a414c4fd1635444b7a937dfc41c93a847
Author: me <me@linux.me>
Date:   Wed Jun 14 13:02:25 2017 +0200

    Squashed 'weave/' content from commit be74d83

    git-subtree-dir: weave
    git-subtree-split: be74d8368acd4815b6863daded46a232944e0d84

commit b1ac90efbfe5978bac52984c29e6ec7904ed9a75
Author: me <me@linux.me>
Date:   Wed Jun 14 13:02:05 2017 +0200

    README.md added

Наконец, , поддерево переплетения с более новым тегом v0.8.7 объединяется с git subtree pull:

me@linux: ~/test (master) $ git subtree pull --squash --prefix=weave https://github.com/hesco/hesco-weave.git v0.8.7

warning: no common commits
remote: Counting objects: 548, done.
remote: Compressing objects: 100% (195/195), done.
remote: Total 548 (delta 311), reused 541 (delta 309), pack-reused 0
Receiving objects: 100% (548/548), 90.50 KiB | 0 bytes/s, done.
Resolving deltas: 100% (311/311), done.
From https://github.com/hesco/hesco-weave
 * tag               v0.8.7     -> FETCH_HEAD
Merge made by the 'recursive' strategy.
 weave/Changelog     | 1 +
 weave/Modulefile    | 2 +-
 weave/README.md     | 2 +-
 weave/metadata.json | 2 +-
 4 files changed, 4 insertions(+), 3 deletions(-)

Информация о трассировке:

me@linux: ~/test (master) $ git log
commit 9116e133c8d84de1df9883a8b5558a2350ebc86e
Merge: e5dc318 eb2e273
Author: me <me@linux.me>
Date:   Wed Jun 14 13:03:16 2017 +0200

    Merge commit 'eb2e2733a75d59eb1adebf4755d5b11cb74e2b98'

commit eb2e2733a75d59eb1adebf4755d5b11cb74e2b98
Author: me <me@linux.me>
Date:   Wed Jun 14 13:03:16 2017 +0200

    Squashed 'weave/' changes from be74d83..9181306

    9181306 make release used to update version to v0.8.7
    3871cf5 Update changelog, tag v0.8.6, fix link in README
    REVERT: be74d83 Update changelog, tag v0.8.6, fix link in README

    git-subtree-dir: weave
    git-subtree-split: 9181306caa304b4cf8b3764b1446c0c4006833d8

commit e5dc318c4437cd22ebddb9e82e8c419aef72a781
Merge: b1ac90e 19c0570
Author: me <me@linux.me>
Date:   Wed Jun 14 13:02:25 2017 +0200

    Merge commit '19c0570a414c4fd1635444b7a937dfc41c93a847' as 'weave'

commit 19c0570a414c4fd1635444b7a937dfc41c93a847
Author: me <me@linux.me>
Date:   Wed Jun 14 13:02:25 2017 +0200

    Squashed 'weave/' content from commit be74d83

    git-subtree-dir: weave
    git-subtree-split: be74d8368acd4815b6863daded46a232944e0d84

commit b1ac90efbfe5978bac52984c29e6ec7904ed9a75
Author: me <me@linux.me>
Date:   Wed Jun 14 13:02:05 2017 +0200

    README.md added


me@linux: ~/test (master) $ ll
total 4
-rw-rw-r-- 1 me me    0 Jun 14 13:01 README.md
drwxrwxr-x 8 me me 4096 Jun 14 13:03 weave
...