[Paraview-developers] [vtk-developers] CVS->Git Transition Plan

Brad King brad.king at kitware.com
Mon Apr 19 11:44:45 EDT 2010


Stephane PLOIX wrote:
> Brad King wrote:
>> FYI, if anyone has non-trivial topic branches under development based
>> on a clone of one of the older repositories, it is possible to rebase
>> the branch on the new official history.  I can post instructions if
>> anyone needs to do this.
>
> That would be great!

Okay.  The first rule is to be very careful!  We don't want to end up
with any of the old history merged into the new history (which is one
reason we are disallowing merges at first).  The instructions below
are from memory so hopefully I didn't forget a step.

I'll assume you're working with VTK.  Let's say you have a clone
of the old history called OldVTK:

 $ ls -d OldVTK
 OldVTK

Clone the new repository next to it:

 $ git clone git://vtk.org/VTK.git
 $ ls -d VTK
 VTK

Now you can do the rest locally.  Fetch the new history into the
old clone:

 $ cd OldVTK
 OldVTK$ git fetch ../VTK 'master:newvtk'

Identify the commit in the old history on which your work was based.

 OldVTK$ git merge-base origin/cvshead my-old-work-branch
 aa00bb11

Rebase your work on newvtk:

 OldVTK$ git rebase --onto newvtk aa00bb11 my-old-work-branch

Use in place of 'aa00bb11' the actual sha1 reported by merge-base.
The command says "take commits between aa00bb11 and my branch and
replay the changes as if I had made them starting at newvtk".

There may be some conflicts which you'll have to resolve.  Read
the 'git help rebase' man page for details on this process.  If
you get in trouble you can always use 'git rebase --abort' to
get back to where you started.

Now fetch the rebased branch into the new clone:

 OldVTK$ cd ../VTK
 VTK$ git fetch ../OldVTK 'my-old-work-branch:my-new-work-branch'

Done!  Now your clone of the new repository has your topic branch
and no objects from the old history.

-Brad


More information about the Paraview-developers mailing list