From d49cacfb7bb96049185c2edfaf3c330b0bde338e Mon Sep 17 00:00:00 2001
From: Victor Torres <vpaivatorres@gmail.com>
Date: Fri, 2 Oct 2015 23:16:56 -0300
Subject: [PATCH 1/3] Add branch plugin

---
 plugins/branch/README.md         | 33 ++++++++++++++++++++++++++++++++
 plugins/branch/branch.plugin.zsh | 26 +++++++++++++++++++++++++
 2 files changed, 59 insertions(+)
 create mode 100644 plugins/branch/README.md
 create mode 100644 plugins/branch/branch.plugin.zsh

diff --git a/plugins/branch/README.md b/plugins/branch/README.md
new file mode 100644
index 000000000..f970266a8
--- /dev/null
+++ b/plugins/branch/README.md
@@ -0,0 +1,33 @@
+# Branch
+
+Displays the current Git or Mercurial branch fast.
+
+## Speed test
+
+### Mercurial
+
+```shell
+$ time hg branch
+0.11s user 0.14s system 70% cpu 0.355 total
+```
+
+### Branch plugin
+
+```shell
+$ time sh /tmp/branch_prompt_info.sh
+0.01s user 0.01s system 81% cpu 0.018 total
+```
+
+## Usage
+
+Edit your theme file (eg.: `~/.oh-my-zsh/theme/robbyrussell.zsh-theme`) 
+adding `$(branch_prompt_info)` in your prompt like this:
+
+```diff
+- PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
++ PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)$(branch_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
+```
+
+## Maintainer
+
+Victor Torres (<vpaivatorres@gmail.com>)
diff --git a/plugins/branch/branch.plugin.zsh b/plugins/branch/branch.plugin.zsh
new file mode 100644
index 000000000..c918ea2b5
--- /dev/null
+++ b/plugins/branch/branch.plugin.zsh
@@ -0,0 +1,26 @@
+# Branch: displays the current Git or Mercurial branch fast.
+# Victor Torres <vpaivatorres@gmail.com>
+# Oct 2, 2015
+
+function branch_prompt_info() {
+  # Defines path as current directory
+  path=$(pwd)
+  # While current path is not root path
+  while [ $path != '/' ];
+  do
+    # Git repository
+    if [ -d ${path}/.git ];
+    then
+      echo '±' $(/bin/cat ${path}/.git/HEAD | /usr/bin/cut -d / -f 3-)
+      return;
+    fi
+    # Mercurial repository
+    if [ -d ${path}/.hg ];
+    then
+      echo '☿' $(/bin/cat ${path}/.hg/branch)
+      return;
+    fi
+    # Defines path as parent directory and keeps looking for :)
+    path=$(/usr/bin/dirname $path)
+  done
+}

From cf5db83facf67a27faa2860241f6ddc1d7e27b4f Mon Sep 17 00:00:00 2001
From: Victor Torres <vpaivatorres@gmail.com>
Date: Mon, 14 Dec 2015 17:39:26 -0300
Subject: [PATCH 2/3] Implementing mcornella's suggestions in pull request
 4451.

---
 plugins/branch/branch.plugin.zsh | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/plugins/branch/branch.plugin.zsh b/plugins/branch/branch.plugin.zsh
index c918ea2b5..a1e9ca31b 100644
--- a/plugins/branch/branch.plugin.zsh
+++ b/plugins/branch/branch.plugin.zsh
@@ -4,23 +4,23 @@
 
 function branch_prompt_info() {
   # Defines path as current directory
-  path=$(pwd)
+  local current_dir=$PWD
   # While current path is not root path
-  while [ $path != '/' ];
+  while [[ $current_dir != '/' ]]
   do
     # Git repository
-    if [ -d ${path}/.git ];
+    if [[ -d "${current_dir}/.git" ]]
     then
-      echo '±' $(/bin/cat ${path}/.git/HEAD | /usr/bin/cut -d / -f 3-)
+      echo '±' ${"$(<"$current_dir/.git/HEAD")"##*/}
       return;
     fi
     # Mercurial repository
-    if [ -d ${path}/.hg ];
+    if [[ -d "${current_dir}/.hg" ]]
     then
-      echo '☿' $(/bin/cat ${path}/.hg/branch)
+      echo '☿' $(<"$current_dir/.hg/branch")
       return;
     fi
     # Defines path as parent directory and keeps looking for :)
-    path=$(/usr/bin/dirname $path)
+    current_dir="${current_dir:h}"
   done
 }

From fe63ed09b7a8d8040dbbe9892f89c1c46d4ff75d Mon Sep 17 00:00:00 2001
From: Victor Torres <vpaivatorres@gmail.com>
Date: Mon, 14 Dec 2015 20:58:29 -0300
Subject: [PATCH 3/3] Updating speed test info and using zsh command line.

---
 plugins/branch/README.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/plugins/branch/README.md b/plugins/branch/README.md
index f970266a8..56ab8da4b 100644
--- a/plugins/branch/README.md
+++ b/plugins/branch/README.md
@@ -14,13 +14,13 @@ $ time hg branch
 ### Branch plugin
 
 ```shell
-$ time sh /tmp/branch_prompt_info.sh
-0.01s user 0.01s system 81% cpu 0.018 total
+$ time zsh /tmp/branch_prompt_info_test.zsh
+0.00s user 0.01s system 78% cpu 0.014 total
 ```
 
 ## Usage
 
-Edit your theme file (eg.: `~/.oh-my-zsh/theme/robbyrussell.zsh-theme`) 
+Edit your theme file (eg.: `~/.oh-my-zsh/theme/robbyrussell.zsh-theme`)
 adding `$(branch_prompt_info)` in your prompt like this:
 
 ```diff