Re: git: uh-oh

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Magnus Hagander <magnus(at)hagander(dot)net>
Cc: Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu>, Max Bowsher <maxb(at)f2s(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: git: uh-oh
Date: 2010-09-10 05:51:58
Message-ID: 15844.1284097918@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hey Magnus, what exactly was your process for verifying the file
contents of the various release tags in the git conversion? Did
you check them against the published tarballs, or against what the
CVS repository said they should be? Because I've just found that
this odd-looking manufactured commit:

commit 94b87adc86f5dce6ee5957af83c41fa1f8476c39 refs/tags/REL7_3_5
Author: PostgreSQL Daemon <webmaster(at)postgresql(dot)org>
Date: Tue Dec 2 16:26:01 2003 +0000

This commit was manufactured by cvs2svn to create tag 'REL7_3_5'.

Sprout from REL7_3_STABLE 2003-12-02 16:26:00 UTC Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> 'Brand 7.3.5.'
Delete:
doc/src/graphics/catalogs.ag
doc/src/graphics/catalogs.cgm
doc/src/graphics/catalogs.gif
doc/src/graphics/catalogs.ps
doc/src/graphics/clientserver.ag
doc/src/graphics/clientserver.gif
doc/src/graphics/connections.ag
doc/src/graphics/connections.gif
src/data/charset.conf
src/data/isocz-wincz.tab
src/data/koi-alt.tab
src/data/koi-iso.tab
src/data/koi-koi.tab
src/data/koi-mac.tab
src/data/koi-win.tab
src/interfaces/cli/example1.c
src/interfaces/cli/example2.c
src/interfaces/cli/sqlcli.h
src/interfaces/ecpg/lib/Makefile
src/interfaces/ecpg/lib/connect.c
src/interfaces/ecpg/lib/data.c
src/interfaces/ecpg/lib/descriptor.c
src/interfaces/ecpg/lib/error.c
src/interfaces/ecpg/lib/execute.c
src/interfaces/ecpg/lib/extern.h
src/interfaces/ecpg/lib/memory.c
src/interfaces/ecpg/lib/misc.c
src/interfaces/ecpg/lib/pg_type.h
src/interfaces/ecpg/lib/prepare.c
src/interfaces/ecpg/lib/typename.c
src/interfaces/python/Announce
src/interfaces/python/ChangeLog
src/interfaces/python/GNUmakefile
src/interfaces/python/PyGreSQL.spec
src/interfaces/python/README
src/interfaces/python/Setup.in.raw
src/interfaces/python/pg.py
src/interfaces/python/pgdb.py
src/interfaces/python/pgmodule.c
src/interfaces/python/setup.py
src/interfaces/python/tutorial/advanced.py
src/interfaces/python/tutorial/basics.py
src/interfaces/python/tutorial/func.py
src/interfaces/python/tutorial/syscat.py

D doc/src/graphics/catalogs.ag
D doc/src/graphics/catalogs.cgm
D doc/src/graphics/catalogs.gif
D doc/src/graphics/catalogs.ps
D doc/src/graphics/clientserver.ag
D doc/src/graphics/clientserver.gif
D doc/src/graphics/connections.ag
D doc/src/graphics/connections.gif
D src/data/charset.conf
D src/data/isocz-wincz.tab
D src/data/koi-alt.tab
D src/data/koi-iso.tab
D src/data/koi-koi.tab
D src/data/koi-mac.tab
D src/data/koi-win.tab
D src/interfaces/cli/example1.c
D src/interfaces/cli/example2.c
D src/interfaces/cli/sqlcli.h
D src/interfaces/ecpg/lib/Makefile
D src/interfaces/ecpg/lib/connect.c
D src/interfaces/ecpg/lib/data.c
D src/interfaces/ecpg/lib/descriptor.c
D src/interfaces/ecpg/lib/error.c
D src/interfaces/ecpg/lib/execute.c
D src/interfaces/ecpg/lib/extern.h
D src/interfaces/ecpg/lib/memory.c
D src/interfaces/ecpg/lib/misc.c
D src/interfaces/ecpg/lib/pg_type.h
D src/interfaces/ecpg/lib/prepare.c
D src/interfaces/ecpg/lib/typename.c
D src/interfaces/python/Announce
D src/interfaces/python/ChangeLog
D src/interfaces/python/GNUmakefile
D src/interfaces/python/PyGreSQL.spec
D src/interfaces/python/README
D src/interfaces/python/Setup.in.raw
D src/interfaces/python/pg.py
D src/interfaces/python/pgdb.py
D src/interfaces/python/pgmodule.c
D src/interfaces/python/setup.py
D src/interfaces/python/tutorial/advanced.py
D src/interfaces/python/tutorial/basics.py
D src/interfaces/python/tutorial/func.py
D src/interfaces/python/tutorial/syscat.py

is there because these files have no REL7_3_5 tag according to CVS.
Which is damn weird, because they all have tags for the preceding
and following releases, *and they are there in the published tarball*.

It looks to me like what didn't get tagged is a few complete
directories, which means the most likely mechanism is the "cvs tag"
operation being run in a checkout tree that lacked these subdirectories
for some reason. But that's just a guess; we'll probably never know
for sure.

Anyway I am now thinking that we'd better compare published tarballs to
the CVS tags and find out what other discrepancies there are. The
checking we've done to verify releases in the past has always been that
the tarballs were sane, not that the tagging was sane, so in case of any
discrepancy I'd say the tarball should be considered authoritative.

I've already found one other issue: the root HISTORY and INSTALL files
have REL7_3_10 tags and should not. This is not entirely CVS' fault
though: I think what happened is that Marc manually moved the
already-applied REL7_3_10 tag when we re-did that release, and didn't
account for the fact that I'd deleted those two files in the branch
meanwhile. That one is also confusing cvs2git no end.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Magnus Hagander 2010-09-10 07:45:00 Re: [BUGS] BUG #5305: Postgres service stops when closing Windows session
Previous Message Darren Duncan 2010-09-10 05:02:14 Re: returning multiple result sets from a stored procedure