Post by Ruediger MeierPost by Duy NguyenPost by Ruediger MeierHi,
I have a use case where I'd like to improve performance using "git
clone --depth". But I also need "git describe" working on that clone.
So something like
git clone --depth=describable
would be nice to have.
What does --depth=describable do?
I mean automatically getting the minimum depth which gives us the
history back to the last (annotated) tag. So that "git describe" and
possibly other project specific administrative scripts (like
git-version-gen or gitlog-to-changelog) would work safely on that
shallow clone.
That should be possible to do. But you need to define it more clearly
if you start working on it. If you set --depth=v1.7.0, but another
branch in the source repo does not cross v1.7.0, what should we get?
Full history of that branch?
Just thinking out loud. We could make git-describe work with fixed
depth (e.g. --depth=12). The server could be made to send the client
some extended sha-1 syntax to get to related tags from the cut points,
e.g. v1.7.0 = <cut point>~12^2~14^1~20. And git-describe could be
modified to make use of that information when it traverses down to the
cut point. But I'm not sure if it's worth doing.
Post by Ruediger MeierOr maybe --depth could just generally accept a revspec as argument
instead of number only. This would be more useful anyway IMO. Then
perhaps something like "last_tag" could be a general magic revspec,
probably useful for many other git commands too.
revspec is probably overkill. Take a look at
shallow.c:get_shallow_commits(). "cut at the first found tag" should
be easy to do, I think.
--
Duy