The Lounge is rated PG. If you're about to post something you wouldn't want your
kid sister to read then don't post it. No flame wars, no abusive conduct, no programming
questions and please don't post ads.
What would you recommend for simple and free source control? I have some side projects I am working on and the code is on my desktop. I also want to work on the projects with my laptop. It doesn't necessarily need to be online, I wouldn't think, but wanted to hear what y'all are using to access the same code from multiple systems.
If it matters, some of the projects are .Net and some are Unity. I am not interested in setting up my own server.
There are only 10 types of people in the world, those who understand binary and those who don't.
Also, if you end up liking Visual Studio Online, you can use GIT as source control provider, having the bost of both worlds; and if you don't like command line to manage commits, etc. you can use GITKraken... it has awesome and very visual UI
I've used Git, Mercurial, SourceSafe and TFS, even (from the dark ages) DECset on VMS and an SCM on CDC Kronos systems (darn, can't remember the name, and yeah, SCMs have been around on mainframes since the 1960s). TFS gave me the least amount of trouble. I develop both C# and .NET alongside embedded "bare iron" ARM GCC using Eclipse. TFS worked fine for both.
Working with embedded involves building boards as well as writing code. I used TFS to version schematics, PCB layouts and reference manuals, even field service work instructions, along with code. That's where the database method is handy; it stores binary BLOBs as wll as code deltas.
What I like best is the lack of "file droppings" in source code directories. TFS puts everything in a SQL database. This is developing in a commercial enterprise environment where project management is critical. TFS has a very nice work item structure to track design, bugs, testing, even deployment, and it integrates well with both VS and Eclipse, along with MS Project.
The type of programing is not quite the usual mix. What I need is a common pool of drivers and RTOS tasks that I pick and choose for different circuit boards, sort of an a la carte program design methodology. Code is added to individual files with conditional compiles for different variations, due to IC pinouts, but basically similar targets. Directory level commit gets in the way because individual files are shared across several target builds, not the entire directory. Sure, other SCMs can do file level check in/out, but TFS does it best.
These days I have to use Github, management directives from on high, but I do miss the ease of use with TFS.
I have found TFS or TFS services ( the free online version) to be the easiest I've ever experienced. I recently used Github and find myself cursing the creators. Most of my problems seem to be related to large file handling. I ended up having to learn the commandline just to clean up the messes.i've never experienced anything that frustrating with TFS. Others will swear by Github, but use TFS unless you like pain
Git or Mercurial (Hg). Very small footprint and extremely easy to install and get started with.
They encourage committing early and often so everything is tracked.
They are both extremely easy to use though I think Hg's commands are a bit easier to remember for some reason -- though as you'll see they share many commands.
1. Download and install Git or Mercurial.
2. download a .gitignore or .hgignore file (for your language like C#) so binaries etc are (ignored) not committed.
3. c:\MyProject\>git init <ENTER>
3. c:\MyProject\>hg init <ENTER>
4. c:\MyProject\>git add . <ENTER>
4. c:\MyProject\>hg add . <ENTER>
5. c:\MyProject\>git commit -a -m "initial commit of project" <enter>
5. c:\MyProject\>hg commit -m "initial commit of project" <enter>
You are set up and ready to go. now all your changes will be tracked.
you can do hg diff or git diff and you'll see diffs
You can do hg status or git status and you'll see files that have been changed.
it's so easy. once you use it you will never want to do anything without it because everything is tracked and you can easily move to a previous revision and throw the current branch away.
Oh, well, when you install Hg it will also install TortoiseHg Workbench which is a UI.
Also, if you decided to go with the git bash installation then you can type c:/>gitk<ENTER> and a Tortoise-like UI will appear and you can do the work from there.
I'd add a vote for Atlassian SourceTree - how you get your repos in one place I dont know unless you go github public - I use local git repos and occasionally when working on one project pull from a colleagues company private repo
source control is one thing where I like to 'see' what Im doing, as opposed to command-line, so SourceTree works well for me
I'd recommend Github which also has the advantage that it works with every other tool and development platform out there from Linux to Windows.
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare
My setup also involves a server where all development projects and files reside. My main development PC uses mapped drives (not available offline, since it is always connected to the server) and my laptop uses the same mapped drives configuration except they are marked to be available offline.
I only work on the laptop one or two days a week. Before leaving the office, I simply synch all the offline files. This allows me to work wherever I need to (on the laptop) with or without an internet connection. When I get back to the office, I let the laptop synch any changes with the file server. As a sidenote, this also makes for a very good backup system...if the server crashed, all my code is safe on the laptop.
One thing I didn't see anyone mention that is specific to your case:
You'll need to be careful with choosing a cloud-based provider. Unity projects can get enormous because the UI will expect to check in your asset files as well. Asset files are very large, and (can be) binary, which means they won't play well with most source code control systems.
Using raw Git will have a learning curve, but you could use your desktop as your "server". Git does not have a built-in concept of a central server. Every machine that has Git installed is both a server and a client. A central server in a Git organization is simply one that all the developers of that organization agree upon ahead of time.