All things git as it relates to bitweaver

Created by: spiderr, Last modification: 18 Jan 2014 (04:30 UTC)
bitweaver completed our CVS Migration to the git version control system. We have broken our CVS virtual modules in 150+ individual git repositories, all of which are hosted on GitHub.

Gitting Started

Here are the steps to git up to speed and begin developing bitweaver on git:

1. Get some Git.

There are downloads for all major platforms however, be aware the anything other than the command line on linux is temperamental. Additional notes for using git with windows are being developed here.

2. Register on http://github.com

Let us know on ConnectingToIrc so we can add you as a collaborator. (BW Admins, there is a script to make this process simpler //WILL - PLEASE PUT SCRIPT SOMEPLACE ON MODELA//

3. Clone and Go

Since bitweaver is completely modular, the bitweaver.git clone master repository is simply a collection of submodules for each of the packages.

For standard read-only access, use:

git clone git://github.com/bitweaver/bitweaver.git -b READONLY

If you are a developer and need commit access, use:

git clone git@github.com:bitweaver/bitweaver.git

This will create a 'bitweaver' directory where you are. Follow up with...

cd bitweaver
git submodule update --init
git submodule foreach --recursive git submodule update --init
git submodule foreach --recursive git checkout master

That will pull down all of the sub repositories for the directory structure the first clone created.
//style and icon sections need to be redirected to the correct subfolders//

Create your own bitweaver distro

If you have a custom set of modules, you can create your own master project. Here are the instructions:

mkdir newproject
cd newproject
git init
# add the core set of packages for a minimal bitweaver install
for PACKAGE in kernel languages liberty storage themes users util wiki install; do git submodule add git@github.com:bitweaver/$PACKAGE.git; done
# initialize all nested submodules (mostly in util)
git submodule foreach --recursive git submodule update --init
# Create a root level index.php , copy from https://github.com/bitweaver/bitweaver/blob/master/index.php
wget https://raw.github.com/bitweaver/bitweaver/master/index.php
# setup your own local config package, which typically is included in your master project git repo
mkdir config config/kernel/ config/themes config/icons
# Create a config bit_setup_inc.php , copy from https://github.com/bitweaver/config/blob/master/bit_setup_inc.php
cd config
wget https://raw.github.com/bitweaver/config/master/bit_setup_inc.php
cd ..
git add config index.php
git commit -m "initialize super project" -a
git submodule add http://github.com/bitweaver/adodb.git config/externals/adodb
git submodule foreach --recursive git submodule update --init
mkdir temp; chmod 777 temp
# add some icons and themes
git submodule add git@github.com:bitweaver/theme_bootstrap.git config/themes/bootstrap

Creating a new Repository

Contact a bitweaver admin to create a new repo on github for you.

Repository Locations


We are going to attempt to keep our code on github. There are is one major problem with Github currently - the lack of decent IRC notification.


We have a backup plan if github does not work out. We have our own install running gitosis, which was set up by /nickpalmer
Contact an admin via ConnectingToIrc about getting a public key added. If github continues to suck, we will revert to bitweaver.org which is running gitosis, and we can mirror push'es to github on an update hook.

Import concepts in Git


This is the second major stumbling block. Git submodules are similar to virtual modules in CVS. The achilles heal of git submodules is a "git submodule add ..." is tied to a particular commit for the submodule repository.

A lesser issue, submodules can only have directories in the current directory, so you have to nest. We cannot do the all-in-one "cvs co bitewaver" like we used to.



Reference Materials



The Clone and Go will not work with the repository as is

by Will, 22 Jun 2010 (01:15 UTC)
Consider the file .gitmodules in bitweaver.git

Each of the submodules references another bitweaver project using the ssh git@ protocol.

for example:

[submodule "kernel"]
path kernel

the git@ protocol, which is the one which requires an ssh key for access, will only work for contributors to bitweaver.git. This means for all but about 3 people git submodule update will fail, as they will be denied access to reading the submodule repositories.

The solution is to change each of the submodule references to use a public read url. This actually happened to be the state of the bitweaver project a few commits earlier:


The git@ hooks are obviously desirable for core developers, but not much use for everyone else. It may be better to make the master branch reference the public read urls, and then have a dev branch which using the git@ references.

Re: The Clone and Go will not work with the repository as is

by spiderr, 25 Jun 2010 (05:27 UTC)
This has been fixed. Default is now git:// and a DEV branch was added for git@ access.