diff --git a/demos/README.md b/demos/README.md new file mode 100644 index 0000000000..0e29a7c818 --- /dev/null +++ b/demos/README.md @@ -0,0 +1,42 @@ +# Screenshots with demos and scripts to generate them + +The `demo_*.sh` scripts in this directory demo +various features of `jj`. + +The `run_scripts.sh` script can be used to: + +- Run them inside a standardized environment instead of the user's local + environment. +- Generate SVG and PNG images for the scripts. + +The PNG images in the repo may be slightly older, as they take up more space in +the repo. + +The SVG images have human-readable diffs, but may look different on different +computers with different fonts installed. + +## Running `run_scripts.sh` + +This requires ImageMagick and `term-transcript-cli` to be installed. See +`run_scripts.sh`'s error messages for some more details. + +One way to make all the images and check the output is: + +```shell +cd demos +./run_scripts.sh demo_*.sh |less +``` + +### A note on fonts + +The exact PNG output depends on the fonts you have installed on your system. + +The screenshots are usually generated on a Debian Linux system and use the "Fira +Code" font. It can be installed with `sudo apt install fonts-firacode`. It seems +to include all relevant Unicode symbols and be a little bolder and thus more +readable than the "Liberation Mono" font, which is used if Fira Code is not +installed. That font also works OK. See the CSS font specification in +`run_scripts.sh` for other fonts tried (especially when viewing SVGs on the +web). If none apply, the default `monospace` font will be used. + +`convert -list Fonts` will list the fonts ImageMagick is aware of. diff --git a/demos/git_compat.svg b/demos/git_compat.svg new file mode 100644 index 0000000000..eced37bf14 --- /dev/null +++ b/demos/git_compat.svg @@ -0,0 +1,87 @@ + + + + + + + +# Clone a Git repo: + +$ jj git clone https://github.com/octocat/Hello-World +Fetching into new repo in "/tmp/tmp.PUd3syX7da/Hello-World" +Working copy now at: pxlotqpw e905ce63 (empty) (no description set) +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 +Added 1 files, modified 0 files, removed 0 files +$ cd Hello-World + +# Inspect it: + +$ jj log -r 'all()' +@  pxlotqpw jjfan@example.com 2023-10-01 22:29:21.000 -07:00 e905ce63 +│  (empty) (no description set) +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉    orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +├─╮  (empty) Merge pull request #6 from Spaceghost/patch-1 +│ ◉  nznozkvv Johnneylee.rollins@gmail.com 2011-09-13 21:42:41.000 -07:00 +├─╯  76294131 +│    New line at end of file. --Signed off by Spaceghost +◉  syktoqts cameron@github.com 2011-01-26 11:06:08.000 -08:00 553c2077 +│  first commit +◉  zzzzzzzz root() 00000000 +$ jj diff -r b1 +Modified regular file README: +   1    1: Hello Worldworld! + +# The repo is backed by the actual Git repo: + +$ git --git-dir=.jj/repo/store/git log --graph --all --decorate --oneline +e905ce6  +| * d7ab898  +| * b1b3f97 (origin/octocat-patch-1) sentence case +|/   +| * b3cbd5b (origin/test) Create CONTRIBUTING.md +|/   +*   7fd1a60 (origin/master) Merge pull request #6 from Spaceghost/patch-1 +|\   +| * 7629413 New line at end of file. --Signed off by Spaceghost +|/   +553c207 first commit + + + diff --git a/demos/juggle_conflicts.svg b/demos/juggle_conflicts.svg new file mode 100644 index 0000000000..1ea98f849a --- /dev/null +++ b/demos/juggle_conflicts.svg @@ -0,0 +1,130 @@ + + + + + + + +# We are in a repo with three commits, all +# editing the same line: + +$ jj log +@  upqsurwq jjfan@example.com 2023-10-01 22:29:22.258 -07:00 5d13bfb2 +│  (empty) (no description set) +◉  ltqxzzvn jjfan@example.com 2023-10-01 22:29:22.258 -07:00 third d7689062 +│  third +◉  nrlsumvr jjfan@example.com 2023-10-01 22:29:22.202 -07:00 second 483c2b23 +│  second +◉  pumwmyut jjfan@example.com 2023-10-01 22:29:22.147 -07:00 first eb0ec5cc +│  first +◉  zzzzzzzz root() 00000000 +$ jj diff -r first +Added regular file file: +        1first +$ jj diff -r second +Modified regular file file: +   1    1firstsecond +$ jj diff -r third +Modified regular file file: +   1    1secondthird + +# Let's reorder the second and third commits: + +$ jj rebase -s third -d first +Rebased 2 commits +Working copy now at: upqsurwq 4d810169 (conflict) (empty) (no description set) +Parent commit      : ltqxzzvn 0aa4eff7 third | (conflict) third +Added 0 files, modified 1 files, removed 0 files +$ jj rebase -s second -d third +Rebased 1 commits +$ jj log +◉  nrlsumvr jjfan@example.com 2023-10-01 22:29:22.435 -07:00 second a8e2d400 +│  second +│ @  upqsurwq jjfan@example.com 2023-10-01 22:29:22.406 -07:00 4d810169 conflict +├─╯  (empty) (no description set) +◉  ltqxzzvn jjfan@example.com 2023-10-01 22:29:22.406 -07:00 third 0aa4eff7 +│  conflict +│  third +◉  pumwmyut jjfan@example.com 2023-10-01 22:29:22.147 -07:00 first eb0ec5cc +│  first +◉  zzzzzzzz root() 00000000 + +# The commit labeled "third" has a conflict, +# as expected. What's more interesting is +# that the top commit has no conflict! That's +# because it has the changes from all three +# commits applied to it. + + +# Let's verify that by looking at its contents: + +$ jj co second +Working copy now at: mqslnlrv e1967a3c (empty) (no description set) +Parent commit      : nrlsumvr a8e2d400 second | second +Added 0 files, modified 1 files, removed 0 files +$ cat file +third + +# Let's now instead make "second" and "third" +# sibling and merge them: + +$ jj rebase -s second -d first +Rebased 2 commits +Working copy now at: mqslnlrv 72803a85 (empty) (no description set) +Parent commit      : nrlsumvr 4b5d0b0d second | second +Added 0 files, modified 1 files, removed 0 files +$ jj merge second third -m merged +Working copy now at: xpkuouzp 7390c074 (empty) merged +Parent commit      : nrlsumvr 4b5d0b0d second | second +Parent commit      : ltqxzzvn 0aa4eff7 third | (conflict) third +Added 0 files, modified 1 files, removed 0 files +$ jj log +@    xpkuouzp jjfan@example.com 2023-10-01 22:29:22.561 -07:00 7390c074 +├─╮  (empty) merged +│ ◉  ltqxzzvn jjfan@example.com 2023-10-01 22:29:22.406 -07:00 third 0aa4eff7 +│ │  conflict +│ │  third +◉ │  nrlsumvr jjfan@example.com 2023-10-01 22:29:22.530 -07:00 second 4b5d0b0d +├─╯  second +◉  pumwmyut jjfan@example.com 2023-10-01 22:29:22.147 -07:00 first eb0ec5cc +│  first +◉  zzzzzzzz root() 00000000 + +# Again, because the merge commit has the +# changes from all three commits, it has no +# conflict. + + + + diff --git a/demos/operation_log.svg b/demos/operation_log.svg new file mode 100644 index 0000000000..f3ea2aa8c6 --- /dev/null +++ b/demos/operation_log.svg @@ -0,0 +1,174 @@ + + + + + + + +# We are in the octocat/Hello-World repo. +# The "operation log" shows the operations +# so far: + +$ jj op log +@  fa79b3466874 jjfan@jujube now, lasted 1 millisecond +│  check out git remote's default branch +│  args: jj git clone https://github.com/octocat/Hello-World +◉  b9f3854e4c6b jjfan@jujube now, lasted 444 milliseconds +│  fetch from git remote into empty repo +│  args: jj git clone https://github.com/octocat/Hello-World +◉  3eed56af5757 jjfan@jujube now, lasted less than a microsecond +│  add workspace 'default' +◉  6f3495125bc8 jjfan@jujube now, lasted less than a microsecond +   initialize repo + +# We are going to make some changes to show +# how the operation log works. Let's add a file, set +# a description, and rebase onto the "test" branch: + +$ echo stuff > new-file +$ jj describe -m stuff +Working copy now at: xtrplzoo eb5aa286 stuff +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 +$ jj rebase -d test +Rebased 1 commits +Working copy now at: xtrplzoo 8c520228 stuff +Parent commit      : kowxouwz b3cbd5bb test | Create CONTRIBUTING.md +Added 1 files, modified 0 files, removed 0 files + +# We are now going to make another change off of +# master: + +$ jj co master +Working copy now at: okqrllkp 7ce6d4fb (empty) (no description set) +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 +Added 0 files, modified 0 files, removed 2 files +$ jj describe -m "other stuff" +Working copy now at: okqrllkp 792d0b92 (empty) other stuff +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 + +# The repo now looks like this: + +$ jj log +@  okqrllkp jjfan@example.com 2023-10-01 22:29:23.000 -07:00 792d0b92 +│  (empty) other stuff +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +│ ◉  xtrplzoo jjfan@example.com 2023-10-01 22:29:23.000 -07:00 8c520228 +│ │  stuff +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + +# The most recent portion of the operation log +# is: + +$ jj op log | head +@  5bae9d9b6a8a jjfan@jujube now, lasted 1 millisecond +│  describe commit 7ce6d4fb5acb6945fd0301187a03245b49fe6b71 +│  args: jj describe -m 'other stuff' +◉  99a3111903cc jjfan@jujube now, lasted 1 millisecond +│  check out commit 7fd1a60b01f91b314f59955a4e4d4e80d8edf11d +│  args: jj co master +◉  5cdf49cce8a4 jjfan@jujube now, lasted 1 millisecond +│  rebase commit eb5aa28675c23f6664c1027aae91f13bf5e3c474 and descendants +│  args: jj rebase -d test +◉  74cd4da2188d jjfan@jujube now, lasted 1 millisecond + +# Let's undo that rebase operation: + +$ jj undo 5cdf4 + +# Note that only the rebase was undone, and the +# subsequent "other stuff" change was not undone: + +$ jj log +@  okqrllkp jjfan@example.com 2023-10-01 22:29:23.000 -07:00 792d0b92 +│  (empty) other stuff +│ ◉  xtrplzoo jjfan@example.com 2023-10-01 22:29:23.000 -07:00 eb5aa286 +├─╯  stuff +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + +# We can also see what the repo looked like +# after the rebase operation: + +$ jj --at-op 5cdf4 log +@  xtrplzoo jjfan@example.com 2023-10-01 22:29:23.000 -07:00 8c520228 +│  stuff +◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +│  Create CONTRIBUTING.md +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + +# Let's say we instead want to go back to the +# state of the repo right after the rebase: + +$ jj op restore 5cdf4 +Working copy now at: xtrplzoo 8c520228 stuff +Parent commit      : kowxouwz b3cbd5bb test | Create CONTRIBUTING.md +Added 2 files, modified 0 files, removed 0 files + +# We're now back to before the "other stuff" +# change existed: + +$ jj log +@  xtrplzoo jjfan@example.com 2023-10-01 22:29:23.000 -07:00 8c520228 +│  stuff +◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +│  Create CONTRIBUTING.md +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + + + diff --git a/demos/resolve_conflicts.svg b/demos/resolve_conflicts.svg new file mode 100644 index 0000000000..50d3b466fb --- /dev/null +++ b/demos/resolve_conflicts.svg @@ -0,0 +1,139 @@ + + + + + + + +# We are on the master branch of the +# octocat/Hello-World repo: + +$ jj log -r 'all()' +@  xkmnkqsr jjfan@example.com 2023-10-01 22:29:25.000 -07:00 b6aec352 +│  (empty) (no description set) +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉    orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +├─╮  (empty) Merge pull request #6 from Spaceghost/patch-1 +│ ◉  nznozkvv Johnneylee.rollins@gmail.com 2011-09-13 21:42:41.000 -07:00 +├─╯  76294131 +│    New line at end of file. --Signed off by Spaceghost +◉  syktoqts cameron@github.com 2011-01-26 11:06:08.000 -08:00 553c2077 +│  first commit +◉  zzzzzzzz root() 00000000 + +# Let's make an edit that will conflict +# when we rebase it: + +$ jj describe -m "README: say which world" +Working copy now at: xkmnkqsr 20110a7f (empty) README: say which world +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 +$ echo "Hello Earth!" > README +$ jj diff +Modified regular file README: +   1    1: Hello WorldEarth! + +# We're going to rebase it onto commit b1. +# That commit looks like this: + +$ jj diff -r b1 +Modified regular file README: +   1    1: Hello Worldworld! + +# Now rebase: + +$ jj rebase -d b1 +Rebased 1 commits +Working copy now at: xkmnkqsr 539b71db (conflict) README: say which world +Parent commit      : tpstlust b1b3f972 octocat-patch-1 | sentence case +Added 0 files, modified 1 files, removed 0 files + +# Huh, that seemed to succeed. Let's take a +# look at the repo: + +$ jj log -r 'all()' +@  xkmnkqsr jjfan@example.com 2023-10-01 22:29:25.000 -07:00 539b71db conflict +│  README: say which world +◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +│  octocat-patch-1 b1b3f972 +│  sentence case +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉    orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +├─╮  (empty) Merge pull request #6 from Spaceghost/patch-1 +│ ◉  nznozkvv Johnneylee.rollins@gmail.com 2011-09-13 21:42:41.000 -07:00 +├─╯  76294131 +│    New line at end of file. --Signed off by Spaceghost +◉  syktoqts cameron@github.com 2011-01-26 11:06:08.000 -08:00 553c2077 +│  first commit +◉  zzzzzzzz root() 00000000 +$ jj status +Working copy changes: +M README +There are unresolved conflicts at these paths: +README    2-sided conflict +Working copy : xkmnkqsr 539b71db (conflict) README: say which world +Parent commit: tpstlust b1b3f972 octocat-patch-1 | sentence case + +# As you can see, the rebased commit has a +# conflict. The file in the working copy looks +# like this: + +$ cat README +<<<<<<< +%%%%%%% +-Hello World! ++Hello world! ++++++++ +Hello Earth! +>>>>>>> + +# Now we will resolve the conflict: + +$ echo "Hello earth!" > README + +# The status command no longer reports it: + +$ jj status +Working copy changes: +M README +Working copy : xkmnkqsr b1c13c23 README: say which world +Parent commit: tpstlust b1b3f972 octocat-patch-1 | sentence case + + + diff --git a/demos/run_scripts.sh b/demos/run_scripts.sh index c70ce9399a..1f5d0926a6 100755 --- a/demos/run_scripts.sh +++ b/demos/run_scripts.sh @@ -44,8 +44,12 @@ run_script_through_term_transcript_and_pipe_result_to_stderr() { tee "$outfile" term-transcript capture \ --no-inputs --pure-svg --palette powershell \ - --out "$script_base".svg "$script_base" \ - < "$outfile" + --font "Fira Code, Liberation Mono, SFMono-Regular, Consolas, Menlo" \ + --out "$script_base".svg "$script_base" < "$outfile" + # The default font choice term-transcript would make is: + # SFMono-Regular, Consolas, Liberation Mono, Menlo + # We add the fonts that were checked and seem to contain all the relevant + # unicode in front. rm "$outfile" } diff --git a/demos/working_copy.svg b/demos/working_copy.svg new file mode 100644 index 0000000000..9b0d36b3e1 --- /dev/null +++ b/demos/working_copy.svg @@ -0,0 +1,166 @@ + + + + + + + +# We are in the octocat/Hello-World repo. +# We have an empty working copy on top of master: + +$ jj status +The working copy is clean +Working copy : mxqlopuw 8d0e7e7c (empty) (no description set) +Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa +ceghost/patch-1 +$ jj log +@  mxqlopuw jjfan@example.com 2023-10-01 22:29:26.000 -07:00 8d0e7e7c +│  (empty) (no description set) +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + +# Now make some changes in the working copy: + +$ echo "Goodbye World!" > README +$ echo stuff > new-file + +# Our working copy's commit ID changed +# because we made changes: + +$ jj status +Working copy changes: +M README +A new-file +Working copy : mxqlopuw b580fc4d (no description set) +Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa +ceghost/patch-1 +$ jj log +@  mxqlopuw jjfan@example.com 2023-10-01 22:29:27.000 -07:00 b580fc4d +│  (no description set) +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + +# Add a branch so we can easily refer to this +# commit: + +$ jj branch create goodbye +$ jj log +@  mxqlopuw jjfan@example.com 2023-10-01 22:29:27.000 -07:00 goodbye b580fc4d +│  (no description set) +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + +# Start working on a new change off of master: + +$ jj co master +Working copy now at: quqqqrtm cb2e4d75 (empty) (no description set) +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 +Added 0 files, modified 1 files, removed 1 files +$ jj log +@  quqqqrtm jjfan@example.com 2023-10-01 22:29:27.000 -07:00 cb2e4d75 +│  (empty) (no description set) +│ ◉  mxqlopuw jjfan@example.com 2023-10-01 22:29:27.000 -07:00 goodbye b580fc4d +├─╯  (no description set) +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + +# Note that the working copy is now clean; the +# "goodbye" change stayed in its own commit: + +$ jj status +The working copy is clean +Working copy : quqqqrtm cb2e4d75 (empty) (no description set) +Parent commit: orrkosyo 7fd1a60b master | (empty) Merge pull request #6 from Spa +ceghost/patch-1 + +# Modify a file in this new change: + +$ echo "Hello everyone!" > README + +# The working copy is not special; we can, for +# example, set the description of any commit. +# First, set it on the working copy: + +$ jj describe -m everyone +Working copy now at: quqqqrtm 50e8e102 everyone +Parent commit      : orrkosyo 7fd1a60b master | (empty) Merge pull request #6 fr +om Spaceghost/patch-1 + +# Now set it on the change we worked on before: + +$ jj describe goodbye -m goodbye + +# Inspect the result: + +$ jj log +◉  mxqlopuw jjfan@example.com 2023-10-01 22:29:27.000 -07:00 goodbye b19dd123 +│  goodbye +│ @  quqqqrtm jjfan@example.com 2023-10-01 22:29:27.000 -07:00 50e8e102 +├─╯  everyone +│ ◉  tpstlust support+octocat@github.com 2018-05-10 12:55:19.000 -05:00 +├─╯  octocat-patch-1 b1b3f972 +│    sentence case +│ ◉  kowxouwz octocat@nowhere.com 2014-06-10 15:22:26.000 -07:00 test b3cbd5bb +├─╯  Create CONTRIBUTING.md +◉  orrkosyo octocat@nowhere.com 2012-03-06 15:06:50.000 -08:00 master 7fd1a60b +│  (empty) Merge pull request #6 from Spaceghost/patch-1 +~ + + +