
06-05-2016, 16:28
|
 |
RobotPy Guy
AKA: Dustin Spicuzza
 FRC #1418 (), FRC #1973, FRC #4796, FRC #6367 ()
Team Role: Mentor
|
|
Join Date: Dec 2008
Rookie Year: 2003
Location: Boston, MA
Posts: 1,035
|
|
|
Re: Organizing your programming
Quote:
Originally Posted by MamaSpoldi
I personally am not a fan of Git either. We have been using SVN for 8 years and it works great. We originally had a local respository, but last year we decided to store the repository online using SourceForge. This makes it easier for each programmer to access the updates individually.
As the programming mentor, I am the only one who can commit new code. This allows me to review all the code before it is shared. This also allows me to keep track of the progress being made and if someone needs additional help or support... or is going off on a tangent.
At competitions where we have no internet access I make a backup copy on a flash drive each time our lead programmer loads new code onto the robot. This is my role at competitions... just like during build season, I am the source code control system integrator. This backup provides a trail of what has changed between each download if something unexpected is affected. This is very helpful when something suddenly works differently on the robot... it helps the programmers be able to validate with certainty what changed and what did not change in the software. Each backup sub-directory is labeled with what was changed and when, eg. CMP-1b-MoreAutoAngle would be the code from Championship, day 1, version b (or 2nd change of the day), and change was adding more rotation driving to autonomous mode. This reminds me at a glance the types of changes that were made and when. After competition, the final version is committed to SVN and marked as a revision.
If you have questions or would like help setting something like this up, please feel free to pm me.
|
Yeah, disconnected operations as you describe sounds really annoying and is exactly why we don't use SVN. Here's our workflow at competitions:
- I create a bare git repo on a flash drive (cd /path/to/drive; git init --bare NAME)
- We set up remotes on each students computer to push to the flash drive (git remote add usb /path/to/drive/NAME)
- They do their normal development stuff, commits, branches, stash, etc
- When one of them wants to push code, they plug in the flash drive and do "git push usb BRANCH"
- When someone wants to pull from the flash drive, they do "git pull usb BRANCH"
- At the end of the day, I bring the flash drive home and push the commits up to git -- it's great, keeps history, no folders to keep track of -- and if someone screws something up, a 'git reset --hard HASH' allows us to go back to a known working state
Sure, git has a learning curve. But its advantages are numerous -- particularly in a disconnected environment.
__________________
Maintainer of RobotPy - Python for FRC
Creator of pyfrc (Robot Simulator + utilities for Python) and pynetworktables/ pynetworktables2js (NetworkTables for Python & Javascript)
2017 Season: Teams #1973, #4796, #6369
Team #1418 (remote mentor): Newton Quarterfinalists, 2016 Chesapeake District Champion, 2x Innovation in Control award, 2x district event winner
Team #1418: 2015 DC Regional Innovation In Control Award, #2 seed; 2014 VA Industrial Design Award; 2014 Finalists in DC & VA
Team #2423: 2012 & 2013 Boston Regional Innovation in Control Award
Resources: FIRSTWiki (relaunched!) | My Software Stuff
|