3 min read

7 steps for a painless SVN to Git migration | Praecipio Consulting

By David Stannard on Sep 10, 2021 10:24:00 AM

Blogpost-DisplayImage-September-2021_7_steps_for_a_painless_SVN_to_Git_migration

Praecipio Consulting is frequently asked about migrating from various software version control systems to Git-centered tools such as Atlassian’s Bitbucket. Excellent news time: this is definitely possible and can be done in a painless fashion! Some organizations confidently plan and migrate by themselves. But … there’s always a “but” … be forewarned - there isn’t an “easy” button. Your success depends upon investing the effort, both in planning and in communicating with your teams. However, many organizations prefer using experienced 3rd parties who will focus on doing something not considered an organizational core competency. Praecipio Consulting often assists clients in their migrations: our approach is based upon proven tools and processes honed by multiple engagements over the past 15 years. 

Nonetheless, there still isn’t an “easy” button and the client’s involvement is integral to the final outcome as unique aspects are often uncovered.

If you still use Subversion - also known as SVN - as your software version control tool, you can be forgiven in believing that you’re alone. Searching the web yields many documents from circa 2012 which often containing phrases similar to “… 90% of developers have already migrated to Git …”. However, as recently as 2018, literature also indicates that SVN is still used because its users value its strengths over Git.

So say your organization has a business need to switch from SVN to Git. This might be because your organization has distributed development teams, or maybe the usage of SVN negatively impacts attracting new developers who expect a distributed version control tool such as Git or Mercurial.

Bottom line: you need to adopt Git and also migrate some or all of the information contained in SVN to Git; this blog assumes this means a codebase.

To better understand the implications of a migration - I suggest Stefan Holm Olsen’s explanation. Stefan led the migration of an 11 year old SVN, commercial grade codebase to a new Git codebase. All while continuing active development (https://stefanolsen.com/posts/migration-from-subversion-svn-to-git/ and https://www.atlassian.com/blog/git/atlassian-svn-to-git-migration-technical-side).

Atlassian documents a simpler case of a single SVN subfolder being migrated to a new Git repository (https://www.atlassian.com/git/tutorials/svn-to-git-prepping-your-team-migration) This may be sufficient for some do-it-yourself organizations.

In either case, it helps that the migration team understands how Git works and also the differences between Git and SVN. (If not, I suggest a quick detour to https://docs.github.com/en/github/importing-your-projects-to-github/working-with-subversion-on-github/what-are-the-differences-between-subversion-and-git and https://git.wiki.kernel.org/index.php/GitSvnComparison.) Most software engineers and developers are already familiar with Git - hence the examples address the potential SVN knowledge gap.

Stefan described a 5-step general process. The following 7-step process results from adding a preliminary step, because similar to Agile, the human aspect is primordial. Having an internal champion or two will certainly help increase the odds of a successful migration. An intermediate Git repo step is also added, although the brave may choose to go directly to the final destination. Like any undertaking, communications and scheduling are critical.

  1. Plan your migration including the often overlooked human considerations:
     - What can remain in SVN? What can / can’t be lost?
     - Understand the impact to release notes and governance
     - Identify the impact to your CI/CD environment
     - Determine the timing of the actual migration (weekend, overnight, etc)
     - Train users on how to effectively employ Git
     - The comms plan: who’s communicating, how, and the regularity of the updates
  2. Identify users and their correct names pre & post migration
  3. Choose a location for your Git repository
  4. Prune the SVN codebase
     - Address multiple folders in SVN repositories
     - Thoughtful pruning of folders, files, old and unneeded branches
  5. Create an intermediate repository to support the migration
  6. Migrate from SVN to the intermediate Git repo
  7. Migrate from the intermediate Git repo to the target production repo

Migrating from SVN to Git should not be feared. There are known processes when migrating from source code systems. Some planning and a lot of communicating will go a long ways towards a successful migration. If you need an expert hand in planning and executing your migration, contact us, we would love to help!

Topics: blog best-practices migrations plan repositories svn git coding
2 min read

Should Stories & Bugs Follow Different Workflows?

By Joseph Lane on Mar 31, 2021 10:07:00 AM

Blogpost-display-image_Should stories and bugs follow different workflows-The short answer: Not really. Stories and bugs are both software development items by different names. As such, the vast majority of activities and controls that we model for a story are applicable to bugs. The key distinction between stories and bugs often comes down to data. Bugs should include Affects Version/sSteps to Recreate, Expected Behavior, and Actual Behavior. How and when we require this data relies on what practices we're observing.

For teams using Kanban practices where there is a Backlog status and a Ready for Development status, the transition to Ready for Development can be used to capture required data based on issue type. In this simple case, we would have two transitions from Backlog, Ready for Dev and Ready for Dev - Bug. For each transition, include a transition-specific screen to capture the appropriate fields.  Example: SDLC Ready for Dev - Bug Transition Screen will include: Affects Version/sSteps to Recreate, Expected Behavior, and Actual Behavior in addition to any other fields needed in both cases. Then, leveraging your workflow conditions allow the Bug issue type to only use the Ready for Dev - Bug transition. All other issue types can default to the Ready for Development transition by explicitly checking that the current issue type is not a bug.

The considerations above work well in workflow cases where you have gated controls as a function of status change. This might apply to teams that include requirements definitions and design efforts within the story or bug life cycle (as might be the case with Waterfall). Additionally, this logical approach allows for workflow reuse which in turn decreases administrative burden and increases process consistency.

Scrum teams view Ready for Development a bit differently. Good Scrum practices dictate that product owners will refine their backlog as items are prioritized upward. Refinement provides all functional details necessary for the scrum team to be able to work the ticket including validation of bug reports and associated details. Once prioritized, the development team will review stories and bugs at the top of the backlog to make sure they understand the requirements. The work is considered Ready for Development at the moment it is accepted in to a sprint.

I hope this explanation helps you avoid unnecessary workflows!

Topics: blog best-practices bugs kanban scrum workflows software-development coding
2 min read

Affects Version vs. Fix Version in Jira: The Difference

By Jerry Bolden on May 12, 2020 9:15:00 AM

2020 Blogposts_What’s the difference between Affects Version & Fixed Version-

In today's post, we'll address the age-old question: which came first, the Affects version (egg) or the Fix version (chicken)?

Both of these fields are automatically created in Jira out of the box. They are related to Software Development Life Cycle (SDLC) projects and are the foundation of releases in Jira. While they are linked and work in tandem at some points, there is a best practice when using the versions inside of both of these fields. Before we delve into how they relate, let's define what each field is and how to properly utilize them. 

What is Fix Version?

Fix version is the release version used to track different software developments and/or any updates. You fill out the Fix version to ensure that as you develop stories, and you can group them together when setting up a release delivery. This release could contain multiple issues created to serve different client needs, and this is designed to help each development team and PO (product owner) track all code to be released at one time. 

What is Affects Version?

The Affects version allows you to track bugs or defects that exist in already-released code. The bug will have a new Fix version on it, which will designate the code release where you can find the solution. Additionally, you can query off of this field to identify which code is having problems after its development and scheduled release. 

Which Comes First?

Now that we reviewed definitions of each version, we can answer the age-old question from the beginning of the post: which came first? In this instance, the Fix version (chicken) comes first. Not only does it group issues together for release, but it's also a way to use the Affects version field properly and efficiently. Without the Fix version field, the Affects version field cannot tie any detected issues back to the respective code releases.

When using these fields, start by tracking releases through the Fix version field first, then use the releases to connect any bugs you found to the Affects version field. This does not stop anyone from using a new Fix version on the bug issue and linking it to a new code release.  

I hope this information will help settle any office disputes about which comes first! You should now be able to communicate through examples with Jira. Think about it this way: if the egg came first, the system would be ineffective, so the chicken most definitely came first. If you want to have a friendly debate about this age-old question or discuss anything related to Jira and/or software development, reach out to us!

Topics: jira blog sdlc tips jira-software coding
2 min read

From Atlassian: Finally, Bitbucket Supports Git!

By Praecipio Consulting on Oct 3, 2011 11:00:00 AM

Bitbucket now supports Git!

You’ve been asking for it, the Bitbuket team has even joked about it – now it’s here (for real): for the one year anniversary of Bitbucket joining Atlassian, they’re announcing Git support.

All your source, all in one-place
Whether you are using Hg or Git, you can now keep all of your code in one place with your preferred DVCS format. If you have existing code you would like to migrate, you can easily import your Git, Mercurial or Subversion source code. Atlassian’s added a new importer for GitHub to our existing site importers which include SourceForge, Google Code and Codeplex.

Unlimited private and public repositories
A big advantage for Bitbucket users is the ability to have unlimited private repositories for free. This means you can store every line of code you’ve ever written in one place without paying a cent.

Notable Changes

UI improvements have been happening gradually over the past six months:

  • Commit and file history browser
  • Source viewer
  • Issue tracker browser
  • Project downloads

Today’s release includes a new UI for the repository and user administration pages. A never-ending goal is to make Bitbucket easier to navigate and use the operations you need fast.

Get your Git on

Pull requests, code commenting and key integrations with developer tools (Jira, Flowdock, HipChat, Twitter, Bamboo, Jenkins and more) have made this a feature filled year. And now Atlassian adds Git…

If you haven’t checked us out lately, Bitbucket has had a year of record growth – more than tripling the number of accounts since the acquisition, adding over 350 improvements, bug fixes and new features. Sign up now (no credit card required) and get unlimited private repos for free!

Were do I find the latest updates about Bitbucket?
Visit the Bitbucket blog at http://blog.bitbucket.org.

Topics: jira atlassian blog administrator bitbucket bamboo distributed-version-control-system google hipchat repositories twitter support developers git coding

Praecipio Consulting is an Atlassian Platinum Partner

This means that we have the most experience working with Atlassian tools and have insight into new products, features, and beta testing. Through our profound knowledge of Atlassian environments and their intricacies, we can guide your organization as you navigate these important changes.

atlassian-platinum-solution-partner-enterprise

In need of professional assistance?

WE'VE GOT YOUR BACK

Contact Us