Quote:
Originally Posted by nathanww
Anyway, I was wondering what experiences people here have had with subversion. None of us has actually used it before--is it difficult to learn? And how much value would it be to a team of this size?
|
When programming with multiple people, you definitely want a version control system. SVN happens to be popular, but I don't recommend it, for FIRST use, it is centralized, which means you must be connected to the Internet if you want to check out a past version or make a quick commit. In features which may not be directly relevant, SVN doesn't have tags (it uses a really dirty hack which irritates me to no end instead).
In FIRST, benefits of a revision control system are you can trace who wrote what line (a "blame"), if you have a cool feature which you want to test, you can branch from the current source and merge it in if it works, or delete it if it doesn't, without touching "production" code. Whenever you test that code on the robot, you can "tag" that version with a name (instead of a meaningless number) whenever you test that code on the robot, going back to a working version is very helpful.
Personally, I
highly recommend a
decentralized revision control system. The benefits of a decentralized revision control system (which SVN is not) is that merging becomes much easier, since the distributed capability is very dependent on it. Most importantly for FIRST, you can make commits and inspect the entire history without an Internet connection, and you do not need to worry about locking files that you are editing on. For this, I HIGHLY recommend
Git, because it is fast fast fast, packs the entire history into files smaller then a single SVN checkout (!) and merging is so easy it is fun. Git tracks content, not individual files, so you can even track a line of code as it has been moved around different files. If you can get a system going, taking the time to learn Git (or any collaboration friendly revision control system, e.g. not RCS/CVS) is
highly worth it.
Revision Control with Git for FRC Teams Very good document I think (of course I am a bit biased, I wrote it)