So there I was wondering what version control system folks use for Orbiter add-on development.
"Let's start a poll about it", I thought.
"Let's put a I-don't-have-a-clue-what-you-mean option to the end of it", I thought.
...and of course people used that option! Around 30%, even!
So I opened my big mouth and asked if it would be a good idea to start a blog series about version control in add-on development. Some agreed, and well... here I am.
I think a good start of this series is a little structuring. What do I want to talk about, and what do I NOT want to talk about.
"Huh? What is version control?"
That was the exact phrase in the poll, and I think those who checked it really meant it that way. Some posters tried to answer that question:
Those answers are already spot on, but nevertheless, here is my own definition of it:
It's the developer's time-travel phone-box, dude.
And with that I'll keep you "excellent" wondering what the next issue might bring.
"Let's start a poll about it", I thought.
"Let's put a I-don't-have-a-clue-what-you-mean option to the end of it", I thought.
...and of course people used that option! Around 30%, even!
So I opened my big mouth and asked if it would be a good idea to start a blog series about version control in add-on development. Some agreed, and well... here I am.
I think a good start of this series is a little structuring. What do I want to talk about, and what do I NOT want to talk about.
- DOs:
- Why it is a good idea to use version control even for the smallest add-on project.
- Why it is a good idea to use a certain form of version control (DVCS) in the typical add-on team (lonesome cowboy).
- What I use as DVCS (Mercurial) and how you can get it working on your machine.
- How I use it from day to day.
- Use cases (this may be the open-ended part of the series).
- DONTs:
- How the cost/risk calculation balances. I happily leave that to bean counters.
- How a DVCS works under the hood. I know it, but I don't want to bore you mad with it.
- Why I've chosen Mercurial over X. Go play somewhere else if you came for that.
- Git. No, seriously, I know the previous point should include that, but proponents of this tool are particularly insisting, especially with Mercurial being mentioned. So here it is explicitly.
"Huh? What is version control?"
That was the exact phrase in the poll, and I think those who checked it really meant it that way. Some posters tried to answer that question:
Now it works, now it don't.
What happened?
With a change-by-change log of changes (which is the main use of VCS), it's easy to find out.
With a single, constantly changed project that you last backed up a week ago - it's anyone's guess, and no way to roll back.
a Tool to manage the changes to a file or multiple files.
Those answers are already spot on, but nevertheless, here is my own definition of it:
And if this even adds more "Huh?" to the "What is version control?", please let me put it like so:Version control is the means you use to keep versions of your add-on project under control. "Version" in this context is a snapshot of your project at a given time, "control" is every operation on the whole set of these versions. "Operation" can be as easy as restoring a specific version, or as complicated as tracing the changes to a certain mesh file throughout renames.
It's the developer's time-travel phone-box, dude.
And with that I'll keep you "excellent" wondering what the next issue might bring.