From: "SZEDER Gábor" <szeder@ira.uka.de>
To: git@vger.kernel.org
Cc: "SZEDER Gábor" <szeder@ira.uka.de>
Subject: [PATCH v2 06/13] bash prompt: run 'git rev-parse --git-dir' directly instead of __gitdir()
Date: Tue, 18 Jun 2013 04:16:59 +0200 [thread overview]
Message-ID: <1371521826-3225-7-git-send-email-szeder@ira.uka.de> (raw)
In-Reply-To: <1371521826-3225-1-git-send-email-szeder@ira.uka.de>
From: SZEDER Gábor <szeder@ira.uka.de>
__git_ps1() finds out the path to the repository by using the
__gitdir() helper function. __gitdir() is basically just a wrapper
around 'git rev-parse --git-dir', extended with support for
recognizing a remote repository given as argument, to use the path
given on the command line, and with a few shortcuts to recognize a git
repository in cwd or at $GIT_DIR quickly without actually running 'git
rev-parse'. However, the former two is only necessary for the
completion script but makes no sense for the bash prompt, while the
latter shortcuts are performance optimizations __git_ps1() can do
without (they just avoid the overhead of fork()+exec()ing a git
process).
Run 'git rev-parse --git-dir' directly in __git_ps1(), because it will
allow this patch series to combine several $(git rev-parse ...)
command substitutions in the main code path, and the overall
performance benefit will far outweight the loss of those few shortcuts
in __gitdir(). Furthermore, since __gitdir() is not needed anymore
for the prompt, remove it from the prompt script finally eliminating
its duplication between the prompt and completion scripts. Also
remove the comment from the completion script warning about this code
duplication.
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
---
contrib/completion/git-completion.bash | 2 --
contrib/completion/git-prompt.sh | 28 ++--------------------------
2 files changed, 2 insertions(+), 28 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 56c52c66..e0c8d6a1 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -33,8 +33,6 @@ esac
# returns location of .git repo
__gitdir ()
{
- # Note: this function is duplicated in git-prompt.sh
- # When updating it, make sure you update the other one to match.
if [ -z "${1-}" ]; then
if [ -n "${__git_dir-}" ]; then
echo "$__git_dir"
diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index 96b496cc..0fc1d317 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -80,30 +80,6 @@
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
# the colored output of "git status -sb".
-# __gitdir accepts 0 or 1 arguments (i.e., location)
-# returns location of .git repo
-__gitdir ()
-{
- # Note: this function is duplicated in git-completion.bash
- # When updating it, make sure you update the other one to match.
- if [ -z "${1-}" ]; then
- if [ -n "${__git_dir-}" ]; then
- echo "$__git_dir"
- elif [ -n "${GIT_DIR-}" ]; then
- test -d "${GIT_DIR-}" || return 1
- echo "$GIT_DIR"
- elif [ -d .git ]; then
- echo .git
- else
- git rev-parse --git-dir 2>/dev/null
- fi
- elif [ -d "$1/.git" ]; then
- echo "$1/.git"
- else
- echo "$1"
- fi
-}
-
# stores the divergence from upstream in $p
# used by GIT_PS1_SHOWUPSTREAM
__git_ps1_show_upstream ()
@@ -335,8 +311,8 @@ __git_ps1 ()
;;
esac
- local g="$(__gitdir)"
- if [ -z "$g" ]; then
+ local g=
+ if ! g="$(git rev-parse --git-dir 2>/dev/null)"; then
if [ $pcmode = yes ]; then
#In PC mode PS1 always needs to be set
PS1="$ps1pc_start$ps1pc_end"
--
1.8.3.1.487.g8f4672d
next prev parent reply other threads:[~2013-06-18 2:18 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-18 2:16 [PATCH v2 00/13] bash prompt speedup SZEDER Gábor
2013-06-18 2:16 ` [PATCH v2 01/13] bash prompt: fix redirection coding style in tests SZEDER Gábor
2013-06-18 2:16 ` [PATCH v2 02/13] bash prompt: fix here document indentation in interactive rebase test SZEDER Gábor
2013-06-18 5:54 ` Jeff King
2013-06-18 2:16 ` [PATCH v2 03/13] completion, bash prompt: move __gitdir() tests to completion test suite SZEDER Gábor
2013-06-18 2:16 ` [PATCH v2 04/13] bash prompt: add a test for symbolic link symbolic refs SZEDER Gábor
2013-06-18 2:16 ` [PATCH v2 05/13] bash prompt: return early from __git_ps1() when not in a git repository SZEDER Gábor
2013-06-18 2:16 ` SZEDER Gábor [this message]
2013-06-18 4:16 ` [PATCH v2 06/13] bash prompt: run 'git rev-parse --git-dir' directly instead of __gitdir() Eric Sunshine
2013-06-18 2:17 ` [PATCH v2 07/13] bash prompt: use bash builtins to find out rebase state SZEDER Gábor
2013-06-18 2:17 ` [PATCH v2 08/13] bash prompt: use bash builtins to find out current branch SZEDER Gábor
2013-06-18 2:17 ` [PATCH v2 09/13] bash prompt: use bash builtins to get detached HEAD abbrev. object name SZEDER Gábor
2013-06-18 2:17 ` [PATCH v2 10/13] bash prompt: combine 'git rev-parse' executions SZEDER Gábor
2013-06-18 6:05 ` Jeff King
2013-06-18 9:49 ` SZEDER Gábor
2013-06-18 10:01 ` [PATCH] fixup! bash prompt: use bash builtins to find out current branch SZEDER Gábor
2013-06-18 2:17 ` [PATCH v2 11/13] bash prompt: use bash builtins to check stash state SZEDER Gábor
2013-06-18 2:17 ` [PATCH v2 12/13] bash prompt: avoid command substitution when checking for untracked files SZEDER Gábor
2013-06-18 2:17 ` [PATCH v2 13/13] bash prompt: avoid command substitution when finalizing gitstring SZEDER Gábor
2013-06-18 2:28 ` [PATCH v2 00/13] bash prompt speedup SZEDER Gábor
2013-06-18 16:48 ` Junio C Hamano
2013-06-18 19:35 ` Simon Oosthoek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1371521826-3225-7-git-send-email-szeder@ira.uka.de \
--to=szeder@ira.uka.de \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).