KallistiOS: Git
Last Updated May 23, 2013
Intro
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
|