Hi all,
Here is a quick committer guide to using Git with SystemML, located in the GitHub Gist at
the following link, and reproduced below.
• https://gist.github.com/dusenberrymw/78eb31b101c1b1b236e5
---
# SystemML Git Guide
## Setup Git repo locally
* Fork Apache SystemML to your personal GitHub account by browsing to [https://github.com/apache/incubator-systemml]
and clicking "Fork".
* Clone your personal GitHub fork of Apache SystemML:
* `git clone git@github.com:USERNAME/incubator-systemml.git` // assuming the use of SSH
keys with GitHub
* Add GitHub (read-only mirror) and Apache-owned (committer writeable) Git repositories as
remotes:
* `cd incubator-systemml`
* `git remote add apache-github https://github.com/apache/incubator-systemml.git`
* `git remote add apache https://git-wip-us.apache.org/repos/asf/incubator-systemml.git`
* Add a Git alias for checking out GitHub pull requests locally:
* Install alias globally by placing the following in `~/.gitconfig`
```
[alias]
pr = "!f() { git fetch ${2:-apache-github} pull/$1/head:pr-$1 && git checkout
pr-$1; }; f"
```
* Look at pull request on GitHub to determine the pull request number, indicated as "#4",
for example.
* Checkout out locally:
* `git pr 4`
## PR flow
* Create local branch for feature(s):
* `git checkout -b SYSML-####-My_Awesome_Feature`
* Make commits on `SYSML-####-My_Awesome_Feature` branch.
* Push the `SYSML-####-My_Awesome_Feature` branch to your personal GitHub fork of SystemML:
* `git checkout SYSML-####-My_Awesome_Feature`
* First push of this branch:
* `git push --set-upstream origin SYSML-####-My_Awesome_Feature`
* Future pushes of this branch:
* `git push`
* Open a new pull request by browsing to the `SYSML-####-My_Awesome_Feature` branch on your
personal GitHub fork of SystemML and clicking "New pull request".
## Merging (manually) without merge commits
* Update your local `SYSML-####-My_Awesome_Feature` branch with the latest commits in the
Apache repo by *rebasing*:
* `git checkout SYSML-####-My_Awesome_Feature`
* `git pull --rebase apache master`
* Update your local `master` branch with the latest commits in the Apache repo:
* `git checkout mater`
* `git pull apache master`
* Move the commits from your local `SYSML-####-My_Awesome_Feature` branch to the local `master`
branch. Note: This will **not create merge commits** since both branches are fully updated
from the Apache repo.
* `git checkout master`
* `git merge SYSML-####-My_Awesome_Feature`
* Note: This should result in a "fast-forward" merge.
* Push to the Apache repo:
* `git push apache master`
## Merging (script)
* WIP
## Tricks
* If you add the phrase "Closes #4." to the end of a commit message and then push to Apache,
GitHub will automatically close pull request 4, and the commit will contain a link to that
pull request.
---
Cheers!
- Mike
--
Mike Dusenberry
GitHub: github.com/dusenberrymw
LinkedIn: linkedin.com/in/mikedusenberry
|