Which version control are you using in your project ? Question to Indie developers!

Hi all Indie developers!
I reached the point , where i own a server grade hardware and definitely wish to have to run my own local onsite git (with LFS support) repository server.
I came prepared here, so basically i need good (opensource) Git server which can be configured easily and can be accessible from internet, (i do own a domain name and it works already for smaller projects).
The Git server should accept large files, (i know that i should ignore assets , library and other directories from my unity project)
My server came with preinstalled win7 ultimate os, i can install additional storage and run windows server, but i already put some investment to it and i am not big enterprise.
I do not plan to operate this server on 24/7 base, but rather on and off when i need to deploy i run it and when i dont need it stays off.
I know Unity as cloud services is great and other git providers are great too, but i wish to have my data safe and close.
If for some reason’s my hardware would not be enough, then i just prefer to run git server inside Linux docker image, but then for persistence i would depend on cloud providers or i can setup the storage volume on site.
Anyone with experience with running own hosted version control please comment.

The company I work for uses Gitlab. It works perfectly fine for hosting our Unity projects.

Subversion with a Dreamhost repository.

Edit: Since someone mentioned context below I’ll mention that our group has thirteen people. Only two of us were familiar with Subversion when we started but we were able to step the others through using it in a couple of hours with occasional help from time to time beyond that.

2 Likes

What @Ryiah said. If I were rolling my own solution, it would be SVN, not Git. SVN handles big binary files much-much better than Git, easier to use, basically more suited for game development in general.
I would probably set up an SVN server and back it up into a remote repo or just back it up into the cloud on any way.

4 Likes

Self hosted CollabNet Subversion Edge with Active Directory authentication. Not an indie developer, tho. We do many projects in parallel for different customers and need to be able to set up different levels of access privileges in our repos. Also, binary files galore as source art files go into the repo as well.

I like the Git interface, both for general use and ease of branching. That said, it isn’t great with large binaries… there is LFS, but I haven’t tried it. Professionally both the current and last studio I worked at use Perforce. It is has several advantages for large team and projects, but isn’t cheap. The interface isn’t awesome, and like about every VCS out there, uses the same terms to mean different things. (grr). At Disney, prior to perforce, we used a dual system. Code and main project delivery assets and branches were all in GIT, and all source art was in SVN. At the end of the day, I have come to prefer perforce. Locking is nice and it is very stable, even if a bit awkward to use at times.

Thanks to all responses!
I looked up how to install a svn server, it looks way easier then trying to configure a git server. :wink:
Funny thing: one guy actually told me that i need to learn how to install microsoft IIS server , so that i can run git server in it and i was like No, No, No :wink:
Easy to install comes with another “downside” a svn is old technology , which use centralized distribution model , even devs of svn make point here.
For me to use a svn make sense and i need pretty quickly to set up a “small” version control server, so that later if something get corrupted i be able to recover back from repo. This is my backup plan.

Using perforce its definetly overkill in my case, but its interesting to hear that some companies use it.
If my project grows and i would have additional participants , then i probably will use the cloud Unity services, it makes a lot of sense and i dont get myself in the situation of the weak link , because then if something goes wrong on my side it would effect others workflow.
So in that case it is actually make sense to deploy the sourcecode to Unity cloud service.
Then for team members it would be easy to share the contributed work between each other.

Its very interesting observation, but i try to do the best of it, so anyone who is in my situation here you go you have choices, but you should consider following: think and plan for grow and structure your project so that you wouldnt be stuck at some point of time!
Wish me luck, i hope that i pretty quickly would be able to setup a SVN server and push the code to it.

Azure DevOps with git, git LFS for large files. If I were rolling my own, I’d probably use git and git LFS as well.

1 Like

In every company I have worked at other than 1 we used git + git lfs. I have never had issues with large binary files etc, but thats because you are meant to use lfs if you want to use git with projects like unity projects.

So if no lfs, go with SVN, otherwise git + lfs is just as good as SVN but you get differences in what you can and cant do. I prefer git but if your comparing SVN to git with lfs, its basically personal preference at that point as they are both ample for the task.

2 Likes

You don’t want the newest version control software on the market. You want one that has been extensively tested because it will be responsible for all of your files. Furthermore while Git may be newer like others have said it’s not designed to work with large files. That requires setting up git lfs which is developed by a completely different team. Two apps versus one.

1 Like

I use SVN, on a home brew linux box. I have dynamic DNS already pointing to my home IP for reasons of running a game test server, which also works nicely with the SVN server allowing me to access it anywhere at basically no cost for my version control with no project size limits.

I use github for code and SVN (self-hosted) for art and assets. “Splitting up the tri-force”, if you will.

I moved on from Perforce and onto github. It took time, but I feel like the migration wasn’t really painful at all. I was running Perforce from my home server, but I decided to store on a hosted repository for security and reliability reasons. The change from centralized to distributed version control was a bit jarring, but being a solo dev on a laptop that may sometimes not have internet access when developing, git makes me feel a lot more productive than Perforce. I realized the only reason I was holding on to Perforce was because of my experience with it for several years at my former job, five years ago. It was time to move on. No regrets.

1 Like

People are conflating what they know with what is best. What you know does matter but what’s best might be different if you factor in longer term after going through the learning curve.

Hobby vs commercial and team size have a significant impact here and you can’t not factor that in. Someone saying I use X and it works great without that context means next to nothing.

Perforce isn’t overkill but it has the steepest learning curve overall. Not just it’s use but you have no what I could call good cloud options for it, so you will likely host it yourself. It does have I think the highest potential upside outside of hobby/solo projects.

Git is just so good at managing code and github flow makes it even better. But is it worth having two VCS’s. Maybe maybe not.

The one constant is git is not good at managing a lot of binary stuff. And distributed VCS for managing binary files can easily kill productivity. This is an area where it gets progressively worse with scale and will at some point become untenable.

2 Likes

He asked what we use, not what’s best.

(addendum to my original comment - we don’t make games so while we use Git, we don’t have to deal with LFS)

1 Like

Good point about context. I’ve added it to my first post.

I’m currently using Collab :hushed:
I should point out that I’m currently working on a solo project and when working on a team using Collab it was a nightmare, but as a solo project it serves as a good back-up facility.

Previously used Subversion with Assembla for team projects (mobile) which worked well but never used since their price restructure.

Definitely. In addition to mentioning that I’m working on a solo project, I should also mention another reason for splitting the code and data repositories. Writing code and authoring data typically operate on two different cadences.

I find myself programming and checking in far more frequently and with a larger number of file changes than I do editing large binary files for art and audio assets, etc. The repo for my code is significantly less than half of the data repo, and as more content is created, that ratio becomes far smaller.

Keeping these separate means that they can be backed up separately. It also encourages me to separate my content from the program for preparing the overall architecture for, say, future mod support, and promotes building the game as an “engine” to plug data into.

I could have also created two separate repositories using the same source control, but I chose the best source control for the type of data, as discussed above. There’s always been discussions about the “iffyness” of git LFS, and SVN’s battle-tested large binary file storage. But, I like the fast-and-loose-yet-safe feeling of git, with branches and distributed/offline checkins. Perforce was always on the safest side, but it felt very restrictive and infuriating to deal with at times.

I use hosted PlasticSCM. They have on-premise options as well.

1 Like

As a lone developer, I tried Mercurial a long time ago, but ran into repository limits on Bitbucket, back when they offered Mercurial hosting.

Then I tried Plastic SCM locally, then hosted on a free tier Azure Windows server, then eventually hosted on their cloud service when it was in beta. It was great, but I couldn’t justify paying for the cloud version when it came out of beta when other solutions were free.

So I moved to Git using free unlimited Azure DevOps hosting when it was called Visual Studio Team Services. It worked fine but it was a little slow, as I wasn’t using GitLFS at the time.

Then I moved to Unity’s Collaborate for a while, but had some problems with it losing some of my changes when re-downloading my project.

So now I think I’m about to finally settle on using Plastic SCM again with either another computer as a server, or pay for their cloud hosted version. And then maybe I can actually get some development done instead of playing around with version control.

I use Git with Azure DevOps for a pretty large project, haven’t done anything special for large binary file handling, and everything is groovy. I believe all new repos there come with LFS by default now.

I’ve looked into SVN (which I used to use back in the day) for it’s claimed superior handling of large binary files, and all I can see about benefits there is the lack of a local copy of the repo data means less duplication of those files? I think that just happens to be a non-issue for our project, at least for now. Are there any other benefits there I’m not aware of?

I used to run a local Git host at one of my old offices. Setup was trivially easy because we already had a file share set up and didn’t need anything extra on top of that. We just created “bare” repos in there, pointed everyone’s local clients at those, and off we went. Of course something that simple won’t meet everyone’s needs.