threads / discuss / 22284

git-describe recognize modified files

Subject: git-describe recognize modified files

## tl;dr

6 messages between Jan 19, 2010 and Jan 19, 2010.

replies: 5people: 4as markdown or json

tzachi perelstein· Jan 19, 2010, 09:53 UTC · lore

I use git-describe to form a build version automatically. This allows me to deliver temporary builds for testing without having to make manual tags for them. The only thing that bothers me about this is that from the output of git-describe I cannot tell if there are some modified files in tree or not. In both cases I will get the same version.

To solve this issue, in addition to git-describe, my do_version script also run git-status, and if there are "modified:" files then it concatenates the string "+dirty" to output of git-describe. This way by looking at the version I'm able to know whether a specific version is valid (checkout-able) or not.

It would be nice to have this option supported in git-describe IMO. I'm willing to implement that and submit a patch for review, but I'd like to hear your opinion first. 
Tzachi
      
Johannes Schindelin· Jan 19, 2010, 10:35 UTC · re: tzachi perelstein · lore

Re: git-describe recognize modified files

Hi,
On Tue, 19 Jan 2010, tzachi perelstein wrote:
Show 9 quoted lines
> I use git-describe to form a build version automatically. This allows me
> to deliver temporary builds for testing without having to make manual
> tags for them. The only thing that bothers me about this is that from
> the output of git-describe I cannot tell if there are some modified
> files in tree or not. In both cases I will get the same version. 
> 
> To solve this issue, in addition to git-describe, my do_version script
> also run git-status, and if there are "modified:" files then it
> concatenates the string "+dirty" to output of git-describe.

The problem is that this does not describe the exact version you used very well. If you are really serious about describing the exact state you described, make a tag (committing the changes to a detached HEAD first, if you do not want the changes in a real branch).

Ciao, Dscho

Andreas Krey· Jan 19, 2010, 12:21 UTC · re: Johannes Schindelin · lore

Re: git-describe recognize modified files

On Tue, 19 Jan 2010 11:35:41 +0000, Johannes Schindelin wrote: ...

Show 6 quoted lines
> > To solve this issue, in addition to git-describe, my do_version script
> > also run git-status, and if there are "modified:" files then it
> > concatenates the string "+dirty" to output of git-describe.
> 
> The problem is that this does not describe the exact version you used very 
> well.

I (and probably the original poster) don't care that much; for me the important information is that the binary (or whatever) was not built from the exact committed state. Thus the question is whether the second two lines of

 BUILDINFO=git-`git describe --abbrev=16 --always HEAD 2>/dev/null`
 git update-index -q --refresh
 test -z "`git diff-index --name-only HEAD --`" || BUILDINFO="$BUILDINFO.dirty"
(after GIT-VERSION-GEN) are worth to be integrated into git-describe?
(And whether it should also say '.dirty'
 when there are untracked files present.
 Or either for submodules.)
Andreas
Jakub Narebski· Jan 19, 2010, 12:49 UTC · re: Andreas Krey · lore

Re: git-describe recognize modified files

Andreas Krey <a.krey@gmx.de> writes:
Show 23 quoted lines
> On Tue, 19 Jan 2010 11:35:41 +0000, Johannes Schindelin wrote:
> ...
> > > To solve this issue, in addition to git-describe, my do_version script
> > > also run git-status, and if there are "modified:" files then it
> > > concatenates the string "+dirty" to output of git-describe.
> > 
> > The problem is that this does not describe the exact version you used very 
> > well.
> 
> I (and probably the original poster) don't care that much; for me the
> important information is that the binary (or whatever) was not built
> from the exact committed state. Thus the question is whether the
> second two lines of
> 
>  BUILDINFO=git-`git describe --abbrev=16 --always HEAD 2>/dev/null`
>  git update-index -q --refresh
>  test -z "`git diff-index --name-only HEAD --`" || BUILDINFO="$BUILDINFO.dirty"
> 
> (after GIT-VERSION-GEN) are worth to be integrated into git-describe?
> 
> (And whether it should also say '.dirty'
>  when there are untracked files present.
>  Or either for submodules.)
FYI it is integrated in git-describe since
  9f67d2e (Teach "git describe" --dirty option, 2009-10-21)
by Jean Privat (it should be present in 1.6.6, IIRC).
-- 
Jakub Narebski
Poland
ShadeHawk on #git
tzachi perelstein· Jan 19, 2010, 13:07 UTC · re: Jakub Narebski · lore

Re: git-describe recognize modified files

Show 6 quoted lines
> FYI it is integrated in git-describe since
> 
>   9f67d2e (Teach "git describe" --dirty option, 2009-10-21)
> 
> by Jean Privat (it should be present in 1.6.6, IIRC).
> 

Good news :) Thanks

      
tzachi perelstein· Jan 19, 2010, 12:59 UTC · re: Johannes Schindelin · lore

Re: git-describe recognize modified files

Show 25 quoted lines
> From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> To: tzachi perelstein <tzachi_perelstein@yahoo.com>
> Cc: git@vger.kernel.org
> Sent: Tue, January 19, 2010 12:35:41 PM
> Subject: Re: git-describe recognize modified files
> 
> Hi,
> 
> On Tue, 19 Jan 2010, tzachi perelstein wrote:
> 
> > I use git-describe to form a build version automatically. This allows me
> > to deliver temporary builds for testing without having to make manual
> > tags for them. The only thing that bothers me about this is that from
> > the output of git-describe I cannot tell if there are some modified
> > files in tree or not. In both cases I will get the same version. 
> > 
> > To solve this issue, in addition to git-describe, my do_version script
> > also run git-status, and if there are "modified:" files then it
> > concatenates the string "+dirty" to output of git-describe.
> 
> The problem is that this does not describe the exact version you used very 
> well.  If you are really serious about describing the exact state you 
> described, make a tag (committing the changes to a detached HEAD first, if 
> you do not want the changes in a real branch).
> 
Well yes, this is valid, but you will end up with a tag for every build... this goes way too far.
Consider the case where you have no modified files in your tree. The output of git-describe at some given point is 'v1.0.0-2-g123457' and during the build it becomes the build version. Now you make some changes, but before committing them you build, install, and run a test. During the second build, the output of git-describe remains the same 'v1.0.0-2-g123457' although it represent two different trees. This behavior looks like somewhat incomplete to me. It sounds reasonable to me to let git-describe have the option of indicating about modified files in tree, say 'v1.0.0-2-g123457-modified' or something similar. While 'v1.0.0-2-g123457' is something you and git can refer to (i.e. checkout), 'v1.0.0-2-g123457-modified' is not. By adding the "-modified" string, git tells you explicitly that it cannot fully describe the exact tree you're using.
      

← back to recent threads