Engineers shouldn't need a CS degree to have a history of their work.

TL;DR
- RunMat versions every file save automatically. There are no commits, no staging area, and no git commands to learn.
- Snapshots capture full project state at any point; restore any version with one click.
- Every change creates an immutable audit trail with actor, action, and timestamp.
- Snapshot chains export as git-compatible history when compliance or CI/CD requires it.
Why do engineers use _v2_FINAL instead of version control?
If you have worked in an engineering team for more than a week, you have seen this:
thermal_analysis.m
thermal_analysis_v2.m
thermal_analysis_v3_FINAL.m
thermal_analysis_v3_FINAL_v2.m
thermal_analysis_v3_FINAL_v2_USE_THIS_ONE.m
This is version control for tens of thousands of engineers. Most have heard of git. Git just asks too much of them.
Why git doesn't fit the engineers who need it most
There is a large population of people who write code every day but work without version control: aerospace engineers analyzing thermal data, mechanical engineers running FEA simulations, physicists fitting models to experimental results, GNC engineers tuning control loops during a test campaign, electrical engineers writing signal processing scripts, engineers building hardware who version FPGA test benches and board-level analysis code, and embedded systems engineers managing firmware verification scripts. They learned MATLAB in a dynamics class or picked up Python on the job. Their relationship with code is practical: write it to solve a problem, run it, tweak it, run it again. Code is a tool for engineering, not the product itself.
Git was designed for professional software development teams and carries that audience's assumptions into everything it does. Its mental model — staging, branching, merge conflicts, detached HEAD — demands real learning. To use git you need working tree vs. staging area vs. committed state; branches, HEAD, detached HEAD; merge conflicts and resolution; remotes, push, pull, fetch; .gitignore, .gitattributes, git-lfs; and the difference between reset, revert, and checkout. For someone whose job is analyzing attitude control data or running Monte Carlo simulations, that is a real investment in a capability that has nothing to do with the work itself.
The friction does not stop at concepts. Git asks you to care about the difference between your working tree and your staging area. To an engineer focused on analysis, that distinction is meaningless. If I changed the file, I changed the file. Why tell the tool that I changed it before I tell it to save the change? It is a layer of bureaucracy between you and your work. Git also requires discipline to provide value: if you do not commit frequently, write descriptive messages, and manage branches carefully, you get almost nothing. A repo with three commits over six months — "initial commit," "updates," "more updates" — gives no meaningful history, and the discipline to make git useful comes from software culture that this audience does not live in. When things go wrong, git punishes harshly. A bad merge, a force-push, a detached HEAD, all confusing even for experienced developers, and for someone who just wants their analysis to work, a cryptic message about divergent branches is terrifying. Scientific computing adds another mismatch: large files. A default git clone downloads the complete history of every file, so a 500MB simulation result checked in today means everyone who clones that repo without special flags five years from now downloads it. In air-gapped environments, locked-down corporate machines, and classified networks, exactly where many of these engineers work, installing and configuring git is non-trivial: one more tool to get approved, one more dependency to maintain.
So they make the rational choice: spend their time on the engineering, not on learning developer workflows. They rename files and move on. Git is excellent for its intended audience. These engineers are simply not that audience, and the distance between "I want to undo a mistake" and "learn git" is too far to cross on goodwill alone.
What do engineers lose without version control?
In mission-critical environments the costs accumulate over months and years and show up when it matters most.
"Which version of the thermal model ran during the qualification test?" In a room of five engineers, nobody can answer with certainty. In defense and space programs, that is a compliance gap, not just an inconvenience. Accountability is the sharp end. The rest compounds: overwrite your working script with an experimental change and the old version is gone — sometimes you remember what you changed, sometimes you lose an afternoon reconstructing it. Two people need to work on the same analysis and they email the file back and forth, or both edit their own copy on a shared drive; changes get lost, work gets duplicated, nobody is confident they have the latest version. A result from six months ago cannot be recreated because the script has been modified twenty times since with no record of what changed or when. That kind of irreproducibility undermines both research and quality assurance.
| No version control | Git | RunMat | |
|---|---|---|---|
| Learning curve | None | Significant | None |
| When versioning happens | Never | Manual commits | Every save |
| Large file handling | N/A | git-lfs (complex setup) | Manifest versioning |
| Offline / air-gap | N/A | Requires install and config | Built into filesystem |
| Audit trail | None | Depends on commit discipline | Automatic |
| Team collaboration | Email / shared drives | Push/pull/merge conflicts | Real-time sync |
What if version control just happened?
When we built RunMat Cloud, we asked a simple question: what if version control worked like autosave, something the platform does for you rather than something you have to remember to do?
Save a file in a RunMat project and the platform creates an immutable version record: content hash, file size, who made the change, and when. It is built into the filesystem, so there are no commands to run and no workflow to learn. Code and config files (.m, .py, .json, .yaml, and others) always get full history; large binary outputs only get versioned when it is useful. For massive datasets, RunMat versions the manifest (a small pointer file) rather than the terabytes of data, so you get full lineage without the storage cost.
When you want to capture your entire project state — before a test campaign, before a major change, at a milestone — you take a snapshot. One click. It records every file and every version at that moment. Snapshots form a simple, linear chain — a clean timeline of project states without branching or merge conflicts. Pick any version of any file, or any snapshot of the entire project, and restore it. The restore itself creates a new version, so your history is never lost and you can always see what was restored and undo it if needed. Every change is recorded with who, what, and when; the trail exists because the platform creates it, not because someone remembered to write a commit message.
Can RunMat export history as git?
Some organizations need git-formatted history. Compliance reviewers expect it. CI/CD systems consume it. External auditors want to see a commit log.
RunMat handles this cleanly: your snapshot chain can be exported as a git-compatible history. Each snapshot becomes a git commit. Tags become git tags. The export is a standard git fast-import stream that any git tool can consume.
The key insight: git is an export format, not a daily workflow. Your engineers never touch git. They save files and take snapshots. When someone outside the team needs history in git format, you export it. One step, done.
For teams that want git as a continuous secondary record, RunMat supports two-way sync on a single linear branch. But this is optional — most teams will never need it.
What else does RunMat automate for engineers?
Automatic versioning is part of a broader design: bring modern platform capabilities to engineers without asking them to become software engineers first. File changes stream to teammates in real time via the collaboration layer — shared projects that stay in sync without push, pull, or merge conflicts. The theme is consistent: the best developer tools should not require you to be a developer.
Who fills the space between git and nothing?
There is a gap in the market that nobody talks about. On one side, there are professional developers with sophisticated git workflows, CI/CD pipelines, and code review processes. On the other side, there are entire teams of engineers writing critical analysis code with no version history at all.
Most of the second group are not going to adopt git. They have tried, or they have looked at it and decided it is not worth the investment. And that is a rational decision given the tools available today.
But the consequences — lost work, no audit trail, irreproducible results, compliance gaps — are real and growing. As engineering becomes more computational, as models get more complex, as regulatory requirements tighten, the cost of having no version history gets higher every year. The teams that figure out version control that fits how engineers actually work will have a real advantage when the next audit or reproducibility review lands.
Stop emailing scripts. Stop appending _v2 to filenames.
Go to runmat.com/sandbox, write a script, save it, and then click "History." That's it. You're done. You have version control.
RunMat Cloud ships with automatic versioning, snapshots, and git export built in. Read the full Versioning & History reference for details on how it works, or see how RunMat compares to other MATLAB alternatives for the broader picture.
Related posts

The Worst Debugging Tool in MATLAB Is the One You Use Every Day
fprintf is a formatting function that got conscripted into debugging because MATLAB never shipped anything better. Here's what it's actually for, what it costs you as a debugger, and what to use instead.

MATLAB For Loops Are Slow, But Not for the Reason You Think
MATLAB for loops are slow because of interpreter overhead, not because iteration is inherently expensive. Here's what actually causes the slowdown, what vectorization costs you, and how a compiled runtime changes the tradeoff.

MATLAB Alternatives 2026: Benchmarks, GPU, Browser & Compatibility Compared
A deep comparison of RunMat, Octave, Julia, and Python across 17 areas: execution speed, GPU acceleration, browser computing, airgap deployment, version control, and more. A 22-minute engineering guide.
Enjoyed this post? Join the newsletter
Monthly updates on RunMat, Rust internals, and performance tips.
Try RunMat — free, no sign-up
Start running MATLAB code immediately in your browser.