FlightGear Git: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
m (moved Flightgear and Git to FlightGear and Git: broken link an better anyway ;))
m (Update link to FR page)
 
(103 intermediate revisions by 31 users not shown)
Line 1: Line 1:
The [[Flightgear]] project has been experimenting with the [http://git-scm.com Git] distributed version control system as a replacement for [[CVS]].
{{Git}}
'''Git''' is a {{wikipedia|version control system}} used by the [[FlightGear]] project to store all the files required to build and run the simulator. This includes all the programs, the data (e.g. textures, sounds), supporting tools, etc. Git tracks updates to every file as developers from around the world work together concurrently to create new versions. The sole exception is the official [[FGAddon]] aircraft repository that is Subversion rather than Git based.


== Git Flightgear Quickstart ==
While new FlightGear features and additions are in development, they are available from Git before they are available in the standard release version. Using Git allows users to use the newest possible version of FlightGear from the latest source files, to experiment with new aircraft or other features. However, it is not a beginner's tool. Using Git can expose the user to unstable features that show ugly error messages, or crash the computer.  
The Git repositories are at http://repo.or.cz/w/simgear.git and http://repo.or.cz/w/flightgear.git. To check out the maintenance branch of [[Simgear]]:


git clone git://repo.or.cz/simgear.git
As of May 2016, the repositories are located at {{Project infrastructure|name}}.
cd simgear
git checkout -b maint origin/maint


Repeat for Flightgear:
== Motivation ==
In May 2010, after a hardware failure on the [[CVS]] servers, the FlightGear project changed its version control system from CVS to Git.


git clone git://repo.or.cz/flightgear.git
Much has been written on the advantages of Git over CVS. For the FlightGear project, some advantages are:
cd flightgear
* Much better support for branches and merging branches. This is especially important for creating bug fix releases for major releases while still allowing work on the next major release to continue. It is also very nice for a developer's personal workflow.
git checkout -b maint origin/maint
* Easier path for contributors to submit changes and developers to integrate them.
 
== Motivation ==
Much has been written on the advantages of Git over CVS. For us, some advantages are:
* Much better support for branches and merging branches. This is especially important for creating bug-fix releases for major releases while still allowing work on the next major release to continue. It is also very nice for a developer's personal workflow.
* Easier path for contributors to submit changes and developers to integrate them;
* Much better support for everyday tasks like searching the project history for changes, viewing changes, bisecting the project history to find the original source of a bug.
* Much better support for everyday tasks like searching the project history for changes, viewing changes, bisecting the project history to find the original source of a bug.


== Flightgear and Git ==
== Repositories and branches ==
The repositories at <tt>repo.or.cz</tt> are experimental, but when we do switch to Git the real repositories will be set up similarly. For historical reasons there continue to be separate repositories for Simgear and Flightgear. There are 3 interesting branches in the repositories. Listed in order from least stable to most:
{{Note|
* <tt>next</tt> The current tip of new development. This branch should always compile and run, but various things could be broken.
Next is C++17 since we branched 2020.3 off: so far this seems to be working well, we can use the fun stuff such as std::optional, and the nicer overloads of make_shared / make_unique. Since 2020.3 and before also used C++11, we have been using lambdas, direct member init and gradually replacing ‘typedef’ with ‘using’ for years now, but as an incremental process: for the time being, it doesn't seem like wholesale search and replace conversions are justified.<ref>https://sourceforge.net/p/flightgear/mailman/message/37309892/</ref>
* <tt>master</tt> The tip of stable, tested new features. If we were to make a new release today, we would start from the tip of this branch. New features that have been "cooking" in the <tt>next</tt> branch for a few days or weeks will be merged here.
}}
* <tt>maint</tt> Bug fixes for the most recently released Flightgear. When a release is made from <tt>master</tt>, this branch is reset to it.
The FlightGear project is split up in the repositories listed below.
* <tt>cvs</tt> While we are still using CVS, this branch tracks the HEAD of the Simgear and Flightgear CVS repositories. It is '''not''' a real-time mirror of CVS, but reflects the state of the CVS repositories at the time that <tt>maint</tt> and <tt>next</tt> were last updated.
{| class="wikitable"
! Name
! Contents
! Remarks
|-
| {{simgear source|text=simgear}}
| [[SimGear]], the simulation engine that FlightGear uses.
| rowspan="6" |
Those repositories have the following branches:
* ''next'': current tip of new development. This branch should always compile and run, but various things could be broken.
* ''release/*'': containing former and (if a specific branch was made for them) upcoming releases.


For now, almost every commit in <tt>next</tt>, <tt>master</tt> and <tt>maint</tt> are identical to commits in the CVS repositories, and the contents of <tt>next</tt> should be identical to those of CVS HEAD. You can verify this:
People not interested in actively contributing to C++ development are encouraged to use the release/2020.3 branch as the next branch may undergoing significant breakage in the near term future.


git diff origin/cvs..origin/next
As of [[Changelog 2016.1#Usability|May 2016]], FGRun is replaced by the [[Qt5 Launcher|Qt5 launcher]].
|-
| {{flightgear source|text=flightgear}}
| FlightGear itself.
|-
| {{fgdata source|text=fgdata}}
| All data (default aircraft, dialogs, sounds) used by FlightGear.
|-
| {{fgmeta source|text=fgmeta}}
| FlightGear "meta" repository containing build and setup scripts for the whole project.
|-
| {{windows-3rd-party source|text=windows-3rd-party}}
| Prebuilt libraries needed to make FlightGear run on Windows.
|-
| {{fgrun source|text=fgrun}}
| The [[FGRun]] launcher for FlightGear.
|-
| {{fgaddon source|text=fgaddon}}
| [[FGAddon]], an SVN repository that holds all official aircraft (except the [[Cessna 172P]] default plane and the [[UFO]]).
|
|-
| {{fgcom source|text=fgcom}}
| [[FGCom 3.0|FGCom]], a voice-over-IP application used by [[multiplayer]] controllers to provide [[Air traffic control|ATC services]].
|
|-
| {{getstart source|text=getstart}}
| Sources for the ''Getting Started'' manual included with the simulator.
|
|-
| {{openradar source|text=openradar}}
| The [[OpenRadar]] application used by multiplayer controllers.
|
|-
| {{sceneryweb source|text=sceneryweb}}
| Source code and configuration files for the [http://mapserver.flightgear.org/ Mapserver], the [https://scenery.flightgear.org/ scenery portal] and the [[TerraGear scenery build server]].
|
|-
| {{terragear source|text=terragear}}
| The [[TerraGear]] scenery building toolkit.
|
|-
| {{terrafs source|text=terrafs}}
| [[TerraFS]], a Linux tool to mount the TerraSync scenery as a remote file system.
|
|-
| {{sourceforge source|proj=flightgear|repo=maclauncher|text=maclauncher}}
| [[FlightGear_Mac_OS_X_Launcher|Old FlightGear launcher for Mac]].
| Deprecated by the [[Qt5 Launcher]].
|-
| {{sourceforge source|proj=flightgear|repo=fgms|text=fgms}}
| [[FlightGear Multiplayer Server|Multiplayer server system]]
|
|}


should return nothing. The only commits that don't exist in CVS are those that set the version numbers of the maintenance releases because the maintenance releases don't exist as such in CVS.
== Related content ==
* [[FlightGear Git: splitting FGData]], an initiative to split the aircraft out of the FGData repository, in order to decrease its size and thus improve access to the average user/developer.


Even though the contents of <tt>next</tt> are the same as CVS HEAD, its history is different. It includes many merges from <tt>maint</tt> and branches based on <tt>maint</tt>. This makes it easier to move new work from <tt>next</tt> back to <tt>master</tt> and <tt>maint</tt> after it has had time to cook.
{{Building}}


This arrangement follows the scheme used by the Git maintainers.
[[Category:Core developer documentation]]
[http://www.kernel.org/pub/software/scm/git/docs/howto/maintain-git.txt This description] is very technical; you will surely have achieved git-fu if completely understand it. However, the idea of maintaining several branches of different stability is common in collaborative software projects.
[[Category:FlightGear]]
[[Category:Git]]


== Git Tutorials and Resources ==
[[fr:FlightGear Git]]
* Git [http://git-scm.com/documentation documentation and tutorials]
* Git as a [http://tomayko.com/topics/git way of life].
* [http://wiki.github.com/bogolisk/egg Egg], a cool Git emacs mode.
* A guide to [http://nathanj.github.com/gitguide/ using Git on Windows]
* [http://kylecordes.com/2008/04/30/git-windows-go/ Git on Windows Go!] (Setting up msysgit on Windows)
* [http://gitcasts.com/posts/git-on-windows Git on Windows (webcast)]
* [http://sourceforge.net/projects/qgit qgit - interactive git repository viewer and frontend]
* Additional [[Resources WRT running git on Win32]]

Latest revision as of 17:16, 21 December 2022

Git is a version control system This is a link to a Wikipedia article used by the FlightGear project to store all the files required to build and run the simulator. This includes all the programs, the data (e.g. textures, sounds), supporting tools, etc. Git tracks updates to every file as developers from around the world work together concurrently to create new versions. The sole exception is the official FGAddon aircraft repository that is Subversion rather than Git based.

While new FlightGear features and additions are in development, they are available from Git before they are available in the standard release version. Using Git allows users to use the newest possible version of FlightGear from the latest source files, to experiment with new aircraft or other features. However, it is not a beginner's tool. Using Git can expose the user to unstable features that show ugly error messages, or crash the computer.

As of May 2016, the repositories are located at SourceForge.

Motivation

In May 2010, after a hardware failure on the CVS servers, the FlightGear project changed its version control system from CVS to Git.

Much has been written on the advantages of Git over CVS. For the FlightGear project, some advantages are:

  • Much better support for branches and merging branches. This is especially important for creating bug fix releases for major releases while still allowing work on the next major release to continue. It is also very nice for a developer's personal workflow.
  • Easier path for contributors to submit changes and developers to integrate them.
  • Much better support for everyday tasks like searching the project history for changes, viewing changes, bisecting the project history to find the original source of a bug.

Repositories and branches

Note

Next is C++17 since we branched 2020.3 off: so far this seems to be working well, we can use the fun stuff such as std::optional, and the nicer overloads of make_shared / make_unique. Since 2020.3 and before also used C++11, we have been using lambdas, direct member init and gradually replacing ‘typedef’ with ‘using’ for years now, but as an incremental process: for the time being, it doesn't seem like wholesale search and replace conversions are justified.[1]

The FlightGear project is split up in the repositories listed below.

Name Contents Remarks
simgear SimGear, the simulation engine that FlightGear uses.

Those repositories have the following branches:

  • next: current tip of new development. This branch should always compile and run, but various things could be broken.
  • release/*: containing former and (if a specific branch was made for them) upcoming releases.

People not interested in actively contributing to C++ development are encouraged to use the release/2020.3 branch as the next branch may undergoing significant breakage in the near term future.

As of May 2016, FGRun is replaced by the Qt5 launcher.

flightgear FlightGear itself.
fgdata All data (default aircraft, dialogs, sounds) used by FlightGear.
fgmeta FlightGear "meta" repository containing build and setup scripts for the whole project.
windows-3rd-party Prebuilt libraries needed to make FlightGear run on Windows.
fgrun The FGRun launcher for FlightGear.
fgaddon FGAddon, an SVN repository that holds all official aircraft (except the Cessna 172P default plane and the UFO).
fgcom FGCom, a voice-over-IP application used by multiplayer controllers to provide ATC services.
getstart Sources for the Getting Started manual included with the simulator.
openradar The OpenRadar application used by multiplayer controllers.
sceneryweb Source code and configuration files for the Mapserver, the scenery portal and the TerraGear scenery build server.
terragear The TerraGear scenery building toolkit.
terrafs TerraFS, a Linux tool to mount the TerraSync scenery as a remote file system.
maclauncher Old FlightGear launcher for Mac. Deprecated by the Qt5 Launcher.
fgms Multiplayer server system

Related content

  • FlightGear Git: splitting FGData, an initiative to split the aircraft out of the FGData repository, in order to decrease its size and thus improve access to the average user/developer.