Re: Questions/investigations on git-subtree and tags
- From
Paul Campbell <pcampbell@kemitix.net>
- Date
- Mar 7, 2013, 11:00 UTC
- Message-ID
- <CALeLG_=YQDrgMfOoR_GyNRexWxDqQGhFubmaYwM6pqXJuLnO6A@mail.gmail.com>
- In-Reply-To
- <822188477.192374.1362651959144.JavaMail.root@openwide.fr>
On Thu, Mar 7, 2013 at 10:25 AM, Jeremy Rosen <jeremy.rosen@openwide.fr> wrote:
Show 49 quoted lines
> Hello everybody
>
>
> I am trying to use git-subtree to follow a subproject but I have a couple of problems and I am not sure if I am doing something wrong
>
> Basically I am trying to use a tag on the subproject as my "base" for the subproject but subtree doesn't seem to handle that properly
>
>
> my first attempt was to simply do
>
> "git subtree add --squash git://git.buildroot.net/buildroot 2013.02"
>
> but subtree refused, telling me that the SHA of the tag is not a valid commit.
> Ok it makes sense, though I think this is a very valid use-case...
>
> so I tried
>
> "git subtree add git://git.buildroot.net/buildroot 2013.02^{commit}"
>
> which was refused because git fetch can't parse the ^{commit} marker.
> Again it makes sense, but I really want to start from that tag.
>
>
> so I tried
>
> "git fetch git://git.buildroot.net/buildroot 2013.02"
> "git subtree add --squash FETCH_HEAD"
>
> which worked. Ok at that point I am slightly abusing git subtree, but it seems a valid usage
>
> except that this last attempt causes serious problems when trying to split out the tree again
>
> the call to "git commit-tree" within "git subtree split" complains that the SHA of the parent
> is not a valid commit SHA. Which is true, it's the SHA of the tag.
>
>
> At this point I am not sure if I am abusing subtree, if I have a legitimate but unimplemented use-case and how to
> fix/implement it.
>
> the squash-commit message only contains the SHA of the tag, should it contain the SHA of the commit ?
>
> "subtree split" can only handle commit SHA, should it somehow follow tag SHA too ? how ?
>
> this is probably a trivial fix for someone with good knowledge of git-subtree but i'm not there yet, so any hint would be welcomed
>
> Regards
>
> Jérémy Rosen
>Hi Jérémy,
Git subtree ignores tags from the remote repo.
To follow a project in a subdirectory I would use git-subtree add selecting a branch, not a tag, from the other repo. Then use git-subtree pull to keep yourself updated.
e.g.
To add:
git subtree add --prefix=$subdir $repo $branch
Then to update:
git subtree pull --prefix=$subdir $repo $branch
If you make any changes on the branch and wanted to push them back you could do that with:
git subtree pull --prefix=$subdir $repo2 $branch2
$repo2 and $branch2 would be different from $repo and $branch if you wanted to push to your own fork before submitting a pull request.
-- Paul [W] Campbell