All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Cody <jcody@redhat.com>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Stefan Hajnoczi" <stefanha@gmail.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Alexander Graf" <agraf@suse.de>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [RFC PATCH 1/1] OpenBIOS: Switch over to official OpenBIOS git repo
Date: Wed, 6 Jul 2016 23:12:23 -0400	[thread overview]
Message-ID: <20160707031223.GA21682@localhost.localdomain> (raw)
In-Reply-To: <8d0de420-7203-288d-ea0d-6675c9dfe63b@ilande.co.uk>

On Wed, Jul 06, 2016 at 04:19:24PM +0100, Mark Cave-Ayland wrote:
> On 06/07/16 14:29, Jeff Cody wrote:
> 
> > On Wed, Jul 06, 2016 at 08:26:57AM +0100, Mark Cave-Ayland wrote:
> >> On 28/06/16 21:43, Mark Cave-Ayland wrote:
> >>
> >>> On 28/06/16 14:44, Stefan Hajnoczi wrote:
> >>>
> >>>> On Tue, Jun 28, 2016 at 7:11 AM, Jeff Cody <jcody@redhat.com> wrote:
> >>>>> On Mon, Jun 27, 2016 at 07:48:23AM +0100, Mark Cave-Ayland wrote:
> >>>>>> On 21/06/16 14:48, Mark Cave-Ayland wrote:
> >>>>>>
> >>>>>>> On 21/06/16 11:28, Stefan Hajnoczi wrote:
> >>>>>>>
> >>>>>>>> On Tue, Jun 21, 2016 at 01:40:42AM -0400, Jeff Cody wrote:
> >>>>>>>>> This update should preserve git history, and allow seamless switching
> >>>>>>>>> over to the official openbios git repo, rather than pulling from the
> >>>>>>>>> svn mirror.  All prior history from the svn repository should still be
> >>>>>>>>> preserved (i.e., commit hashes are the same for historical commits).
> >>>>>>>>>
> >>>>>>>>> In the roms/openbios submodule, the branch "origin/official" is the
> >>>>>>>>> latest mirror of the official git repository (fetched daily).
> >>>>>>>>>
> >>>>>>>>> Signed-off-by: Jeff Cody <jcody@redhat.com>
> >>>>>>>>> ---
> >>>>>>>>>  roms/openbios | 2 +-
> >>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>>>>>
> >>>>>>>> Assuming the git.qemu-project.org openbios.git remote and .git/config
> >>>>>>>> mirror setting has been updated to use the new upstream git repo:
> >>>>>>>>
> >>>>>>>> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> >>>>>>>
> >>>>>>> Is it possible to switch this around, so that there is a legacy branch
> >>>>>>> which points to the current HEAD and master points to the new, upstream
> >>>>>>> git HEAD? Then it means if someone clones either the
> >>>>>>> git.qemu-project.org repository or the official repository then the
> >>>>>>> default master branch will point to the same HEAD.
> >>>>>>
> >>>>>> Urgent ping? It has been another week, we're coming up to soft freeze
> >>>>>> and the PPC guys are urgently after an OpenBIOS fix.
> >>>>>>
> >>>>>> As per the above I'd really like the branches switched around so that
> >>>>>> both the git.qemu-project.org master and github.com master are exactly
> >>>>>> the same HEAD although I believe it may be technically possible to do
> >>>>>> this part separately once the HEAD switch is in? If so, please can we
> >>>>>> apply this and then I can line up and attempt to push the outstanding
> >>>>>> patches to the new github master later this evening.
> >>>>>>
> >>>>>
> >>>>> If we want something other than this patch, so that the openbios git repo
> >>>>> hosted on qemu.org has 'master' as the new github tracking, we might be able
> >>>>> to do that with a git-merge.  Here are the three methods I am thinking of:
> >>>>>
> >>>>>
> >>>>> A) For 'master' referencing new github hashes:
> >>>>>     git fetch github
> >>>>>     git merge --no-edit github/master
> >>>>
> >>>>
> >>>>>     git push /pub/git/openbios.git master:master
> >>>>>
> >>>>>
> >>>>> B) Old, prior behavior for SVN:
> >>>>>     git svn fetch svn
> >>>>>     git merge git-svn
> >>>>>     git push /pub/git/openbios.git master:master
> >>>>>
> >>>>>
> >>>>> C) Current behavior, as of the submitted patch above, this is what is being run:
> >>>>>     git svn fetch svn
> >>>>>     git merge git-svn
> >>>>>     git fetch github
> >>>>>     git push /pub/git/openbios.git master:master
> >>>>>     git push /pub/git/openbios.git official:official
> >>>>> (This seemed safest to run, as old behavior remains unchanged)
> >>>>>
> >>>>> If we do A), we'll have merge commits with just the auto-generated merge
> >>>>> message, and I'm not sure this is what you want.  Thoughts?
> >>>>
> >>>> No, I think A is not appropriate because the mirror must have the
> >>>> exact same commit IDs as github.  Only fast-forward merges are
> >>>> allowed, so I would use --ff-only instead.  The first time you begin
> >>>> using the github repo you'll need git reset --hard github/master to
> >>>> move from the old svn commit history to the new github history.
> >>>>
> >>>> It's important to keep the svm commits so old versions of QEMU still
> >>>> work.  You can ensure that the garbage collector does not delete the
> >>>> commits by tagging the latest svn head.
> >>>
> >>> Yes, this is exactly what I'm thinking. Given that the repository is
> >>> already merged, is it not just as simple as:
> >>>
> >>> git checkout master -b legacy
> >>> git checkout master
> >>> git reset --hard 36785d7
> >>>
> >>> And then change the nightly script to "git pull origin/master" with the
> >>> origin remote set to the github.com repository. I'm also fine with
> >>> asking existing developers to switch over to the new master once we're done.
> >>
> >> Urgent ping again?!
> >>
> > 
> > Is there anything that is actually holding your work up?  The server has all
> > the github hashes in it - the only thing that needs to happen is a checkout
> > from 'origin/official' in the submodule to use them.  Not to say figuring
> > out the best way to get those hashes on 'master' in the submodule can't
> > happen, but since the hashes obviously will be the same I don't think
> > anything should actually hold you up.  Or am I missing something?
> > 
> > Thanks, Jeff
> 
> Hi Jeff,
> 
> My understanding from earlier in the thread was that people wanted a
> single commit to move the OpenBIOS submodule over to use the new
> official HEAD but at the same time I was positing to also switch master
> so that the two repositories match each other moving forward.
> 
> The two main reasons being that i) everyone's favourite habit is to run
> "git checkout master && git pull" when trying to update a remote
> repository and so with the current setup I can see people
> building/testing off the wrong branch and ii) the repository at
> git.qemu-project.org has been recommended as the "official" git
> repository for a while and has more users than SVN.
> 
> Therefore if there is going to be a changeover period, we might as well
> do it in one go: I can email the OpenBIOS list and ask users to switch
> to the new repository, everyone manually rebases and then there is no
> confusion between repositories moving forward. Yes I agree that we could
> just switch the master HEAD in its current incarnation and carry on, but
> it is one of those things that the longer it gets left, the more likely
> there is to be confusion between repositories in the long-term vs.
> simply going ahead and getting it all out of the way.
> 
>

Alright, here is what I think will work to switch over relatively
painlessly, and move master over to the github hashes for the submodule.  

I haven't done it yet on the server, because I want to get another set of
eyes double checking it (Stefan, Mark).  However, I have mocked it up and
tested it locally, so I think it should work fine, unless there are
scenarios I missed.  Here are the step-by-step details:


Server side actions
=====================

1) In bare openbios.git repo (git://git.qemu.org/openbios.git):

    git tag svn-last-official 422b916
    git branch svn-head 422b916
    git branch -f master 36785d7

2) openbios update repo (updated daily via cron):

    # update script contents
    # continue fetch svn commits for now as well
    # 'official' branch tracks github/master
    git svn fetch svn 
    git merge git-svn
    git fetch github   # official openbios github repo
    git push /pub/git/openbios.git master:svn-head
    git push /pub/git/openbios.git official:master  


Non-server side actions
======================

* QEMU new patch to switch over

    # normal submodule stuff:

    git submodule init
    git submodule update roms/openbios

    # create patch to switch over:
    cd roms/openbios
    git checkout master
    cd ../
    git commit -a  # assuming you made no other changes


* Existing users of git://git.qemu.org/openbios.git as a standalone work
  repo:

    git fetch

    # if there are local commits / work they want to keep
    git rebase origin/master
   
    # alternatively:
    git reset --hard origin/master                         



The above all seems to work in my testing.  Stefan, Mark: do you see any
glaring issues with the above?


-Jeff

  reply	other threads:[~2016-07-07  3:12 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-21  5:40 [Qemu-devel] [RFC PATCH 1/1] OpenBIOS: Switch over to official OpenBIOS git repo Jeff Cody
2016-06-21  5:42 ` Jeff Cody
2016-06-21 10:28 ` Stefan Hajnoczi
2016-06-21 13:48   ` Mark Cave-Ayland
2016-06-27  6:48     ` Mark Cave-Ayland
2016-06-28  6:11       ` Jeff Cody
2016-06-28 13:44         ` Stefan Hajnoczi
2016-06-28 20:43           ` Mark Cave-Ayland
2016-07-06  7:26             ` Mark Cave-Ayland
2016-07-06 13:29               ` Jeff Cody
2016-07-06 15:19                 ` Mark Cave-Ayland
2016-07-07  3:12                   ` Jeff Cody [this message]
2016-07-07 17:22                     ` Mark Cave-Ayland
2016-07-07 20:53                       ` Jeff Cody
2016-07-07 21:25                         ` Jeff Cody
2016-07-08 15:48                           ` Mark Cave-Ayland
     [not found] <mailman.852.1467157487.26856.qemu-devel@nongnu.org>
2016-06-28 23:55 ` G 3

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160707031223.GA21682@localhost.localdomain \
    --to=jcody@redhat.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.