git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git clone --depth and git describe

From
Duy Nguyen <pclouds@gmail.com>
Date
May 10, 2013, 10:48 UTC
Message-ID
<CACsJy8CsB06LTzGsEyM7FGeazq9BiYsbA4_JyiMa_SwPSMHV_Q@mail.gmail.com>
In-Reply-To
<201305101042.04232.sweet_f_a@gmx.de>
On Fri, May 10, 2013 at 3:42 PM, Ruediger Meier <sweet_f_a@gmx.de> wrote:
Show 20 quoted lines
> On Friday 10 May 2013, Duy Nguyen wrote:
>> On Fri, May 10, 2013 at 6:07 AM, Ruediger Meier <sweet_f_a@gmx.de>
> wrote:
>> > Hi,
>> >
>> > 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.

> Or 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

Previous: Ruediger Meier
Message 4 of 4 in “git clone --depth and git describe”
  1. Ruediger MeierMay 9, 2013
  2. Duy NguyenMay 10, 2013
  3. Ruediger MeierMay 10, 2013
  4. Duy NguyenMay 10, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.