[vtk-developers] Migrating Git repository to Gitlab

Utkarsh Ayachit utkarsh.ayachit at kitware.com
Mon Mar 2 10:03:46 EST 2015


Folks,

In August 2014, there was a discussion on the mailing list [1] about development
workflows. A conclusion of that conversation was that we will look at a
Github-like approach to make contributing easier. The time has come to act on
those discussions, and we will outline plans to do that below.

Since those initial discussions developers at Kitware have been evaluating
Github and Github clones to see what would work for our projects, including the
large ones like ParaView and VTK. Here is a summary of that evaluation and the
proposed plan.

* We have settled on using Gitlab (an open source Github clone) as the platform
  for hosting the official repositories. There are several advantages to using a
  self-hosted Gitlab instance, including support for customized server-side
  hooks.
* Gitlab is very Github-like. Thus we can use Gitlab for code-review instead of
  Gerrit. For simplicity, let’s call this Kitware hosted instance of Gitlab,
  KWGitlab.
* For VTK, we can use what is commonly called a *Forking Workflow* [2,3].
  Essentially, developers can create a fork of the VTK repository on KWGitlab.
  They can then create branches on their fork to develop new features or bug
  fixes. They can publish their branches to the world on their personal forks.
  Once developers are ready to merge that change into VTK, they go to the
  KWGitlab web application and create a *Merge Request*. Once a merge request is
  made, we can use testing infrastructure to run dashboards on the merge request
  (similar to what we currently do for Gerrit). We can decide on a convention as
  to what constitutes an approval of the merge request. Once approved, the merge
  request can be ‘accepted’ and merged into the master repo.
* Gitlab provides a nicer UI for inspecting changes and posting comments etc, as
  compared with Gerrit, and one that would be familiar to many Github users.
  Reviewing code will be easier, especially for topic branches with a number of
  commits. Attached are a few miscellaneous screenshots from the Gitlab instance
  we're testing out internally.
* For testing we have been experimenting with Buildbot to act as the scheduler
  that triggers a dashboard run when an ‘authenticated’ merge-request is
  received and ready for testing. Authenticated could mean something like the
  following:
    - The merge request has a specific label e.g. “do-tests” AND
    - The merge request was created by a user registered as a VTK developer OR
    - A VTK developer has made a specific comment to trigger the builds.
  We can set up a few buildbot-slaves to test merge requests in addition to the
  traditional continuous and nightly testing.

We will endeavor to make these changes as painless as possible, but ask that you
bear with us as we make the transition. We will flesh out low-level details for
contributing changes, dealing with conflicts, and so forth.

Q&A
===

1. What is the timeline?
   We are testing this out internally right now. There are a few things that
   need to be ironed out like managing ExternalData, updating
   SetupforDevelopment.sh, updating documentation etc. Once VTK 6.2 is out the
   door, we plan to go live with this initiative. This needs to happen by April
   20th, since Google stops supporting OpenID 2.0 [4] then and our current
   instance of Gerrit (with patches to support topic branches) uses OpenID 2.0.
   Thus VTK gerrit users will not be able to sign in to Gerrit after April 20th.

2. Does the git url for checking out VTK change?
   Yes. The git url will indeed change. The current plan is to abandon the old
   URL to avoid confusion.

3. What happens to the Github clone of VTK?
   That will continue as before. We will keep the Github clone updated as
   earlier. Eventually, we can start accepting pull requests on Github that can
   then be migrated to KWGitlab for testing/merging.

4. Are we also moving the bug tracker?
  The general consensus is that it will indeed be nice to start using the
  integrated issue tracker in Gitlab instead of the separate Mantis bug tracker.
  As a first pass however, let’s keep the changes limited. Once we have all
  settled in to using Gitlab we can start a separate thread to discuss how the
  bug tracker evolves.

5. Do I have to update all my dashboards?
   For most part, the only thing that needs to change on the dashboards is where
   the checkout VTK from. We are currently testing a Buildbot+CDash-based
   exhaustive testing model for ParaView to test individual merge requests.
   We’ll post details on how that experiment goes and then we can decide how VTK
   testing infrastructure can be expanded in time. We will certainly migrate the
   current Gerrit topic testing machines to test merge requests either using
   CDash at Home or Buildbot when all this goes live.

[1] http://public.kitware.com/pipermail/vtk-developers/2014-August/030755.html
[2] https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow
[3] https://guides.github.com/introduction/flow/
[4] https://developers.google.com/accounts/docs/OpenID
-------------- next part --------------
A non-text attachment was scrubbed...
Name: merge_request_commits.png
Type: image/png
Size: 207591 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20150302/f4e814e1/attachment-0003.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: merge_requests.png
Type: image/png
Size: 261858 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20150302/f4e814e1/attachment-0004.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: network_view.png
Type: image/png
Size: 255075 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20150302/f4e814e1/attachment-0005.png>


More information about the vtk-developers mailing list