martedì 11 aprile 2017

Move from SVN local repository to GitLab.com


I had a great problem. I was working with Subversion repository, I'd prefer a gitflow policy to manage souce code repository.

My initial idea was to migrate to Atlassian BitBucket (http://www.bitbucket.org/). I had used in the past both version: free and paied (team group). It's a gret service expecially when BitBucket is integrated with Atlassian suite (JIRA, Confluence and so on, https://www.atlassian.com/software).

After a period of evaluation I discovered GitLab.com. This platform offers many versions of the solution, on cloud or on premise.

I adopted the free plan on cloud (https://about.gitlab.com/gitlab-com/):

Advantages

  • Unlimited repositories
  • Unlimited private collaborators
  • 10GB disk space per project (including Git LFS and artifacts)
  • Completely free, no credit card required
  • Unlimited CI Runners to do parallel testing
  • Alternate SSH port for git+ssh (443)

Features

  • Unlimited public and private repos
    • Create a new repo for even the smallest projects.
  • Project importing
    • Import existing projects from GitHub, BitBucket, Google Code, Fogbugz, or any git repo with a URL.
  • Protected branches
    • Control read/write permissions to specific branches.
  • Wiki
    • Keep your documentation within the project using GitLab’s built-in wiki system.
  • Code Snippets
    • Collect and share reusable code.
  • Powerful APIs
    • Control GitLab with a set of powerful APIs.
  • Issue and MR Templates
    • Create templates for issues and merge requests.
  • Milestones
    • Organize issues and merge requests into groups.
  • Labels
    • Categorize and track issues or merge requests based on descriptive titles.
  • External Services
    • Integrate with 24 external services (such as JIRA, Slack, Asana and more) to track progress across all the tools your team uses.
  • Due dates
    • Assign due dates to issues to make sure things get done on time.
  • Powerful search
    • Spend less time searching and more time building software.


I appreciated the WIKI, ISSUE, Slack Integration and the import repositories from BitBucket.

I've started to use the free plan. I create a group of project and I imported my projects from SVN.

In order to import repository it's easy.

Here there's the first problem with GitLab there isn't an available GUI to manage the resources easily on you computer, some operation are avaiable via Web Browser at gitlab.com. Clearilly, for git lovers this is an opportunity to use git bash.

Step to import projects follow:

  1. Create a group via gitLab.com console (Optional)
  1. Create a project under groups and save the reference to repository, something like this : https://marco.genova@gitlab.com/my-group/super-project.git
  2. In local, checkout from svn the branch of the project to migrate, I've used TortoiseSVN (https://tortoisesvn.net/)
  1. Access to git bash
  1. Reach the directory target of the checout opertation
  1. Lunched the command:
    • git svn clone svn://myhost/svn/repos/project/Branches/the/last/branch
  1. Launch the command, to expand buffer of HTTP connection
    • git config http.postBuffer 209715200
  1. Add origin to project via command:
  1. Push on server:
    • git push -u origin --all
  1. Exit from git bash


After this step, I created development branch via Web Browser at gitLab.com.

A detail on SSH connection, I had all configuration for gitHub and I had a ssh key pair created yet so the operation was completed in 30 seconds (.. to Mars). The guide of gitLab is easy to follow:  https://docs.gitlab.com/ce/ssh/README.html#ssh

... For Raspberry PI lovers, youcan create a cluster of PIs with Swarn and deploy with Docker approach GitLab. I want to spend some time to implement this solution.

That's all Folks..

Please comment i f you have some tips or tricks on this approach.