Source Code Management — More Than Just Git
While it may seem that there's nothing more to add to the source code conversation in the wake of Git, there's a new generation emerging.
Join the DZone community and get the full member experience.Join For Free
In 2019, it is easy to think we "solved" source code management (SCM), that we have it all worked out. Personally my journey started with Visual SourceSafe (terrible) followed by CVS (still terrible). I moved a few companies on to Subversion (great — had atomic commits; what a revelation). In the meantime, Linus famously called everyone stupid for using Subversion so I checked out this "Git" thing he "named after himself."
Git brought with it a few great things: distributed version control and this superpower to do things with branches and merging (in the past this was a bit terrifying).
Then GitHub happened, Bitbucket, and so on (interestingly Bitbucket started as mercurial, a similar version control system) and the rest is history. The world settled on Git, or seemed to. Its distributed nature still built in, but for the mainstream, ignored as people centralized around services like GitHub.
There have been other movements in the meantime, monorepos and so on (Google famously built its own system for their massive monorepo scale called Piper).
Largely it seems: Git Is It.
On one hand, it is interesting and powerful that as an industry we picked a tool which unlocked a bunch of productivity and patterns of usage, allowed skills to be portable across jobs and more. On the other hand, monocultures can be problematic if it means innovation stands still.
It is with interest I came across "Plastic SCM" a distributed (or centralized) "full stack" SCM tool (full stack in this sense means it isn't just a command line like git) alternative. You can consume it with the git command line if that makes you more comfortable, but it does have some powerful differentiators. The biggest differentiator for me was the ability to deal with large files: with Git we lost that capability and people had to find external places to park large assets, which is fine, but sometimes annoying).
There is, of course, a plugin that provides Plastic SCM integration.
From Jordi, product marketing manager at Plastic SCM:"What happened to version control in the last 15 years? What has happened with version control in the last years? I won't go down memory lane, don't worry. At Plastic we already made the walk down that road fairly visual with a short history of version control that you can find, download and, hopefully, print and hang in your kids bedroom.It is often the case that commodities are overlooked. Git, for the good and the bad, made version control a commodity. Everyone, since then, took for granted that modern version control was Git. Git was pretty revolutionary, to be honest, by providing the structure to program distributed. Services built on top of them were equally successful, like GitHub or Gitlab. The reality of modern-day software development is not commoditized or normalized at all. As popular as distributed programming is, it is not the best solution in every case and it hides a myriad of different edge cases that should be addressed and even named differently than distributed software development."
You can read more about Plastic SCM (yes, it works with CloudBees!), learn about "mergebots" (I bet you can guess what they do!). I am also interested to see the next generation of SCM with things like semantic merging (i.e. where your SCM actually understands the meaning of your source code, not just as lines of text). Innovation is still happening here!
Published at DZone with permission of Michael Neale, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Unlocking the Power of AIOps: Enhancing DevOps With Intelligent Automation for Optimized IT Operations
Mastering Time Series Analysis: Techniques, Models, and Strategies
Exploratory Testing Tutorial: A Comprehensive Guide With Examples and Best Practices
Implementing a Serverless DevOps Pipeline With AWS Lambda and CodePipeline