Perspective

Source control management (SCM)

SCM Migration 101

Victor Rinaldo S K,

Associate Architect,
Global Capabilities & Technology Solutions for Engineering Automation

 

Published: March 31, 2022

SCM migration overview

Managing and controlling versions of source code and assets is essential to accelerate delivery through DevOps for an enterprise. There are various distributed version control platforms, so migrating them is challenging without a proper plan. Some of the common aspects missed during migrations are the source control management (SCM) integrations, i.e., integration with build tools, deploy tools, artifactory, and other software development life cycle (SDLC) tools.

SCM migration is not just about switching from one version control system to another. It’s an opportunity to correct old inconsistencies or challenges and implement modern and collaborative workflows to make the developer’s work easier. We have covered key aspects of SCM migration in this blog to help you plan your SCM migration seamlessly.

Migration preparation

The migration preparation reviews the existing branching strategy and assesses the tool ecosystem and SCM tool integrations. Before migrating, it is essential to analyze the following steps and plan if any changes are required:

  • Directory structure planning and standards: analyze whether the code directory restructuring is needed, which could help in integration with the build tools
  • Release process: review the release process and have quality gates if required
  • Repository and branch cleanup: track, analyze, and clean up the unused repositories and branches
  • Address existing SCM challenges: a prior solutioning resolves the current SCM limitation by leveraging the features in the global information tracker (GIT)
  • Choosing migration tool/scripts: analyze the migration tools available that suit the migration or plan to develop the custom scripts
  • Training and transition: plan the schedules to train the developers to use the GIT platform

Migration checklist

Businesses need to identify projects and categories they want to migrate. Moreover, even before a repository is identified to migrate, organizations must be sure of the following:

  • Are we migrating an entire repository?
  • Are we migrating until a specific revision?
  • Are we migrating from an entire untouched history?
  • Are we migrating just tags and branches?

It is essential to be clear on these specifications, as migration has roles and permissions – that need to be migrated too –  such as role-based access control (RBAC), lightweight directory access protocol (LDAP), and active directory (AD). Finally, businesses must establish users and user groups and SCM integrations for migration.

Various phases of SCM migration and key aspects to be considered

Discover

Inventory

  • Repository
  • Infrastructure
  • Projects
  • Integration/ Dependencies

Perform Assessment

  • Identify Gaps
  • Identify needs/ Solution areas

Plan

Create plan

  • Inventory tools and assets connected to SCM
  • Create tool platform migration strategy
  • Unify SCM admins
  • Integrate users into the development process

Create Process reuse plan

  • Define “Active Code”
  • Templatize migration scripts
  • Templatize SCM practices

Establish Community Plan

  • Lock migrated repositories
  • Enable search, discovery and reuse of SCM assets
  • Establish reporting and enterprise wide visibility

Code Migration

Establish Project Workspace

  • Tool integrations
  • Workflow
  • RBAC (Role based access controls)

Train users

  • Project Admins
  • Team Members
  • Release Managers

Migrate Data

  • Finalize scripts
  • Migrate active code and related data

Team Sign Off

  • Verify migrated data
  • Analyse other needs
  • Development through deployment

Sustainment & Improvement

Drive Community Management

  • New user Onboarding
  • New project onboarding
  • New best practices
  • Reuse and collaboration
  • Measure Enterprise metrics

GIT Platform maintenance

  • Platform upgrade
  • Tool upgrades
  • Tool integrations

Perform Assessment

  • Identify Gaps
  • Identify needs/ Solution areas

 

Best practice for migration 

For any migration activity, it’s crucial to follow and adopt the best practices. Below is the list of SCM migration best practices that will help to plan your SCM migration with less pain:

  1. Coaching the users
    Change is difficult, especially if businesses are not predisposed to it. However, it can be made easy by following a proper action plan. Most GIT platform provides FAQ page detailing the benefits of migrating to GIT. The users should take advantage of GIT’s complementary training options.

    Before starting the SCM migration, a developer must be clear about: branch clean and confirmation, migration dates, post-migration support, etc. Thus, planning and conducting training sessions for the developers to set the right expectations about the support required for the SCM migration is of paramount importance. 

  2. Coordination with the users/teams
    As mentioned above, change can be challenging to implement. Significantly, the ones that take people by surprise and raise resistance. Even though moving to GIT is all about making developers’ lives better, the exact needs to be communicated to the teams involved. Clear and consistent communications about the migration process, including exact dates or windows, can give everyone plenty of time to adapt and prepare.

  3. Migrate in an iterative manner
    Due to history, current workflow, and current projects, specific repositories and teams are easier to migrate. Hence, one must not force migration teams to change abruptly, especially when they aren’t prepared. It’s always better to roll out the migration pilot approach with selected groups or users already familiar with GIT.

  4. Follow the best practice of GIT to maintain repositories
    Freezing source repositories (which means preventing new changes from being committed to those repositories) with a communicated freeze date can help reduce the chance of information falling through the cracks. Also, smaller repositories make migration easier—1 GB or less is ideal. You can use GIT-filter-branch and BFG repo cleaner tools to remove large files or track them with GIT-large file storage (LFS).

  5. Test
    There should not be any surprises with extensive practice runs during the actual migration. While we can’t make any guarantees, testing early and often, more importantly, documenting both the user and administrative processes during tests can reduce headaches later. 

  6. Do consider the integrations
    A common mistake made during migrations is leaving off integrations. With so much to port over, including repositories, teams, and more, integrations can be easy to forget even if they are vital components such as SDLC tools, build tools, deploy tools, Artifactory, etc.

    Migration is incomplete without integrating the above tools to GIT and could even impact the delivery and releases if not planned.

    Tool landscape analysis and the tools integrated with the current SCM to be assessed and planned for migration. In addition, thorough auditing of elements to migrate can help prevent this.

  7. Measure the migration success and metrics
    A migration doesn’t end when the last team joins your GIT instance. Ensuring that each team and project thrives on GIT happens through continued measurements showing where the project is successful and less so. While performance indicators vary, here are a few ideas to get you started: 
    1. Percentage of migrated notified teams 
    2. Satisfaction of teams with the migration process 
    3. Usage metrics from GIT
    4. Average migration time in days
       
  8. Migration using importers
    There are importers/ migration tools available specific to each GIT platform that can rapidly import the repositories to GIT.

    These importers not only import the code but also imports the commits and history revisions. Making use of these tools will help in achieving clean migration. 

Closing thoughts

Planning is the key to a successful migration. The above section covers all the key aspects to be considered, including migration preparations, checklists, and the best practices for SCM migration which can help businesses plan a risk-free SCM migration.

Transformative digital technology solutions

Dramatically increase the success of your digital transformation

Related content