Programming Collaboration

We are revamping our computer setup for programmers/cad, and I’m curious as to how other teams with C++ synchronize and share code across different programmers and code. The past few years its just been one laptop with a few people huddled around one person typing, but I would love to see a row of programmers working on various projects.

Get a peer-to-peer source control such as GIT or Mercurial. Our team uses Mercurial. We partitioned the code into subsystems. Assign each subsystem to different programmers. Each subsystem is in a separate file so to minimize the need of other programmers having to touch your file. There are some common files that contains common definitions and constants. It should not be too frequent for students to change them once they are in place. If there is a need to do so, the student will announce it ahead of time to avoid conflicting changes to common files. Even if it happens, you should be able to merge without too much problem. The benefit of peer-to-peer source control is that you can push the code to a USB flash drive and pass it around for other students to pull (synchronize) the code from it. We also have a server that is one of the peer sync targets. The server, in addition to being a sync target, provides a web interface allowing you to inspect the change history and the differences between different versions.
For example, here is a link to our server.

Github offered organization accounts to teams last season (and probably still do?).

Here’s the topic from earlier this year:

Note: I think you can have an organization account that is free but all the repositories are public. This isn’t normally a problem in FRC.

They even have a FIRST octocat!

this problem was only recently addressed for our team. We have vision programmers (2 people, me and another student, but the other student got pulled to cad) and the crio programmers(~3-5), and we had one computer for vision, one laptop for the other. We recently created a vault for all of our data. This was made in part due to the school restricting everything and us being unable to access files at home if we didnt copy them onto a portable device. It is divided into cad, vision, labview, business, and parts (for build). It is nowhere near the sophistication of github, but it is a start to solving our problem. It wasn’t hard to set up, and has become very useful.

Ditto. We are using Mercurial with Tortoise (one of our former programmers recommended it over git for beginners). Since mercurial is python, the Windows install was much easier (and functional). Our main repository is on the main programming laptop we take to competitions so the work method doesn’t even change when we get to competition.