automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] {maint} repo: don't commit generated files in the git reposi


From: Jim Meyering
Subject: Re: [PATCH] {maint} repo: don't commit generated files in the git repository anymore
Date: Fri, 09 Dec 2011 22:25:45 +0100

Stefano Lattarini wrote:
...
>> And all of that is duplicated in the ChangeLog file diffs below.
>>
>> Are you interested in generating ChangeLog from git logs?
>>
> Absolutely, but that's for a later change.  Also, before going down that

Glad to hear it.

> road, I'd like to have a vim syntax file able to highlight GNU-like
> ChangeLog syntax in git messages (so, without "date + author" lines and
> without leading tabs).  I might hack one up myself as a "last resort",
> but I'd rather steal something pre-existing :-)
>
>> > diff --git a/Makefile.am b/Makefile.am
>> > index 51eeb23..4e8d13e 100644
>> > --- a/Makefile.am
>> > +++ b/Makefile.am
>
> [SNIP] more suggestions I've followed.
>
>> > +## times in the past, when we used to keep the generated Makefile.in
>> > +## committed into the automake's git repository.
>>
>> s/the.*repository/version-control Makefile.in/
>>
> You mean "version-controlled Makefile.in"?

No.  I meant to remove the "keep", too.  See below.

> Subject: [PATCH] devel: help in comparing Makefile.in from different commits
>
> Now that the generated Makefile.in, configure and aclocal.m4 files
> are no longer committed in Automake's git repository, a simple
> "git diff" or "git log" no longer shows if and how a change in
> Automake results in changes to the Makefile.in files and/or
> configure script of its own build system.  Still, the ability to
> peek so easily at such differences had proved itself quite useful

s/had/has/

> in the past, often revealing inconsistencies and blunders, and
> sometimes even bugs; so it would be a pity to lose that altogether.
>
> With this change, we add a new maintainer recipe that re-introduces
> much of that capability, by generating and comparing on the fly the
> Makefile.in, configure and aclocal.m4 derived from two arbitrary
> commits of the Automake repository.
>
> * Makefile.am (autodiffs, compare-autodiffs): New phony targets.
> ---
>  ChangeLog   |   17 ++++++++++++++
>  Makefile.am |   69 
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 86 insertions(+), 0 deletions(-)
>
> diff --git a/ChangeLog b/ChangeLog
> index 5c07354..99b1248 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,5 +1,22 @@
>  2011-12-09  Stefano Lattarini  <address@hidden>
>
> +     devel: help in comparing Makefile.in from different commits
> +     Now that the generated Makefile.in, configure and aclocal.m4 files
> +     are no longer committed in Automake's git repository, a simple
> +     "git diff" or "git log" no longer shows if and how a change in
> +     Automake results in changes to the Makefile.in files and/or
> +     configure script of its own build system.  Still, the ability to
> +     peek so easily at such differences had proved itself quite useful
> +     in the past, often revealing inconsistencies and blunders, and
> +     sometimes even bugs; so it would be a pity to lose that altogether.
> +     With this change, we add a new maintainer recipe that re-introduces
> +     much of that capability, by generating and comparing on the fly the
> +     Makefile.in, configure and aclocal.m4 derived from two arbitrary
> +     commits of the Automake repository.
> +     * Makefile.am (autodiffs, compare-autodiffs): New phony targets.
> +
> +2011-12-09  Stefano Lattarini  <address@hidden>
> +
>       repo: don't commit generated files in the git repository anymore
>       It has been quite some time since autoconf and libtool have stopped
>       committing the generated autotools files in their git repositories,
> diff --git a/Makefile.am b/Makefile.am
> index 51eeb23..b7fa29a 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -604,6 +604,75 @@ path-check: distdir
>         rm -rf $(distdir); \
>         exit $$estatus
>
> +## Visually comparing differences between the Makefile.in files in the

s/ the//

> +## automake's own build system as generated in two different branches might
> +## help to catch bugs and blunders.  This has already happened a few times
> +## in the past, when we used to keep version-control Makefile.in.

Change the preceding line to this: (s/keep //)

   ## in the past, when we used to version-control Makefile.in.

> +autodiffs:
> +     @set -u; \
> +      NEW_COMMIT=$${NEW_COMMIT-"HEAD"}; \
> +      OLD_COMMIT=$${OLD_COMMIT-"HEAD~1"}; \
> +      am_gitdir='$(abs_top_srcdir)/.git'; \
> +      get_autofiles_from_rev () \
> +      { \
> +          rev=$$1 dir=$$2 \
> +            && echo "$@: will get files from revision $$rev" \
> +            && git clone -q --depth 1 "$$am_gitdir" tmp \
> +            && cd tmp \
> +            && git checkout -q "$$rev" \
> +            && echo "$@: bootstrapping $$rev" \
> +            && $(SHELL) ./bootstrap \
> +            && echo "$@: copying files from $$rev" \
> +            && makefile_ins=`find . -name Makefile.in` \
> +            && (tar cf - configure aclocal.m4 $$makefile_ins) | \
> +               (cd .. && cd "$$dir" && tar xf -) \
> +            && cd .. \
> +            && rm -rf tmp; \
> +      }; \
> +      address@hidden \
> +## Before proceeding, ensure the specified revisions truly exist.
> +        && git --git-dir="$$am_gitdir" describe $$OLD_COMMIT >/dev/null \
> +        && git --git-dir="$$am_gitdir" describe $$NEW_COMMIT >/dev/null \
> +        && rm -rf $$outdir \
> +        && mkdir $$outdir \
> +        && cd $$outdir \
> +        && mkdir new old \
> +        && get_autofiles_from_rev $$OLD_COMMIT old \
> +        && get_autofiles_from_rev $$NEW_COMMIT new \
> +        && exit 0
> +## With lots of eye candy; we like out developers pampered and spoiled :-)

s/out/our/

> +compare-autodiffs: autodiffs
> +     @set -u; \
> +     : $${COLORDIFF=colordiff} $${DIFF=diff}; \
> +     dir=autodiffs.dir; \
> +     if test ! -d "$$dir"; then \
> +       echo "$@: $$dir: Not a directory" >&2; \
> +       exit 1; \
> +     fi; \
> +     mydiff=false mypager=false; \
> +     if test -t 1; then \
> +       if ($$COLORDIFF -r . .) </dev/null >/dev/null 2>&1; then \
> +         mydiff=$$COLORDIFF; \
> +         mypager="less -R"; \
> +       else \
> +         mypager=less; \
> +       fi; \
> +     else \
> +       mypager=cat; \
> +     fi; \
> +     if test "$$mydiff" = false; then \
> +       if ($$DIFF -r -u . .); then \
> +         mydiff=$$DIFF; \
> +       else \
> +         echo "$@: no good-enough diff program specified" >&2; \
> +         exit 1; \
> +       fi; \
> +     fi; \
> +     st=0; $$mydiff -r -u $$dir/old $$dir/new | $$mypager || st=$$?; \
> +     rm -rf $$dir; \
> +     exit $$st
> +.PHONY: autodiffs compare-autodiffs
> +
>  ## Program to use to fetch files.
>  WGET = wget
>  WGET_SV_CVS = $(WGET) http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]