From CVS to Git: thirty years of source control, lived from inside
Posted by Bonejob@reddit | programming | View on Reddit | 57 comments
Posted by Bonejob@reddit | programming | View on Reddit | 57 comments
shoot_your_eye_out@reddit
We used to call it Visual SourceUnsafe.
Truly one of the most awful software products ever released to market. I would use nothing before I used Visual SourceSafe again.
lizardhistorian@reddit
Oh sweet summer child; PVSC and MKS are worse.
shoot_your_eye_out@reddit
I've never used either, but that's a bold claim. VSS was so bad that I repeatedly lost huge amounts of work, and backing up the VSS database wasn't a choice, but a requirement.
Truly one of the worst pieces of software I've ever had to use.
lfjeff@reddit
I’m so old, I also remember SCCS and RCS.
therealhdan@reddit
I remember but never used SCCS. I used RCS (briefly) then PVCS for a while.
A shop I was at in the late 90's briefly went through a "use some crazy homebrew tool a friend wrote while at another company" phase with "Mr. Mongoose". (Google predictably does not know about Mr Mongoose the way I remember him. Probably nobody outside Origin Systems and a few indy shops in the area have ever heard of it.)
"SourceUnsafe" got slightly safer to use once we figured out that it interacted poorly with whatever remote desktop system we had at the turn of the century. We used CVS on a "pirate server" brought in by one of the other devs for extra code backups, and that came in handy more than a few times.
I don't miss those days.
lizardhistorian@reddit
I did not know there was a tool before RCS.
PPatBoyd@reddit
I wondered if perforce would make an appearance; I'm not sure how its history tracks relative to CVS and SVN, both of which I knew of from internships at various companies.
IIRC both Microsoft and Google paid to make internal forks of perforce (Microsoft for sure) though I don't know the deeper Google history. Besides MSFT making the SourceDepot fork, it also took division-specific approaches to horizontally scaling (Windows) or vertically scaling (Office) to meet demand. One of my early projects at MSFT was building a code migration loop to enable code changes to sync between the Windows and Office codebases... Good times.
lizardhistorian@reddit
ClearCase is the alternative tool at that level and I would recommend customized Perforce 110% over that.
Bonejob@reddit (OP)
A thirty-year practitioner's history of source control — zip-files, SourceSafe, CVS, Subversion, BitKeeper, Git — written by someone who used every one of them and lost code in most of them.
Let me know your war stories with Source Control
mattsmith321@reddit
No Serena PVCS? Lucky!
lizardhistorian@reddit
The only thing worse than PVCS is MKS.
WoodyTheWorker@reddit
"Directories? Who needs directories!"
mr_dfuse2@reddit
ooh i was there, doing late hours in order to be able to check out the whole repo to refactor with jbuilder. exclusive checkout locks were such a joy
jward@reddit
My personal defeat at the hands of source control was going through a few of these and then when git came along my stance was 'Screw it. This is just the new fad and I don't want to switch my codebases over just to switch again later. It'll blow over in a few years and then I'll upgrade to that.' Stuck with Subversion way too long thinking that git was getting older and older and so obviously any day now the new hotness would arrive.
The new hotness did not, in fact, arrive.
Bonejob@reddit (OP)
Nope, I think Git is it. Not sure what you could add to Source COntrol to make a better SC from GIT.
lizardhistorian@reddit
You need to use more systems then.
As one example, an enterprise level feature missing is "views".
ClearCase and Perforce both have it.
lunchmeat317@reddit
It'll change when we have collaborative codespaces and multiuser editing - it'll be a full paradigm shift in the way that DVCS were a paradigm shift for source control. I think Git is the pinnacle of what we have now, though, and I don't think that other DVCS will offer much new functionality.
SkoomaDentist@reddit
Get rid of the braindead idea that the UI has anything to do with the internal operation and make a proper user interface that never once exposes the internal limitations. And no, such UI has nothing whatsoever to do with being graphical or text based.
wildjokers@reddit
Sensible command names and a non-atrocius CLI.
The_wise_man@reddit
IMO jj is the new hotness. The universal
jj undocommand and working-set-as-commit feature are killer.Nopey_99@reddit
RCS anyone?
tchernobog84@reddit
You forgot to cover GNU Arch, which had a lot of seminal ideas which would then be translated to git. And bazaar, which for a while seemed it would get the crown.
PerkyPangolin@reddit
Why did you have to remind me of SourceSafe? 😵️
mr_dfuse2@reddit
when we as the java boys were already using svn and eclipse, the microsoft boys at our company were still raving about sourcesafe and visual studio. both felt already antique at that time
Bonejob@reddit (OP)
Yeah, fair point. Easy to forget now, but plenty of shops with more than a handful of developers had their own version-control-shaped thing. Usually a script over a network share. Sometimes a CGI front-end on RCS. Occasionally something more ambitious that the original author had since walked out the door with, leaving a file format nobody else understood. The worst corruption stories from that era often weren't from VSS. They were from in-house systems nobody could fix once the maintainer was gone.
I personally stuck with zips at my first job. Only two of us, so rolling our own wasn't worth it.
PerkyPangolin@reddit
I have nightmares of custom source controls that would write files straight into a DB directly via a GUI over several layers of encrypted connections with no conflict resolution, essentially TOCTOU. Imagine writing to the same collection across threads with not locks. That, but with data. That was at the time when SVN already existed, so no excuse, except for NIH.
Bonejob@reddit (OP)
NIH that a new one on me now I have to go figure out what it is :)
PerkyPangolin@reddit
Not invented here. That is everybody implemented their own source control.
Bonejob@reddit (OP)
Ya that is my bad, i reread what you said and I realized my mistake. I deleted it and put some thought to the reply :)
Bonejob@reddit (OP)
right, shit. Missed it, brain fart. I revised my post
rpgFANATIC@reddit
CVS was the absolute pinnacle of "we need to convince management to drop everything and let us figure out how to migrate off this"
Granted, by the time I was on the scene, CVS only existed at places where managers did not care
lizardhistorian@reddit
Before CVS there was RCS
awry_lynx@reddit
-
-
-
-
-
Hi, Claude.
I don't really have something against people putting their writing through AI, but my personal opinion is it makes the reading experience worse. Those little turns of phrase Claude loves just aren't very good. Your content is cool, don't let LLMs put frilly bows on it.
Bonejob@reddit (OP)
Yeah, fair. Wasn't an LLM, was me + Grammarly, but honestly Grammarly nudges you toward the same kind of tidy parallel cadence so I'm not sure that distinction helps me much. And you caught me on the "X is worth Y-ing" thing — three of those in one post is too many, that one's just a tic I've got.
"Don't dress it up" is the bit that landed. Going to be more spartan next time.
Thanks for actually engaging.
lunchmeat317@reddit
That's not on you. It's almost a form of anti-intellectualism at this point - LLMs use good writing practices, so we're almost forced not to just to prove that we did the work. It's like putting wrong answers to math problems to prove you didn't use a calculator. Fucking dumb.
gofl-zimbard-37@reddit
I always saved my backup files to /dev/null. Never ran out of space there.
dan00@reddit
Yeah, it's great, and using /dev/random for the restoring.
Absolute_Enema@reddit
Does it support sharding?
Shred_Kid@reddit
It's web scale
mjbmitch@reddit
Hey! I’ve read at least of your blog posts in the past. I’m so glad you added a tweak to disable the animation! Thank you!
Teknikal_Domain@reddit
Interesting.
To my knowledge, Monotone is the reason Git and later options use SHA hashes as commit identifiers, not monotonic IDs (of some form, from mildly sensible, to CVS). I'm surprised that wasn't mentioned.
rpgFANATIC@reddit
Still a little sad that Hg never became a bigger thing. Years on, I can see that git's fundamentals made it a stronger tool, but Mercurial was so much easier to learn and user-friendly than git was
mr_dfuse2@reddit
i quit programming around the time git became popular, was glad i didn't need to learn it completely
rpgFANATIC@reddit
Learning git completely is like learning all of Linux's tools completely
Just use the handful of things you find useful, occasionally go deeper to find tricks that make your life easier, and then understand there's infinite depths you don't want to go spelunking in
SkoomaDentist@reddit
Mercurial had one major flaw: The utterly braindead idea of tying branch identity to the user visible branch name.
AmericanSuperstar@reddit
Great write up. VAX how I miss you, that was a fun memory. My nostalgia brain still thinks Vax could hold up today. It just never went down.
Absolute_Enema@reddit
Had to deal with SVN through a UI in some broken ass Eclipse based IDE while in uni.
When I was introduced to Git and its overall sanity at my first job I breathed a long sigh of relief.
wildjokers@reddit
SVN itself was fine, especially once they finally fixed SVN-898 (https://issues.apache.org/jira/browse/SVN-898). It did take them ~14 years to fix it, but fix it they did.
This is the bug that made it so you couldn't rename a file on a branch that had changes in trunk. You could avoid that scenario but it was a huge limitation. Besides for that SVN was fine. I actually found stacking branches much easier in SVN. I could be several branches deep and have no problem merging them all. I wouldn't even attempt that in git. Too hard to merge them, especially if you squash merge commits on parent branches.
demchaav@reddit
The monorepo discussion is fascinating because it highlights how VCS philosophy evolves with team scale. SVN struggled because it wasn't built for distributed teams. Git won because it solved the right problem at the right time. Now we're seeing that git itself has limitations at massive scale (hence Piper, Mercurial). It's cyclical.
peppedx@reddit
Incredibly i changed job last month. Landed on SVN.
No mention of clearcase is strange though
Initial_Low_5027@reddit
Had to use AccuRev. Never again.
ambientocclusion@reddit
Fortunately I was able to avoid Git and use Perforce instead.
Luolong@reddit
A nitpick though.
With SVN, you could absolutely work offline. You checked out your local working copy and went right ahead working on your stuff.
You just couldn’t do versioning operations without connection to SVN server, as those were explicitly client-server operations.
chefox@reddit
Great writeup, but not mentioning monorepo challenges with the git model is a bit of a miss.
In particular, Perforce and how Google turned it into Piper (and later Fig and then big contributions to Jujutsu) is missing a big chunk of the history.
Facebook's work with Mercurial is similarly important. Git refusing to accept contributions from big monorepo-using orgs has historically shaped a lot of version control history.
Bonejob@reddit (OP)
I mainly concentrated on the stuff that I had firsthand knowledge of. Do you think its worth doing a full history of Source Control?
chefox@reddit
Nah, just the major players. Maybe do a followup talking about monorepos and big companies (especially how Microsoft's ownership of GitHub has to be influencing Git development now).
Bonejob@reddit (OP)
"GitHub has to be influencing Git development now" is definatly an issue, i recently droped doing any real work on Github and switched to self hosted Gitlab.