aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-08-21 12:34:02 +1200
committerTom Ryder <tom@sanctum.geek.nz>2016-08-21 12:34:02 +1200
commit739776b45771ae0c67a8b810ce224eba0de29737 (patch)
treeb1aff78cbfc2da431d83d50de5fe92571dda102c
parentMerge branch 'master' into openbsd (diff)
parentAdd some upstream checking to Git prompt (diff)
downloaddotfiles-739776b45771ae0c67a8b810ce224eba0de29737.tar.gz
dotfiles-739776b45771ae0c67a8b810ce224eba0de29737.zip
Merge branch 'master' into openbsd
-rw-r--r--README.markdown8
-rw-r--r--bash/bashrc.d/prompt.bash22
-rw-r--r--git/gitconfig.m46
-rw-r--r--man/man1/dmp.19
4 files changed, 34 insertions, 11 deletions
diff --git a/README.markdown b/README.markdown
index d9e2567d..e17ddb68 100644
--- a/README.markdown
+++ b/README.markdown
@@ -141,10 +141,10 @@ A terminal session with my prompt looks something like this:
It expands based on context to include these elements in this order:
-* Whether in a Git repository if applicable, and punctuation to show whether
- there are local modifications at a glance; Subversion support can also be
- enabled (I need it at work), in which case a `git:` or `svn:` prefix is
- added appropriately
+* Whether in a Git repository if applicable, and punctuation to show
+ repository status including reference to upstreams at a glance. Subversion
+ support can also be enabled (I need it at work), in which case a `git:` or
+ `svn:` prefix is added appropriately
* The number of running background jobs, if non-zero
* The exit status of the last command, if non-zero
diff --git a/bash/bashrc.d/prompt.bash b/bash/bashrc.d/prompt.bash
index dca34928..1e8c568d 100644
--- a/bash/bashrc.d/prompt.bash
+++ b/bash/bashrc.d/prompt.bash
@@ -127,14 +127,30 @@ prompt() {
# Collect symbols representing repository state
local state
+
+ # Upstream HEAD has commits after local HEAD; we're "behind"
+ (($(git rev-list --count 'HEAD..@{u}' 2>/dev/null) > 0)) &&
+ state=${state}\<
+
+ # Local HEAD has commits after upstream HEAD; we're "ahead"
+ (($(git rev-list --count '@{u}..HEAD' 2>/dev/null) > 0)) &&
+ state=${state}\>
+
+ # Tracked files are modified
git diff-files --quiet ||
- state=${state}!
+ state=${state}\!
+
+ # Changes are staged
git diff-index --cached --quiet HEAD ||
- state=${state}+
+ state=${state}\+
+
+ # There are some untracked and unignored files
[[ -n $(git ls-files --others --exclude-standard) ]] &&
state=${state}\?
+
+ # There are stashed changes
git rev-parse --quiet --verify refs/stash >/dev/null &&
- state=${state}^
+ state=${state}\^
# Print the status in brackets; add a git: prefix only if there
# might be another VCS prompt (because PROMPT_VCS is set)
diff --git a/git/gitconfig.m4 b/git/gitconfig.m4
index 62c58f39..d1aac5e8 100644
--- a/git/gitconfig.m4
+++ b/git/gitconfig.m4
@@ -17,11 +17,16 @@
compression = 9
[diff]
+ algorithm = patience
tool = vimdiff
[difftool]
prompt = false
+[fetch]
+ output = compact
+ prune = true
+
[grep]
extendRegexp = true
lineNumber = true
@@ -45,6 +50,7 @@
[status]
short = true
+ showUntrackedFiles = all
[user]
name = DOTFILES_NAME
diff --git a/man/man1/dmp.1 b/man/man1/dmp.1
index e9b5dc4f..d5883afc 100644
--- a/man/man1/dmp.1
+++ b/man/man1/dmp.1
@@ -5,14 +5,15 @@
.SH SYNOPSIS
.B dmp
.br
-.B dmp 25
+.B dmp
+25
.SH DESCRIPTION
.B dmp
applies dmenu(1) to pick a password entry from a pass(1) store and put it into
-the X CLIPBOARD for up to 10 seconds.
+the X CLIPBOARD for a period of time, defaulting to 10 seconds, after which
+xsel(1) will remove it from the clipboard.
.P
-An optional timeout in seconds can be applied, after which xsel(1) will remove
-the password from the clipboard. This timeout defaults to 10 seconds.
+The timeout in seconds can be specified as an optional argument.
.SH SEE ALSO
dmenu(1), pass(1), xsel(1)
.SH AUTHOR