]> git.phdru.name Git - dotfiles.git/commitdiff
.shellrc: Get remote for cdremote from the current branch
authorOleg Broytman <phd@phdru.name>
Sun, 20 Aug 2017 21:06:31 +0000 (00:06 +0300)
committerOleg Broytman <phd@phdru.name>
Wed, 23 Aug 2017 05:10:28 +0000 (08:10 +0300)
.shellrc

index 1b15d83ddc834e9e9dbc94c1dab2be441c5be99f..8d63ee79e55df1d256f35ba0ecfd64760faa5fb2 100644 (file)
--- a/.shellrc
+++ b/.shellrc
@@ -177,11 +177,23 @@ chlo() { clear; cd; >$HISTFILE; unset HISTFILE; history -c; logout || exit; }
 if test -x /usr/bin/git >/dev/null 2>&1; then
    # chdir to a remote's directory (if the remote is on the local FS)
    cdremote() {
-      if [ -z "$1" -o -n "$2" ]; then
-         echo "Usage: cdremote remote_name" >&2
+      if [ -z "$1" ]; then
+         branch="`git rev-parse --abbrev-ref HEAD`"
+         remote="`git config --get branch.$branch.remote`"
+      elif [ -n "$2" ]; then
+         echo "Usage: cdremote [remote_name]" >&2
          return 1
+      else
+         remote="$1"
       fi
-      cd "`git config --get remote.$1.url`"
+
+      if [ -z "$remote" ]; then
+         echo "Cannot find remote for branch $branch" >&2
+         echo "Usage: cdremote [remote_name]" >&2
+         return 1
+      fi
+
+      cd "`git config --get remote.$remote.url`"
    }
 
    if test -n "$BASH_VERSION"; then