Part of the migration from Subversion to Git will be to start providing tarball releases of the CASPER libraries and toolflows for people who use them to develop their own applications, but who do not actively develop the CASPER libraries and toolflows themselves. If that describes you, you can stop reading now if you want to. If you consider yourself a developer of the CASPER libraries and toolflows, read on!

Mark Wagner and I have been setting up git related services on the casper.berkeley.edu server. The intent is for casper.berkeley.edu to host the official/canonical/reference CASPER Git repositories, just as it has hosted the only (and therefore official/canonical/ reference) CASPER Subversion repository. This message details our progress and outlines future steps. Your feedback is greatly appreciated (hint! hint!).

Current Status
==============

We currently have two small test repositories and the following git related services running on casper.berkeley.edu:

1) gitweb - This provides a web browser view into the repositories. It is the same web interface used by git.kernel.org (Linux kernel) and git.denx.de (embedded Linux) among others. The URL of the CASPER gitweb interface is...

http://casper.berkeley.edu/git/

2) git clone via HTTP - Git allows anonymous fetching (including cloning and pulling) over HTTP. However, HTTP is not a "git aware" protocol (leading some in the git community to refer to HTTP as a "dumb protocol"), so cloning via HTTP should only be used as a last resort if cloning via the git protocol is not possible (e.g. due to intervening firewalls, etc.).

3) git clone via git protocol - Git allows anonymous fetching (including cloning and pulling) over its own native protocol. This is obviously a "git aware" protocol, which allows it to be smarter and therefore more efficient than fetching over HTTP. This is the preferred way to clone a repository unless you have "write" access to it and want to push changes from your local clone back to the upstream repository. Most people will probably use the git protocol to clone repositories from casper.berkeley.edu.

4) git clone via ssh and gitosis - Git allows non-anonymous cloning over ssh. Gitosis is a tool that makes administration of multiple git repositories over ssh with multiple users easier. Instead of requiring each git user with write access to have an account on the server, a common account ("gitosis") with very limited privileges is used. ssh access to the gitosis account is controlled by public keys. Users requiring write access to public repositories on casper.berkeley.edu must generate a public/private keypair (e.g. using ssh-keygen), send the *public* key to Mark and/or me, and configure their ssh client to use public key authentication when connecting to casper.berkeley.edu. Details of the user's local ssh configuration are beyond the scope of this message.

Developers wishing to get their feet wet with git are encouraged to clone either or both of the existing test repositories. Poke around the gitweb interface to find the exact URLs to use. Getting familiar with the "gitk" tool is also encouraged.

Git supports a de-centralized development model with multiple mechanisms for propagating locally committed changes "upstream". We are still weighing various options and have not yet settled on one preferred/recommended development pattern for propagating changes upstream. Until then, we prefer to keep very short the list of those with write privileges to the "official/canonical/reference" Git repositories. Note, however, that cloning a git repository (roughly analogous to a checking out from Subversion) results in a fully functional local repository complete with full history, so you can keep committing changes locally while we decide how we want to manage the upstream propagation. Also note that cloning via one protocol does not preclude changing to a different protocol later on if needed/ desired.

Next Steps
==========

We plan on migrating the trunk/mlib_devel_10_1 repository to git first. During this migration, we will also include the trunk/caltech/ lib10.1 stuff in a "gavrt_library" subdirectory. This will mimic the effect of the gavrt_library "svn:external" in mlib_devel_10_1. This migration is scheduled to begin on 2010-06-16T19:00:00 UTC (next Wednesday at noon Berkeley time)...

http://www.timeanddate.com/worldclock/fixedtime.html? month=6&day=16&year=2010&hour=12&min=0&sec=0&p1=791

You will be responsible for managing any of your changes that remain uncommitted to these areas after that time. You will also be responsible (or at least chastised) for prematurely committing any of your not-ready-for-prime-time changes, so please commit wisely (as always, right? :-)).

Sometime (perhaps days) after that, we will migrate the trunk/roach/ sw/linux stuff to a git repository. We believe we have determined the precise linux kernel git commit on which the BORPH code is based, so we will likely graft the BORPH development onto a clone of the "real" Linux git repository. We have already done this locally and used this grafted repository to merge the BORPH changes with a more recent kernel (2.6.25.20) which we have successfully built and booted on a ROACH.

After that, we will migrate the trunk/roach/sw/uboot tree. It is also a snapshot of an external git repository. We will similarly graft the ROACH changes onto a "real" u-boot git repository.

After that, we will continue migrating other parts of the Subversion repository to Git.

Note that just before each Subversion area is migrated, we will make it read-only in Subversion.

Dave


Reply via email to