Switch to github organization and Google repo

A few weeks ago we started cutting out the different parts of OpTiMSoC from the original repository to separate repositories at the new organization. The aim is to structure it better and have separation of different aspects of OpTiMSoC.

The method of separating subtrees from the original tree with keeping the history is straight forward using git filter-branch. Some parts of the history get lost, especially for the system software. Nevertheless, we now have cut the original large repository into smaller logical units. Some of them are only needed for installation if you simply want to run OpTiMSoC, others are needed to build systems or for debugging.

Finally, we struggled a bit with still allowing for a unified tree layout, which is desirable for the documentation and ease of use. We wanted a tree similar to the original layout and inspected git submodule and git subtree. Unfortunately both did not convince us entirely, as we don’t want people to learn new merge strategies etc.

We first started with a simple shell script that initially creates the layout. After some more search we came to Google repo, which is a git wrapper for Android developers. While we don’t plan to use the entire feature set, we use it to distribute the tree layout. The layout is distributed as xml files and it is possible to define groups for different feature sets.

To start a layout, simply create an empty folder, download the repo script and make it executable:

mkdir optimsoc
wget https://storage.googleapis.com/git-repo-downloads/repo
chmod a+x repo

Now you can initialize the repository layout. The script downloads some more files from Google’s repositories and reads the remote xml description into a local repository of the repository files, both in the hidden path .repo.

./repo init -u https://github.com/optimsoc/optimsoc-repo

You then synchronize the repositories and repo clones and puts them into “detached HEAD” state.

 ./repo sync

If you want to create a new feature branch for a part of OpTiMSoC you can use the repo infrastructure or simply do this with the usual git commands (create branch, stage, commit etc.). We are also still experimenting with the best development strategies.

by Stefan Wallentowitz
on 16 May 2015


Share this post at: