KallistiOS: Git

Last Updated May 23, 2013


In June of 2012, KOS (and related projects like dcload) switched from using Subversion to using Git for SCM. This page covers the basics of how to get KOS from the Git repository.

About Git

To quote Wikipedia:

Git is a distributed revision control system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development. Every Git working directory is a full—fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Git's current software maintenance is overseen by Junio Hamano. Git is free software distributed under the terms of the GNU General Public License version 2.

So, now I'll break that down a bit into more digestable terms. Git is a system that allows you to store files and the revision history for them. There are many other different revision control systems out there, including (in order of age) RCS, CVS, Subversion, and Mercurial. Of these, the first three are what are called centralized revision control systems. They rely on a centralized server for dealing with the revision control aspects. You cannot persist a change to a file in a Subversion repository without access to the central server hosting the revision control system. Git and Mercurial are different in that they are distributed revision control systems. In both of these systems, each copy of the repository is able to act on its own and is able to support maintaining the revision history of the files. They both also support pushing repositories to another machine to allow you to maintain a "server" of sorts.

KallistiOS uses Git with a server hosted by Sourceforge to maintain the canonical version of KOS. There may well be other forks of KOS that are maintained separately, but I assume if you have come here you are looking for the canonical version.

Git resources

Here is a short list of resources about Git that you might find useful:

Getting KOS from Git

Getting KOS from the Git repository is quite simple, assuming you have Git installed already (see the resources above if you do not). Just run the following one-liner to get it:

git clone git://git.code.sf.net/p/cadcdev/kallistios

To update the checked out Git repository in the future, it should be as easy as follows (from the root KallistiOS directory that you checked out above):

git pull

Getting kos-ports from Git

kos-ports is made of several separate Git repositories, one for each port. They are all tied together by using Git submodules (look in the Community Book up above if you want to know more about that). Thus, it requires two lines to actually get everything out of the repository for kos-ports:

git clone git://git.code.sf.net/p/cadcdev/kos-ports
cd kos-ports
git submodule update --init

To update kos-ports, run the following two commands:

git pull
git submodule update --init

Developer Note -- When updating kos-ports

The KOS developers should ensure when they update individual ports in the kos-ports tree that they also update the version of the submodule that is referenced by the base kos-ports tree. For Git version 1.8.2, this is as simple as doing a git submodule update --remote --merge in the kos-ports tree, then doing a git add {portname} for each updated port, then doing a normal commit sequence on the kos-ports tree itself:

git commit
git push

If using an older version of Git, then each port can be updated with the following command, then continue with the add/commit/push steps above:

git submodule foreach git pull origin master

Gamedev Home


The "Scene"
Documentation (v2.0.0)

Hosted by:
SourceForge.net Logo

Cryptic Allusion Game Dev © 2002,2003,2004 Dan Potter (design and information); © 2010-2016 Lawrence Sebald (information only); please see About CA Game Dev for further trademark and copyright info. This site has nothing to do with game mods, piracy, or other illegal or potentially illegal activities. It also has no relation whatsoever to SEGA, Ltd. It is intended strictly for the use of homebrew developers.