WelcomeQuick show of hands - already using git - hand down > 6 months - considering future
Open Source Distributed Version Control System “Distributed” = repositories shared, cloning, no need for a central repository.very fast - working locally and commits are very inexpensivehighly scalable and does not impose rigid workflows flexible - moulded to required development processes instead of the other way arounddecentralisation+>Enterprise challenges to adoptingenterprises = control via centralisation, tight integration & tight process managementsometimes achieved through monolithic single vendor solutions - enforce a processSupportone way to look at the adoption challenges for git within the Enterprise - Git as +>empowering the developers - whereas the Enterprise wants to +>constrain and control everything
The questions is: are these positions mutually exclusive? Can you..+>Distribute work but retain control+>Enforce centralisation where necessary+>Enable ‘Best of Breed’ tools, keep integration+>Enforce process while remaining flexible+>Get support when there is no vendorCan you , in fact, +>constrain but also empower using git?
Git is all about decentralisation - strengths = at its core, a distributed system - performance - flexible system - branching & merging+>As well as the strengths there are, of course, weaknesses…Large files = bloating - artefacts >> Artifactoryand similar release management tools are more suitable for this.Does not constrain users to a particular workflow - strength and, from a ‘control’ perspective a weaknessWho has what and who is doing what – again ‘control’ concepts. With a DVCS, conceptually everyone has everything.+>Define working practices & implement Gatekeeper functions - to review and manage these processes - simple - extension of the code review processesUtilise “Feature Branches”.
<< looked at a team working level >> teams work and collaborateMyth: central repository is not possible+>everyone has their own copy = issues - cloning large source repositories - access control Git (‘out of the box’) is weak on access controls - premise to prevent write back to ‘master’ by other than approved partiesFragmentation of the repositories - reusable/shared elements reduces the size of repository clones and helps to address access issues.+>Utilising branching functions >> Integration and Release branches on the central repository - Developers have read access to the masters - Feature branches from the Integration branch - Gatekeepers deliver back to the Integration - Merged to the Release branch as it passes QA, UAT etc.tools such as Stash, can manage who has write access to individual branches.
A viable concern for the Enterprise is the integration of Git to other tools. +>Historically, enterprises = single monolithic toolset for the implementation of ALM. However, often force the adoption of processes = barriers in an Agile world.Last few years = significant trend >> Best of Breed toolsThis leads to question of integration and how these often disparate tools can work together as a cohesive whole.Git some issues maturity of GUI tools & open source and community = concerns stability+>Growing maturity of the tool itself & direct support - broad spectrum of vendor products (for example the Atlassian suite, Microsoft Visual Studio and Jenkins) = enterprise ready
To implement Git in the enterprise a multi-phased strategy is essential.+>Git introduced performance enhancing & flexibility, branching and merging features, tool integration and inherent auditing features.Split Repositories & define suitable access rights and protocols = enterprise ensure that the correct controls are in place to prevent, for example, accidental release of untested code.+>By adopting one or more suitable development processes and monitoring and managing these processes using suitable tools and the Gatekeeper philosophy an enterprise can ensure that satisfactory standards achieved across the organisation.
Git inherently empowers the development process and we have looked at the challenges for the enterprise. Lets look at some of the tools+>JIRA = sound and flexible solution & coupled with the Greenhopperfully Agile compliant.Git lacks core authentication and access control systems & +>Stash provides and excellent solution.Code inspection and Review +>Crucible & Open Source tool Review BoardFeature branching, Gatekeeper processes & control of branching strategy, integration base lining >> products such as +>AgileSCM from Clearvision.Wider integration - too many to mention - a few are +>Bonfire, Bamboo, Artifactory, Jama Contour, Eclipse, Visual Studio and Jenkins
So that then begs the one final question which is solution support.The +>weakness for the enterprise - solution is Open Source - thus no vendor to specifically support itGit has a strong and active development community ensuring that bugs and new features are addressed rapidly. Vendors >> (Microsoft and Atlassian) committed - best of breed solutionSignificant use by private individuals & enterprises often find developers already familiar with git - private or previous employmentSignificant commercial support available for git with training, mentoring and administration assistance available on a world wide basis.Adoption +>of Git into the ALM process will impact a significant portion of the process & require a re-think on supportOpen Source should not be a barrier to adoption
When you consider Git and the Enterprise, adopt it for its strengths and mitigate the relatively few weaknesses as we have seen today.+>You can constrain and yet +>empower!
And just to put some perspective on we are seeing as consultants in this space…Ever wider adoption across all sizes of organisation - 90% of our consulting engagements have a Git connection - commonest areas we assist with is adoption and best practicesThank-you