Re: cvs2git reports a "sprout" from a nonexistent commit?

Lists: pgsql-hackers
From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu>, Max Bowsher <maxb(at)f2s(dot)com>
Cc: pgsql-hackers(at)postgreSQL(dot)org
Subject: cvs2git reports a "sprout" from a nonexistent commit?
Date: 2010-09-12 16:02:24
Message-ID: 9529.1284307344@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

There are a couple of weird-looking commits way back near the beginning
of the converted Postgres history:

commit 91f2ac21a1e085dfe81aae110cee2246a803f600 refs/tags/Release_2_0_0
Author: PostgreSQL Daemon <webmaster(at)postgresql(dot)org>
Date: Sat Aug 17 06:41:11 1996 +0000

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

Sprout from Release_1_0_3 1996-08-02 01:24:01 UTC PostgreSQL Daemon <webmaster(at)postgresql(dot)org> 'This commit was manufactured by cvs2svn to create branch 'Release_1_0_3'.'
Cherrypick from master 1996-08-17 06:41:10 UTC Marc G. Fournier <scrappy(at)hub(dot)org> 'changed missed err() change to err_out()':
src/test/regress/Makefile
src/Makefile.global
src/interfaces/libpq/fe-misc.c
... lots more files ...

commit a8b8a4c98c975a6e4e7f378168fc39b05831e09d refs/tags/Release_2_0
Author: PostgreSQL Daemon <webmaster(at)postgresql(dot)org>
Date: Wed Aug 14 16:44:52 1996 +0000

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

Sprout from Release_1_0_3 1996-08-02 01:24:01 UTC PostgreSQL Daemon <webmaster(at)postgresql(dot)org> 'This commit was manufactured by cvs2svn to create branch 'Release_1_0_3'.'
Cherrypick from master 1996-08-14 16:44:51 UTC Marc G. Fournier <scrappy(at)hub(dot)org> '|':
src/backend/storage/ipc.h
src/test/regress/Makefile
src/Makefile.global
src/interfaces/libpq/fe-misc.c
... lots more files ...

What is weird about them is that the referenced "sprout" commit doesn't
exist. Is this expected behavior?

regards, tom lane


From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu>, Max Bowsher <maxb(at)f2s(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: cvs2git reports a "sprout" from a nonexistent commit?
Date: 2010-09-13 00:12:45
Message-ID: AANLkTikHO0JUyS4NVuyzgeOx-ak6SmQdeU17WGjyZXT2@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Sun, Sep 12, 2010 at 12:02 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> There are a couple of weird-looking commits way back near the beginning
> of the converted Postgres history:
>
>
> commit 91f2ac21a1e085dfe81aae110cee2246a803f600 refs/tags/Release_2_0_0
> Author: PostgreSQL Daemon <webmaster(at)postgresql(dot)org>
> Date:   Sat Aug 17 06:41:11 1996 +0000
>
>    This commit was manufactured by cvs2svn to create tag 'Release_2_0_0'.
>
>    Sprout from Release_1_0_3 1996-08-02 01:24:01 UTC PostgreSQL Daemon <webmaster(at)postgresql(dot)org> 'This commit was manufactured by cvs2svn to create branch 'Release_1_0_3'.'
>    Cherrypick from master 1996-08-17 06:41:10 UTC Marc G. Fournier <scrappy(at)hub(dot)org> 'changed missed err() change to err_out()':
>        src/test/regress/Makefile
>        src/Makefile.global
>        src/interfaces/libpq/fe-misc.c
>        ... lots more files ...
>
>
> commit a8b8a4c98c975a6e4e7f378168fc39b05831e09d refs/tags/Release_2_0
> Author: PostgreSQL Daemon <webmaster(at)postgresql(dot)org>
> Date:   Wed Aug 14 16:44:52 1996 +0000
>
>    This commit was manufactured by cvs2svn to create tag 'Release_2_0'.
>
>    Sprout from Release_1_0_3 1996-08-02 01:24:01 UTC PostgreSQL Daemon <webmaster(at)postgresql(dot)org> 'This commit was manufactured by cvs2svn to create branch 'Release_1_0_3'.'
>    Cherrypick from master 1996-08-14 16:44:51 UTC Marc G. Fournier <scrappy(at)hub(dot)org> '|':
>        src/backend/storage/ipc.h
>        src/test/regress/Makefile
>        src/Makefile.global
>        src/interfaces/libpq/fe-misc.c
>        ... lots more files ...
>
>
> What is weird about them is that the referenced "sprout" commit doesn't
> exist.  Is this expected behavior?

What commit do you think doesn't exist?

git log origin/Release_1_0_3

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu>, Max Bowsher <maxb(at)f2s(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: cvs2git reports a "sprout" from a nonexistent commit?
Date: 2010-09-13 00:41:59
Message-ID: 17964.1284338519@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Robert Haas <robertmhaas(at)gmail(dot)com> writes:
> On Sun, Sep 12, 2010 at 12:02 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> There are a couple of weird-looking commits way back near the beginning
>> of the converted Postgres history:
>>
>> commit 91f2ac21a1e085dfe81aae110cee2246a803f600 refs/tags/Release_2_0_0
>> Author: PostgreSQL Daemon <webmaster(at)postgresql(dot)org>
>> Date: Sat Aug 17 06:41:11 1996 +0000
>>
>> This commit was manufactured by cvs2svn to create tag 'Release_2_0_0'.
>>
>> Sprout from Release_1_0_3 1996-08-02 01:24:01 UTC PostgreSQL Daemon <webmaster(at)postgresql(dot)org> 'This commit was manufactured by cvs2svn to create branch 'Release_1_0_3'.'
>> Cherrypick from master 1996-08-17 06:41:10 UTC Marc G. Fournier <scrappy(at)hub(dot)org> 'changed missed err() change to err_out()':

>> What is weird about them is that the referenced "sprout" commit doesn't
>> exist. Is this expected behavior?

> What commit do you think doesn't exist?

There is no commit with a log message like 'This commit was manufactured
by cvs2svn to create branch 'Release_1_0_3'.'

There is a another strange thing about these two commits: AFAICS they
shouldn't exist at all. Their content ought to be exactly the same as
the immediately preceding mainline commits, so why didn't cvs2git just
apply the branch tags to those mainline commits, instead of sprouting
from a significantly earlier point on the mainline and then having to
duplicate all the diffs from that time to this?

regards, tom lane


From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu>, Max Bowsher <maxb(at)f2s(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: cvs2git reports a "sprout" from a nonexistent commit?
Date: 2010-09-13 00:51:32
Message-ID: AANLkTi=LE=OXGsff+vTs36b9cF=NHpa=QUST6Ug11o3T@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Sun, Sep 12, 2010 at 8:41 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Robert Haas <robertmhaas(at)gmail(dot)com> writes:
>> On Sun, Sep 12, 2010 at 12:02 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>>> There are a couple of weird-looking commits way back near the beginning
>>> of the converted Postgres history:
>>>
>>> commit 91f2ac21a1e085dfe81aae110cee2246a803f600 refs/tags/Release_2_0_0
>>> Author: PostgreSQL Daemon <webmaster(at)postgresql(dot)org>
>>> Date:   Sat Aug 17 06:41:11 1996 +0000
>>>
>>>    This commit was manufactured by cvs2svn to create tag 'Release_2_0_0'.
>>>
>>>    Sprout from Release_1_0_3 1996-08-02 01:24:01 UTC PostgreSQL Daemon <webmaster(at)postgresql(dot)org> 'This commit was manufactured by cvs2svn to create branch 'Release_1_0_3'.'
>>>    Cherrypick from master 1996-08-17 06:41:10 UTC Marc G. Fournier <scrappy(at)hub(dot)org> 'changed missed err() change to err_out()':
>
>>> What is weird about them is that the referenced "sprout" commit doesn't
>>> exist.  Is this expected behavior?
>
>> What commit do you think doesn't exist?
>
> There is no commit with a log message like 'This commit was manufactured
> by cvs2svn to create branch 'Release_1_0_3'.'
>
> There is a another strange thing about these two commits: AFAICS they
> shouldn't exist at all.  Their content ought to be exactly the same as
> the immediately preceding mainline commits, so why didn't cvs2git just
> apply the branch tags to those mainline commits, instead of sprouting
> from a significantly earlier point on the mainline and then having to
> duplicate all the diffs from that time to this?

Oh, I get it now. That is pretty odd. I am not sure there is really
much point in keeping these ancient branches and tags. I'd argue for
losing all branches and tags that don't start with REL except perhaps
for PG95-1_01. Nobody's going to care about those anyway, and in the
very unlikely event that they do, they can refer back to CVS. (That
having been said, it would be interesting to know why it's
happening...)

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu>, Max Bowsher <maxb(at)f2s(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: cvs2git reports a "sprout" from a nonexistent commit?
Date: 2010-09-13 01:14:03
Message-ID: 18600.1284340443@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Robert Haas <robertmhaas(at)gmail(dot)com> writes:
> ... I am not sure there is really
> much point in keeping these ancient branches and tags. I'd argue for
> losing all branches and tags that don't start with REL except perhaps
> for PG95-1_01. Nobody's going to care about those anyway, and in the
> very unlikely event that they do, they can refer back to CVS.

Well, my original opinion was pretty much that; but we are close enough
to having the complete history in the git conversion that I would like
to be able to say that we won't need the CVS repository any more after
we convert.

I'm currently down to three unexplainable oddities: these two commits
related to the Release_2_0 and Release_2_0_0 tags, and the branch point
for the REL2_0B branch. The latter situation looks like this:

commit 2032a1fe70f689059476cec5b0ed950078b680c9 582c2ba6a83a58fde8e34d1247f4e987cbe1a622 refs/heads/REL2_0B
Author: Marc G. Fournier <scrappy(at)hub(dot)org>
Date: Tue Dec 10 03:29:41 1996 +0000

Test two...branch REL2_0B works...I think

M src/Makefile

commit 0861594cb3835bdf1cfbfe60884386c18df9ff64 9e60c1711d359f2cefe18c0b62f76a182aadfbd5 refs/tags/release-6-3
Author: Marc G. Fournier <scrappy(at)hub(dot)org>
Date: Tue Dec 10 03:03:36 1996 +0000

No change...just a test to make sure I didn't screw anything up

M src/Makefile

commit 9e60c1711d359f2cefe18c0b62f76a182aadfbd5 33edbdb59b741daed0b26b7033b1ce1b3e70b453 refs/tags/release-6-3
Author: Bryan Henderson <bryanh(at)giraffe(dot)netgate(dot)net>
Date: Mon Dec 9 01:55:51 1996 +0000

Monitor has been obsoleted by psql.

D src/bin/monitor/Makefile
D src/bin/monitor/monitor.c

commit 582c2ba6a83a58fde8e34d1247f4e987cbe1a622 33edbdb59b741daed0b26b7033b1ce1b3e70b453 refs/tags/REL2_0
Author: PostgreSQL Daemon <webmaster(at)postgresql(dot)org>
Date: Mon Dec 9 01:24:54 1996 +0000

This commit was manufactured by cvs2svn to create branch 'REL2_0B'.

Sprout from master 1996-12-09 01:24:53 UTC Bryan Henderson <bryanh(at)giraffe(dot)netgate(dot)net> 'Remove include of libpq-fe.h. This file has nothing to do with libpq.'
Delete:
src/bin/monitor/Makefile
src/bin/monitor/monitor.c

D src/bin/monitor/Makefile
D src/bin/monitor/monitor.c

commit 33edbdb59b741daed0b26b7033b1ce1b3e70b453 79729c0e5efab44c764a69ceaa9d52ecd6be1ce5 refs/tags/release-6-3
Author: Bryan Henderson <bryanh(at)giraffe(dot)netgate(dot)net>
Date: Mon Dec 9 01:24:53 1996 +0000

Remove include of libpq-fe.h. This file has nothing to do with libpq.

M src/test/regress/regress.c

Now as far as I can tell, the branch was made immediately before those
test commits you can see Marc making in each branch. In particular,
it was definitely made *after* Bryan deleted the src/bin/monitor files,
because neither of them have REL2_0 or REL2_0B tags. So why did cvs2git
choose to sprout the branch from the commit before that, and have to
duplicate the deletion of the files? This sure looks like a bug to me.
It's a minor issue of course, and I don't have a problem with accepting
the history as shown above, but I'm curious why it's doing that.

regards, tom lane


From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu>, Max Bowsher <maxb(at)f2s(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: cvs2git reports a "sprout" from a nonexistent commit?
Date: 2010-09-13 01:26:25
Message-ID: AANLkTiksVxd-goUfM40mZVkN+TGVVNuys5c8VoAYG9Fm@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Sun, Sep 12, 2010 at 9:14 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Robert Haas <robertmhaas(at)gmail(dot)com> writes:
>> ...  I am not sure there is really
>> much point in keeping these ancient branches and tags.  I'd argue for
>> losing all branches and tags that don't start with REL except perhaps
>> for PG95-1_01.  Nobody's going to care about those anyway, and in the
>> very unlikely event that they do, they can refer back to CVS.
>
> Well, my original opinion was pretty much that; but we are close enough
> to having the complete history in the git conversion that I would like
> to be able to say that we won't need the CVS repository any more after
> we convert.
>
> I'm currently down to three unexplainable oddities: these two commits
> related to the Release_2_0 and Release_2_0_0 tags, and the branch point
> for the REL2_0B branch.  The latter situation looks like this:
>
> commit 2032a1fe70f689059476cec5b0ed950078b680c9 582c2ba6a83a58fde8e34d1247f4e987cbe1a622        refs/heads/REL2_0B
> Author: Marc G. Fournier <scrappy(at)hub(dot)org>
> Date:   Tue Dec 10 03:29:41 1996 +0000
>
>    Test two...branch REL2_0B works...I think
>
> M       src/Makefile
>
> commit 0861594cb3835bdf1cfbfe60884386c18df9ff64 9e60c1711d359f2cefe18c0b62f76a182aadfbd5        refs/tags/release-6-3
> Author: Marc G. Fournier <scrappy(at)hub(dot)org>
> Date:   Tue Dec 10 03:03:36 1996 +0000
>
>    No change...just a test to make sure I didn't screw anything up
>
> M       src/Makefile
>
> commit 9e60c1711d359f2cefe18c0b62f76a182aadfbd5 33edbdb59b741daed0b26b7033b1ce1b3e70b453        refs/tags/release-6-3
> Author: Bryan Henderson <bryanh(at)giraffe(dot)netgate(dot)net>
> Date:   Mon Dec 9 01:55:51 1996 +0000
>
>    Monitor has been obsoleted by psql.
>
> D       src/bin/monitor/Makefile
> D       src/bin/monitor/monitor.c
>
> commit 582c2ba6a83a58fde8e34d1247f4e987cbe1a622 33edbdb59b741daed0b26b7033b1ce1b3e70b453        refs/tags/REL2_0
> Author: PostgreSQL Daemon <webmaster(at)postgresql(dot)org>
> Date:   Mon Dec 9 01:24:54 1996 +0000
>
>    This commit was manufactured by cvs2svn to create branch 'REL2_0B'.
>
>    Sprout from master 1996-12-09 01:24:53 UTC Bryan Henderson <bryanh(at)giraffe(dot)netgate(dot)net> 'Remove include of libpq-fe.h.  This file has nothing to do with libpq.'
>    Delete:
>        src/bin/monitor/Makefile
>        src/bin/monitor/monitor.c
>
> D       src/bin/monitor/Makefile
> D       src/bin/monitor/monitor.c
>
> commit 33edbdb59b741daed0b26b7033b1ce1b3e70b453 79729c0e5efab44c764a69ceaa9d52ecd6be1ce5        refs/tags/release-6-3
> Author: Bryan Henderson <bryanh(at)giraffe(dot)netgate(dot)net>
> Date:   Mon Dec 9 01:24:53 1996 +0000
>
>    Remove include of libpq-fe.h.  This file has nothing to do with libpq.
>
> M       src/test/regress/regress.c
>
> Now as far as I can tell, the branch was made immediately before those
> test commits you can see Marc making in each branch.  In particular,
> it was definitely made *after* Bryan deleted the src/bin/monitor files,
> because neither of them have REL2_0 or REL2_0B tags.  So why did cvs2git
> choose to sprout the branch from the commit before that, and have to
> duplicate the deletion of the files?  This sure looks like a bug to me.
> It's a minor issue of course, and I don't have a problem with accepting
> the history as shown above, but I'm curious why it's doing that.

Eh, any chance you can throw this conversion up somewhere I can look at it?

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu>, Max Bowsher <maxb(at)f2s(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: cvs2git reports a "sprout" from a nonexistent commit?
Date: 2010-09-13 01:56:01
Message-ID: 19375.1284342961@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Robert Haas <robertmhaas(at)gmail(dot)com> writes:
> Eh, any chance you can throw this conversion up somewhere I can look at it?

I'm working up a report now, it'll include the recipe.

regards, tom lane


From: Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Max Bowsher <maxb(at)f2s(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: cvs2git reports a "sprout" from a nonexistent commit?
Date: 2010-09-13 07:32:15
Message-ID: 4C8DD37F.3030601@alum.mit.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 09/13/2010 03:14 AM, Tom Lane wrote:
> [...]
>
> Now as far as I can tell, the branch was made immediately before those
> test commits you can see Marc making in each branch. In particular,
> it was definitely made *after* Bryan deleted the src/bin/monitor files,
> because neither of them have REL2_0 or REL2_0B tags. So why did cvs2git
> choose to sprout the branch from the commit before that, and have to
> duplicate the deletion of the files?

This is a known bug 139 [1] in cvs2git's symbol parent choosing code
(previously mentioned as part of bug 55 [2]). Patches are welcome :-)

Michael

[1] http://cvs2svn.tigris.org/issues/show_bug.cgi?id=139
[2] http://cvs2svn.tigris.org/issues/show_bug.cgi?id=55


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Max Bowsher <maxb(at)f2s(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: cvs2git reports a "sprout" from a nonexistent commit?
Date: 2010-09-13 15:52:39
Message-ID: 13470.1284393159@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Michael Haggerty <mhagger(at)alum(dot)mit(dot)edu> writes:
> On 09/13/2010 03:14 AM, Tom Lane wrote:
>> Now as far as I can tell, the branch was made immediately before those
>> test commits you can see Marc making in each branch. In particular,
>> it was definitely made *after* Bryan deleted the src/bin/monitor files,
>> because neither of them have REL2_0 or REL2_0B tags. So why did cvs2git
>> choose to sprout the branch from the commit before that, and have to
>> duplicate the deletion of the files?

> This is a known bug 139 [1] in cvs2git's symbol parent choosing code
> (previously mentioned as part of bug 55 [2]). Patches are welcome :-)

Thanks for the response. Since this bug causes only one very minor
infelicity in our conversion, probably nobody here is going to be
motivated to fix it. OTOH, I'm still annoyed by the behavior for
addition of files to back branches ...

regards, tom lane