systemml-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Dusenberry" <dusenberr...@gmail.com>
Subject SystemML Committer Git Guide
Date Wed, 02 Dec 2015 20:38:41 GMT
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
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message