Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Sep 2019 23:09:39 +0200
From:      =?UTF-8?Q?Ulrich_Sp=C3=B6rlein?= <uspoerlein@gmail.com>
To:        Warner Losh <imp@bsdimp.com>
Cc:        Shawn Webb <shawn.webb@hardenedbsd.org>, freebsd-git@freebsd.org
Subject:   Re: Service disruption: git converter currently down
Message-ID:  <CAJ9axoRQQWB92Tv=w488HN74DU4HfdgGrqG3mgkTBTFzaoNEUQ@mail.gmail.com>
In-Reply-To: <CANCZdfoXT4sBLUhsaBA0sr1Lf4RfyXpU7cyn97yyNui-Mp7YDg@mail.gmail.com>
References:  <CAJ9axoR41gM5BGzT-nPJqqjym1cPYv31dDUwXwi4wsApfDJW%2Bw@mail.gmail.com> <CAJ9axoToynYpF=ZdWdtn_CkkA2nVkgtckQSu%2BcMis1NOXgUdnA@mail.gmail.com> <CAJ9axoR2VXFo9_hx9Z1Qwgs7U-dkan56hrUKO9f7uN6Wpd15xQ@mail.gmail.com> <CAHevUJHwDet8pBdrE4SN3nuoAUgP-ixpCz9uOTdwbE31UDDsbA@mail.gmail.com> <CAJ9axoSVhmSkNS6S1zTiwK5F3uUM%2B-8D2478=irZMeTjNxpnfg@mail.gmail.com> <20190923183424.ebnghzf67mx56aom@mutt-hbsd> <CAJ9axoQ-g2Qa2Qnr%2BPOD63s8sTH2Gsi7Rh2VMcZzQF5dd_kBvA@mail.gmail.com> <CANCZdfoXT4sBLUhsaBA0sr1Lf4RfyXpU7cyn97yyNui-Mp7YDg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Am Mo., 23. Sept. 2019 um 21:06 Uhr schrieb Warner Losh <imp@bsdimp.com>:
>
>
>
> On Mon, Sep 23, 2019, 8:42 PM Ulrich Sp=C3=B6rlein <uspoerlein@gmail.com>=
 wrote:
>>
>> Am Mo., 23. Sept. 2019 um 20:34 Uhr schrieb Shawn Webb
>> <shawn.webb@hardenedbsd.org>:
>> >
>> > Hey Ulrich,
>> >
>> > I appreciate your hard work in maintaining the git mirror. Work like
>> > this can sometimes go unthanked. I want to take a moment to show
>> > appreciation for you and the FreeBSD project in maintaining the git
>> > mirror.
>> >
>> > I do have a few concerns with what was stated in your email. I've
>> > written my concerns inline. I hope this discussion is a positive one,
>> > wherein upstream and downstream can effectively come to a conclusion.
>> >
>> > On Mon, Sep 23, 2019 at 08:16:25PM +0200, Ulrich Sp??rlein wrote:
>> > > Am Mo., 23. Sept. 2019 um 19:51 Uhr schrieb Sean Chittenden
>> > > <sean@chittenden.org>:
>> > > >>
>> > > >> Please note however, that more "garbage" metadata escaped from SV=
N into
>> > > >> github, meaning 3rd parties have a hard time re-running the conve=
rsion and
>> > > >> making sure that it matches SVN down to the metadata (i.e. timest=
amps).
>> > > >>
>> > > >> Eventually, this will have to be re-rolled and a new "master" bra=
nch will
>> > > >> be force-pushed into github. There's no timeline for this yet.
>> > > >
>> > > >
>> > > > Wait, what?  Can you elaborate?
>> > > >
>> > > > Discussion of a force-push to github has occurred a few times and =
been explicitly ruled out because most of our corporate citizens use github=
 to integrate changes from FreeBSD.  Rerolling master was universally rejec=
ted when we socialized wanting to do this due to the level of disruption th=
is would cause.  The feedback was that this would be a high-cost, low-value=
 operation.  In the tradeoffs of purity vs pragmatism, pragmatism wins ever=
y time (that is the FreeBSD way).
>> > > >
>> > > > -sc
>> > >
>> > >
>> > > This is not just about pragmatism and the disruption it would cause =
is
>> > > vastly overblown by people who don't seem to know much about the git
>> > > storage model.
>> > >
>> > > There *is* garbage metadata in the published version on github, ther=
e
>> > > *is* a disclaimer on https://wiki.freebsd.org/GitWorkflow since
>> > > forever, and the cost of switching from 1 published branch to anothe=
r
>> > > is literally:
>> > >
>> > > - git diff origin/broken_master mybranch > mybranch.patch
>> > > - git checkout -b fixed_branch origin/fixed_master
>> > > - patch < mybranch.patch
>> >
>> > Such a workflow breaks historical accuracy. Instead of `git annotate`
>> > showing the history properly, it's now based on an "epoch commit".
>> > Sure such a commit brings the branch to a working condition, but at
>> > the cost of history.
>>
>> Is there really that much value in having "git blame" work in that envir=
onment?
>> My mental model is of short-lived branches that get upstreamed, so I'm b=
iased
>> towards this not being all that big of a problem (for some at least).
>
>
> Yes. There absolutely is.
>
>> > >
>> > > It should also be possible to merge both broken and fixed master int=
o
>> > > your branch (at the exact same SVN revision in time) and then you ca=
n
>> > > follow fixed_master going forward. You'll schlepp around double the
>> > > commit history, but not tree objects.
>> > > If you want to retain history, you can upstream the changes prior to
>> > > the switch
>> >
>> > I so wish that were possible for certain downstream projects. We're
>> > unable to upstream the majority of our work. To argue "upstream your
>> > work and you won't be affected" is to choose an argument that does not
>> > reflect the reality of a growing portion of FreeBSD's downstream
>> > consumers: the inability to work effectively with upstream.
>>
>> :/
>>
>> I'm 80% sure that you can just merge both branches and things will be fi=
ne
>> (though the exact incantation will surely be black magic). I'd love to
>> try this on
>> an actual repo though, I don't have the time to craft some test repo to =
verify
>> this assumption, and then find out that other repos are different).
>
>
> One might be able to do this, but this is really quite a lot to ask. I've=
 done a lot of git rebase in connection with qemu. The hard part us knowing=
 hash X is for rev r123 in branch 1, but hash Y In branch 2. Once you can a=
utomate that, for various mappings, a script to rebase old to new becomes p=
ossible which will lessen the impact, but not eliminate it.

Hmm, I think that's the trivial part. All commits record the SVN
revision in the notes after all. See:

% git show
commit 2e105280ca193f7bafe103652bb1249704ba25f6 (HEAD -> master)
Author: bdrewery <bdrewery@FreeBSD.org>
Date:   2015-10-15 20:46:34 +0000

    Remove unneeded libg++ reference that came in with r267511 based
on a removed
    comment.

    Sponsored by:   EMC / Isilon Storage Division

Notes:
    svn path=3D/head/; revision=3D289388


So all that is left is matching up 2 notes in 2 branches (or 2 tree
objects in 2 branches, actually).

What's the tree on a specific branch:
% git log -1 --format=3D%T master
9c96d76028084fe6b8077292fc428388a22f07f0

Search for it on a different branch (using the same master here, I
don't have a repo handy with 2 different but identical branches)
% git rev-list master | while read hash; do case `git log -1
--format=3D%T $hash` in 9c96d76028084fe6b8077292fc428388a22f07f0) echo
"found commit $hash also pointing to tree
9c96d76028084fe6b8077292fc428388a22f07f0";; esac; done
found commit 2e105280ca193f7bafe103652bb1249704ba25f6 also pointing to
tree 9c96d76028084fe6b8077292fc428388a22f07f0

Except you can probably write that quicker also, maybe just dump all
commit =E2=86=92 tree mappings and do something with that.

As I said, it should be straightforward as long as you know a thing or
two about git.

>
>> Also, I'll be offline in the coming weeks, so don't expect immediate res=
ponses
>> from me going forward. I already had to spent most of my weekend to patc=
h
>> things up and had to cancel other plans.
>
>
> I think it is safe to view this discussion as just don't force push yet a=
s we are in no position to mitigate the large disruption this would cause. =
If you aren't force pushing master, there is no time urgency to solve this.
>
> Finally, and most importantly, thank you for all your time and efforts he=
re. They are much appreciated. Any quibbling over future plans shouldn't de=
tract from that.
>
> Warner

There will not be a surprise force push if I can help it. That's what
I just sacrificed a weekend for, after all :(

Should (!!) the project ever decide to abandon SVN, then I would
suggest to roll that into a re-do of the
conversion, and also only start the conversion with the first commit
to SVN, because the cvs2svn conversion
also has a bunch of garbage in there, and we should rather not claim
that those commits actually every happened
in the way and form they are currently recorded in SVN.

hth
Uli



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ9axoRQQWB92Tv=w488HN74DU4HfdgGrqG3mgkTBTFzaoNEUQ>