version control question

No, I am not trying to start a holy war by asking which one to use. I am just curious… I have never used a VCS before but am familiar with the concepts. I only have a desktop license so I cannot save in text format, only binary. Would a VCS still be worth using? I am a solo programmer.

I’ve thought about just putting together some scripts and use rsync to save off copies as I go.



IMHO opinion, yes, even if you stick to binary, using version control is a real good idea to avoid losing your work, or to be able to go back to a working version.

You need some text version for VCS to be useful. I think @Thomas Tempelmann 's Arbed might help you, but beyond that…

If you did have the ability to save in text, is it worth it for a single developer? Absolutely! And I say that having once been where you are now, creating multiple backups and the like. It’s just not the same thing, and the first time you need to see where something broke or partially discard some code you were playing with, you’ll understand why. Consider upgrading your license just for this ability, if you can.

Right now I’m more of a hobbyist coder, so I can’t really justify upgrading my license. But I am constantly playing around and changing things in my programs which is why I am thinking VCS would be a good idea. Plus it would help me keep things more organized. I’ve read some stuff about using Arbed with SmartGIT, Tower, etc… as the diff tool.

Even without being able to see the diffs, the additional security brought by something such as Bitbucket is appreciable.

If you are in Windows, want it local, and want it free, check out TortoiseHG. They have a Mac version, but I don’t like it was well. Without a full license for saving in text format, you do miss out on being able to Diff your files within the TortoiseHG workbench, but it is still useful for keeping sanity in your projects. So easy to rewind to a previous version at any save point in time in your project’s history.

Just being able to write a note about why you made this particular change when you check it in is worth it. It’s changed my whole approach to development - do small discrete changes and check them in individually. No more wholesale, let’s change everything and see how it works in the end, changes. It makes you more intentional as a developer.

Still useful when no Internet connection available while coding (most of the time) ?

Advices with names ?
(that works without internet)

That’s why I use a local VCS and let my backup service handle keeping it backed up to the cloud.

+1 to what Tim said. I love the security a checked in version gives me. I can try all kinds of things in the code and if it all goes south and I don’t like the direction I take, its one click to get back to any other previous checked in code. Beats the heck out of deleting the project and unzipping files to get to a previous version, like I used to do 10 years ago

Thanks Merv.

I, usually, create a new project (when possible) and test there the new feature. Once OK (if OK), I put the new feature in the main project.

Excepted when I forget and I put the new feature directly in the main project :frowning: and it goes wrong :(. This happens.

Give VCS a try, it does what you said above, but so much easier. One other area it shines: If you discover a bug that you may have introduced weeks or months back and only recently saw, it is SO much easier to find which version the problem was introduced in. If you are on build 743, just rewind (one click for me in VCS) to say build 710. If it works OK, split the difference to 726 and try it there. Just like a binary search, you can usually find this version that introduced the bug in a matter of minutes. Of course, if you save in text version, you can also see the DIFFs and see the code you changed, but even without that, much easier to find the version. And as Tim mention, we type a little note with each commit, so you have a real good idea what you did.

Not sure if you are Windows, Mac, or Linux, but if you are on Windows, you can have TortoiseHQ installed and your first repository created in under 5 minutes. Just right-click on a folder and choose TORTOISEHQ / CREATE REPOSITORY HERE… that’s it, you are ready to start using. I cannot imagine coding without it.

I can say… all of them. My main development environment is Mac, but I have a second Laptop: a PC. I also have VirtualBox with Windows / Linux.

Of course all of that takes so much tims…

Thanks Merv, I will give a try to TortoiseHQ (to begin somewhere).

I may understand why msi *, but the Lord knows how much I dislike msi files. 'till recently I downloaded the msi file to discover (back home) that I have to run it (on the OC) and it download / install the real software :frowning:

  • msi will download what is needed for the running computer (I suppose); but - from its introduction date - if they provided a simple advertisement like: "Warning: downloading msi is just part 1 of the software download”, I will not get some anger against it ;)…

Mistyped in my last repsonse, it is TortoiseHG, not TortoiseHQ. TortoiseHG has a Mac version as well, but I don’t like it as well as the Windows version. The Windows version has been around much longer and most of the kinks have been worked out. A lot of people use online Version Control Systems like GitHub. Try it will a small example project to get the feel of it. Good luck in your efforts.

One other thing, I don’t use it for Branching / Merging, like most Dev teams would. As a single developer, there is not as much benefit to me, and the way Xojo saves it’s text version of the source files, sometimes methods in the files get rearranged, making merging more difficult. I mostly use it as a time machine that I can rewind to any other version quickly to aid with development and bug fixing.

[quote=295440:@Merv Pate]
One other thing, I don’t use it for Branching / Merging, like most Dev teams would. As a single developer, there is not as much benefit to me, and the way Xojo saves it’s text version of the source files, sometimes methods in the files get rearranged, making merging more difficult. I mostly use it as a time machine that I can rewind to any other version quickly to aid with development and bug fixing.[/quote]

It saves them in alphabetical order and doesnt rearrange them willy nilly like it used to
This has been true for several years now

I’ll have to check, but I don’t believe that may be the case. There are times when I look at the DIFF and some method I expect to in a certain place is way down in the file. Let me do some digging and if I see this is not the case I’ll post a FB.

Norman, are you just talking about Methods? Here are two Events in my code that are not in Alphabetical order and they both contain code:

#tag Events chkBudgetReserves
#tag Events chkBudgetFarm

I disagree this. I’m single developer/programmer too. I’m using Git and branching, merging, rebasing, cherry-picking, etc are really useful to manage large project.

How do you manage multiple release version? How do you fix a bug or introduce a new feature without messing stable code base?

Easy to tag each release in the source control workbench, and rewind to what I need, but in my project branching is not really necessary. But me deciding it doesn’t work well in my particular situation, isn’t really something you can “disagree” with. I said it doesn’t work for me, not that it doesn’t work for other single developers. I’m glad it works for you and others but branching / merging caused more problems than it was worth to me. Every project and product is different, it was just not as beneficial to me. Past efforts to merge code could sometimes lead to unstable project files, which can be a headache to straighten out. Again, this is something that there is no one right way to do things. I like Version Control and I hope it works well for Emile, but I am not about to tell him that it is the best way for him. He has to make that decision.

I realize that everyone has a different workflow.

for general project, it more easy to track each release using a tag.

I’m using workflow that similar to this A successful Git branching model »

Thanks for the link.