For quite a while, some of us have been using git to keep track of FlightGear files. Using git instead of CVS is like having a sports car instead of a skateboard. Git is super-convenient for testing and for experimenting with things. You can very cheaply start a new branch, play around on that branch, compare files against the corresponding files on other branches ... and then reset the branch (or throw it away entirely) if you decide you don't like where it has gone. Git implements a truly distributed development model. Everything, including the "repository", is fully distributed; your copy of the history is provably equivalent to my copy of the history. This stands in contrast to CVS, which permits concurrent development, but not really distributed development, because distributors are at the mercy of the single centralized repository. CVS is a Centralized Versioning System. Git also features the notion of committing a group of files all at once, which is a much more logical way to think about things. This is in contrast to the CVS notion of committing files one by one. Another nice feature of git is called "gitweb". It provides a web interface that allows convenient point-and-click navigation of the logs, commit messages, diffs, et cetera. Pigeon has made a gitweb available at: http://pigeond.net/git/ If you want to go try this, the work required to get started will be greatly lessened if you download the git repositories in their already-packed form. The FlightGear "data" tree is available via the commands top=...whatever... mkdir $top/fgd cd $top/fgd time git-pull http://www.av8n.com/repo/fgd/.git origin:origin ## 600 megabytes of network traffic, expands to 1.5 gigs on disk time git-pull http://www.av8n.com/repo/fgd/.git sport:sport ## incrementally almost nothing git checkout sport git checkout -b myversion ## or whatever you want to call it What you have at this point in the "origin" branch is conceptually equivalent to the current CVS version. Furthermore, you also have easy local access to every previous version of every file, immediately available for your use if/when you want them. This includes all log messages. Use git checkout origin git log to see what I mean. Meanwhile, in the "sport" branch, you have all the modifications I've made, including the ATIS/AWOS, much improved air-column physics, gremlins, instrument status flags, and many others. For a list of the main features of sport model, see ./README.sport.model You can also do git checkout sport git log to see in great detail what is in that branch. The same procedure used for the "data" tree works for the "source" tree: mkdir $top/fgs cd $top/fgs git-init time git-pull http://www.av8n.com/repo/fgs/.git origin:origin ## less than a minute time git-pull http://www.av8n.com/repo/fgs/.git sport:sport ## even less git branch ## take a look git checkout sport git checkout -b myversion ## or whatever you want to call it edit...as...desired time ./autogen.sh ./configure time make And similarly for the "simgear" tree, in /repo/sg/.git: mkdir $top/sg ... and so forth ... There is also an OSG version 2 tree in /repo/osg2/.git. There is no sport branch in osg2; the Sport Model uses the plain old origin branch. ###################################### For more info on how to use git, see http://www.kernel.org/pub/software/scm/git/docs/tutorial.html http://git.or.cz/gitwiki http://git.or.cz/gitwiki/GitFaq Notes: 1) Every so often, I import changes so that the "origin" branch exactly tracks the current CVS. 2) I then pull changes from the "origin" branch into the "sport" branch, so that it gets the new features also. The idea is *not* to have a fork, where each branch has some features that the other lacks. The idea is for the Sport Model to be an extension (not a fork) of the CVS version. While sitting on the sport branch (or any other branch) you can do "git diff origin --" to see exactly how this branch differs From the origin. (More generally: I find git diff to be wonderfully useful.) 3) A standard recommendation is that you not edit the origin branch or the sport branch; leave them to be updated by git-pull and only git-pull. Start your own branch, and do your editing there. (You can easily pull in updates from other branches whenever you want.)