Re: Missing tags in my local stable git repo

From: Greg Kroah-Hartman
Date: Mon Dec 10 2012 - 16:18:46 EST


On Mon, Dec 10, 2012 at 03:44:34PM -0500, Steven Rostedt wrote:
> On Mon, 2012-12-10 at 11:30 -0800, Linus Torvalds wrote:
>
> > Any tree that is an alternate and ever has *any* objects in it that
> > can become unreachable is a really really really bad idea.
>
> The only alternates that I use are my local copies of stable and your
> tree, which should always be safe.
>
> > Also, you should never *ever* make an alternate object store be
> > *another* alternate object store, and I think that may be the problem
> > in your case. Iirc git doesn't follow alternates recursively. So what
> > can happen is that you got objects in the "middle" alternate, that
> > then get pruned away by "git gc" (because they exist in the origin
> > repository), but they got pruned away from the furthest alternate in
> > the meantime, and now the objects are "two hops" away, and will not
> > ever be seen.
>
> OK, this may be my issue, as my stable.git has my copy of your tree as
> an alternate. Maybe I can merge the two trees. Although I'm not exactly
> sure how to. As I have my copies as both alternates as well as remotes
> for my working repos, to get them to pull everything in with a remote
> update. I have in my copy of the stable.git tree the following in the
> config file:
>
> [remote "stable"]
> url = git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
> fetch = +refs/heads/*:refs/heads/*
>
> Otherwise I don't get the updates from stable when I do a remote fetch
> of my local copies. Would something like this work?
>
> [remote "origin"]
> fetch = +refs/*:refs/*
> mirror = true
> url = git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> [remote "stable"]
> url = git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
> fetch = +refs/heads/*:refs/heads/*
>
> That is, if I have a single linus-stable.git repo that all my other
> repos use as an alternate and a remote, I could have this repo updated
> with:
>
> git fetch
> git remote update stable
>
> and all my other repos will get all the updates from both your tree and
> the stable tree with a single remote update of this copy?
>
> Am I making any sense? ;-)

Kind of, but would would be even easier is if you just have one
"origin", pointing at linux-stable.git, and then every so often just do:
git checkout master
git pull git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

As the master branch of linux-stable.git always is a "clean" linux.git
tree, although it might lag a few -rc releases back if I have forgotten
to update it recently. When it does get updated, all should be fine as
the master branch has no merges from anything else, so it's just a
fast-forward.

That might be simpler overall than the different repos to be pulling
from in different ways.

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/