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

Re: help with git usage

From
DSDirk Süsserott <newsletter@dirk.my1.cc>
Date
May 8, 2008, 20:01 UTC
Message-ID
<48235C02.9010808@dirk.my1.cc>
In-Reply-To
<200805072242.m47Mg1o0015578@rs40.luxsci.com>
Hi,

what about using git-describe? At work we use sth. similar to the following script. Let's call it 'git-stamp':

------------- #!/usr/bin/bash

if [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ]; then
    here=$(pwd)
    topdir=$(git rev-parse --show-cdup)
    cd ${topdir:-'./'}
    desc=$(git describe)
    if [ $(git diff-index --name-only HEAD | wc -l) -ne 0 ]; then
        desc="$desc-dirty"
    fi
    cd $here
    echo $desc
    exit 0;
else
    echo "Not inside a git working tree."
    exit 1;
fi
-------------

Basically it outputs the output of 'git-describe'. When something whithin your working dir is currently *not* checked in, it outputs "$(git-describe)-dirty".

Some sort of "-D$(git-stamp)" compiler switch would do the thing. Depending on your makefile or scons-script this would yield to a complete recompile of everything when only one file has changed.

In our environment we patch $(git-stamp) into some "version.c" so the whole application only gets recompiled when version.c has changed.

HTH,
    Dirk
Daniel Quinlan schrieb:
Show 66 quoted lines
> Thanks for your earlier responses, they were very helpful.
>
> On Apr 30, 2008, at 1:39 AM, Jakub Narebski wrote:
>
>> Daniel Barkalow <barkalow@iabervon.org> writes:
>>
>>> On Tue, 29 Apr 2008, Daniel Quinlan wrote:
>>>
>>>> I've been trying to use git for awhile now, (and I've read a lot
>>>> of documentation, though maybe my comprehension has not been high
>>>> enough) but there are several operations which I can't figure out:
>>
>> Many of answers to your questions can be found on GitFaq,
>> http://git.or.cz/gitwiki/GitFaq
>
> I should have read this earlier.  I don't really understand the
> details, but I get the idea:  make the central repository bare.
>
>>
>
>>>> 3) Similarly, I can't use the little context diffs I can see in
>>>> git-gui -- I need to see side by side comparisons; I've become
>>>> accustomed to tkdiff.  It seems like git mergetool knows how to do
>>>> that in some restricted circumstances, but I want to do it outside
>>>> the context of a merge.
>>>
>>> This I don't know, but you can get particular files from particular
>>> commits output with "git show <commit>:<path>", and you can likely wire
>>> something up.
>>
>> From the various graphical comparison tools, Meld has supposedly Git
>> support (http://meld.sourceforge.net/).  Supposedly only because I
>> have not tested this; see
>> http://git.or.cz/gitwiki/InterfacesFrontendsAndTools#head-00fbd1ac45fe93dac4653cad3639b3df73d8657e 
>>
>>
>
> I found no mention of git on the meld man page or in the meld mailing 
> list.
>
> Here's a (perhaps naive) perl script which uses "git show" and wraps 
> around
> the original tkdiff.  Other cvs users might find it useful, though it 
> can surely
> be improved.
>
>
>
>
>
> I'm looking for a way to embed some identifying information about version
> into compiled programs.  I hasten to add that I am not looking to 
> expand RCS-like
> tags.  Unlike CVS/RCS, git provides a single value that characterizes 
> the whole
> distribution, at least if everything is committed.  So, something like 
> "git log | head -1 | awk '{print $2}'"
> probably provides a value which I can embed into executables and 
> libraries, tying
> them to a particular source configuration.  I'm just curious if 
> there's a better approach
> to getting the commit hash.
>
> -- danq
>
>
Previous: Julian PhillipsNext: Jakub Narebski
Message 6 of 12 in “help with git usage”
  1. Daniel QuinlanApr 29, 2008
  2. Daniel BarkalowApr 29, 2008
  3. Jakub NarebskiApr 30, 2008
  4. Daniel QuinlanMay 7, 2008
  5. Julian PhillipsMay 8, 2008
  6. Dirk SüsserottMay 8, 2008
  7. Jakub NarebskiMay 8, 2008
  8. Matt GrahamApr 30, 2008
  9. Andreas EricssonApr 30, 2008
  10. Richard QuirkApr 30, 2008
  11. Jakub NarebskiApr 30, 2008
  12. Richard QuirkApr 30, 2008

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.