So I figured I’d post on how I deal with my code work in a team environment. I use similar strategies in my work life but figured I may help out some of the smaller teams that are limited in options.
The vcs I prefer everywhere I go is undoubtedly git. There is a large amount of posts here on how to ignore stuff with git which I won’t go through here but the one additional thing to be ignored is Content. Why? because we’ll cover that on the next section. That way your git repository stays small and easy to manage and maintain across the group or over multi machines if you’re an indie.
Content and binaries have always been an issue, granted perforce enables you a way to deal with binaries, unless you’re a successful business trying to purchase perforce when there are free alternatives available doesn’t make much sense. So for sharing the binaries across multiple teams I use BTSync I’ve used btsync in large server farms for sharing static content between projects and although not 100% real time it’s extremely quick. You also don’t get tied down like dropbox by having to have your projects in a specific folder. So for this case all you need to do is add your content folder to btsync and you generate a key for the folder. That key is then shared with others on the project. Whenever there is a content update on any of the machines btsync will automatically pull it and update the content locally for you. You can also enable versioning in btsync which will keep versions for you and also a trash bin for deleted items in case someone on the team deletes something by accident. There is one negative and I put that in italics for a reason since I consider it a positive. You have to have at least 1 machine running the btsync client in order for updates to be received. Since none of your code is stored “in the cloud” you’re responsible for sharing content. I have a linux server that I run btsync on that is tied to my data storage that just stays on all the time. Last but not the least btsync is cross platform and works exceptionally well on both windows / linux / mac. I have all 3 systems and for some directories I sync across all 3 different platforms without any issues.
So why not btsync for everything, it does have version control? Although you could be doing something like this it’s not really what it’s designed to do and you will loose your ability to do branches and history as well as commit messages and so forth. For code I will always stick with git there is even a ue4 git plugin now. For binaries I always prefer btsync that way my repos always stay small and easy to maintain.
I really hope this helps some of you as I’ve seen this approach helps a lot for teams in my current work environment. ( I wish it was game development )