CommunityData:Git

Setting Up Git
Once you've installed git, there are some configuration options which will make your life much easier. You can set them globally with the following commands:

git config --global alias.spull '!__git_spull { git pull "$@" && git submodule sync --recursive && git submodule update --init --recursive; }; __git_spull' git config --global status.submoduleSummary true

These two commands will ensure that git works a little better with submodules. Submodules are essentially git repositories that are buried inside other git repositories. For example, the  repository currently uses the   repository as a submodule. If you're working in a wiki like this, you'll want to use  instead of just   which will also check for and pull changes made in any of your submodules.

Gitolite Server
We have a private git server which uses gitolite to manage permissions for git repositories.

Dependencies
To get started, you will need a public SSH key. You can send your public key (usually ~/.ssh/id_rsa.pub) to a current administrator (probably Mako), and they can add you as a new user.

You will also need to have git installed.

Cloning a repository
"Cloning" a repository downloads the files, as well as the history, of a repository. It also creates a new git instance in that directory, so that you can commit changes to the code.

To clone a repository, run the following command:

git clone --recursive git@code.communitydata.cc:REPOSITORY_NAME

Creating a new repository
To create a new repository, you will need to have admin rights. Currently, the administrators are Nate, Jeremy, Aaron, Mako, Sayamindu, and Jim. If you'd like to be an administrator, you should contact one of them!

Creating new repositories
If you are all already administrator, this describes how you will create a new repository.

First, you will need to clone the gitolite-admin repository

$ git clone git@code.communitydata.cc:gitolite-admin

And then edit the file. To add a new project, simply create a new entry at the bottom of the file.

For example,

would create a new repository at git@code.communitydata.cc:foo with aaron and mako as admins, and give jdfoote read-only access *once this file was saved, committed, and pushed*.

You could then go to wherever the files are that you would like to track, and add this repository as a remote, like so:

If this project already exists in git, then it's even easier. Just change the remote, and push it.

Adding new users
To add new users, simply add their public key to the  directory, renamed as. The persons username (as called in the  file) will be whatever the username in the filename above is.