-
Notifications
You must be signed in to change notification settings - Fork 0
Git Workflow
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
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.
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.