Version Control in Orbiter Add-On Development

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
Location
Vienna
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.
bugsbunnyhereiam.jpg



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.


  1. 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).
  2. 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.
Now that there is that crude outline, let's give this first post a little content.

"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:

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.
And if this even adds more "Huh?" to the "What is version control?", please let me put it like so:

It's the developer's time-travel phone-box, dude.
bill-and-ted.jpg


And with that I'll keep you "excellent" wondering what the next issue might bring.
 

Marvin42

Mostly Harmless
Joined
Nov 1, 2011
Messages
67
Reaction score
0
Points
6
Great blog post, just a specification, it's not a phone-box, it's a [ame="http://en.wikipedia.org/wiki/TARDIS"]police-box[/ame]...eh, i guess :p
 

agentgonzo

Grounded since '09
Addon Developer
Joined
Feb 8, 2008
Messages
1,649
Reaction score
4
Points
38
Location
Hampshire, UK
Website
orbiter.quorg.org
:thumbup:
I totally agree with the "I'm going to talk about Mercurial only. And definitely not Git". I'm a Git proponent but talking about other VCSs will only muddy the waters.
 

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
Location
Vienna
Marvin42;bt4855 said:
Great blog post, just a specification, it's not a phone-box, it's a police-box...eh, i guess :p

Hehe. OK, for you Doctor Who folks time-travel in style is only possible in police boxes, I see. Here I referenced Bill & Ted's ride, though, but whatever... :cheers:
 

Izack

Non sequitur
Addon Developer
Joined
Feb 4, 2010
Messages
6,665
Reaction score
13
Points
113
Location
The Wilderness, N.B.
Glad you decided to blog about this, Face. This one needs a good coax in that direction.

LOL, Bill and Ted. Wow, it's been a while.
 

RacerX

Donator
Donator
Joined
Jan 3, 2012
Messages
303
Reaction score
9
Points
18
Location
in a field
so what is bit bucket considered? I'm lost. Are you proposing a type of tortoise or bitbucket type of repository for orbiter addon and projects. A way to easier keep track of what's being developed for orbiter? If that's the case I like the idea...but getting people to follow a certain standard may prove a bit more difficult...if this is what you are trying to say. for example I prefer Winrar to winzip or 7zip. And if you make a addon and upload it to the hanger as a .rar file people start getting frustrated in their posts. And that's fine because it is a standard that has developed among orbiter users through the years. So I complied by that. But yes I do like the idea...if this is what you are proposing.
 
Last edited:

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
Location
Vienna
RacerX;bt4861 said:
so what is bit bucket considered? I'm lost. Are you proposing a type of tortoise or bitbucket type of repository for orbiter addon and projects. A way to easier keep track of what's being developed for orbiter? If that's the case I like the idea...but getting people to follow a certain standard may prove a bit more difficult...if this is what you are trying to say.

No, this is not the idea. I'm just going to explain how I am developing add-ons with a DVCS. Period.
I'm not going to tell you what you should do, just what you could do, because there obviously are people that don't know what possibilities there are, but nevertheless suffer from the consequences.

RacerX;bt4861 said:
for example I prefer Winrar to winzip or 7zip. And if you make a addon and upload it to the hanger as a .rar file people start getting frustrated in their posts. And that's fine because it is a standard that has developed among orbiter users through the years.

Let's stay with your example. Winrar, Winzip, 7Zip are all tools for the same purpose: compression/packaging of files. By convention, the Orbiter community decided on one format for better package exchange. This is true. But where is copying single files to a remote machine in here? Where does sneakers-net fit in here?

Ridiculous, you'd say, of course I'm not going to copy every single file somewhere on a media to transport it somewhere else! Of course I use a compression/packaging tool to send it via network!

But I see it just the same with development of add-ons: it doesn't matter what the community does or does not agree upon regarding what version control should be used, if there are people that don't understand the concept of version control at all. The tool you use in the end (SVN, CVS, TFS, Perforce, Git, Mercurial, Darcs, Bazaar, Fossil, Veracity, younameit) is not so important as the fact that you use a tool at all.

Especially with modern tools, there is no more excuse to not use version control in development IMHO. Therefore I'm writing this blog series.
 

NukeET

Gen 1:1
Addon Developer
Donator
Joined
Oct 16, 2007
Messages
1,035
Reaction score
93
Points
63
Location
UT_SLC
Website
sites.google.com
I'm not a proponent of any particular type yet. I've chosen to look at/try out Git first. And subscribed to this blog to speed up my ascent on the learning curve.
 
Top