Skip to content
bmmoore edited this page Dec 2, 2013 · 7 revisions

Getting Started

Github's own instructions for setting up git are here: https://help.github.com/articles/set-up-git

Especially if you don't have a new enough git to have "credential helper", you may want to set up an SSH keypair (and maybe let ssh-agent save you from retyping the password) https://help.github.com/articles/generating-ssh-keys

Check out the repository with one of the listed URIs, either

git clone [email protected]:kframework/k.git

for SSH or

git clone https://github.com/kframework/k

Workflow

As we've just migrated from subversion, we're going to try to keep a subversion-style workflow on master. This means project members can all commit directly onto master, and we keep a linear history unless we actually mean to merge a branch.

A good start is Atlassian's Centralized Workflow guide

There are only a few things to add

  • Never push to the nightly branch at all. Never push to master with the --force or -f options. If you think it's necessary, discuss it on the mailing list and agree on what exactly will be changed.

  • Always run "git pull --rebase", or make the --rebase option the default by running "git config pull.rebase true" in your checkout. Without these options, pulling when you have local work will create unnecessary merges and a confusing nonlinear history. Or, just avoid git pull entirely and use "git fetch" and "git rebase" separately.

  • gitk shows a nice visual view of the history of a branch, so running it right before you push (while you are on branch master, or explicitly like "gitk master origin/master") will let you see if you like what you are just about to push.

History Translation

The git repository was converted from the Google Code repository at http://code.google.com/p/k-framework/ with git-svn. We also tried to translate SVN tags to git tags. A simple tag on master marks a version of the code that was tagged in SVN, a pair of tags lca/TAG and TAG indicates that the contents of the tag were modified in SVN, then lca/TAG points to the version on master that it diverged from (for the convenience of tools like git-describe), and TAG points to a commit including the modifications. For full history, the branches converted from SVN tags are retained in this repository under refs/tag-history.

Clone this wiki locally