Sync minimal branch with master.
This commit is contained in:
parent
207d2a4df7
commit
9b18fa83db
4 changed files with 68 additions and 47 deletions
96
.bashrc
96
.bashrc
|
@ -3,64 +3,73 @@
|
|||
__prompt_git_status() {
|
||||
# Generate a git branch/status prompt.
|
||||
# Based on git-prompt.sh by Shawn O. Pearce <spearce@spearce.org>.
|
||||
# Arguments:
|
||||
# $1 The printf format string for the prompt. Must include %s.
|
||||
# Environment variables:
|
||||
# GIT_PROMPT_SHOW_TYPE=1 - Show type of repository (Bare, Shallow).
|
||||
# GIT_PROMPT_SHOW_IGNORED=1 - Show a ! if the directory is ignored.
|
||||
# GIT_PROMPT_SHOW_UNSTAGED=1 - Show a * if there are unstaged changes (superceeded by above).
|
||||
# GIT_PROMPT_SHOW_UNTRACKED=1 - Show a ? if there are untracked files in the working directory (superceeded by above).
|
||||
# GIT_PROMPT_SHOW_STASH=1 - Show a & if there is a stash in this repository (superceeded by above).
|
||||
# GIT_PROMPT_SHOW_UPSTREAM=1 - Show status of this repository compaired to upstream:
|
||||
# GIT_PROMPT_SHOW_TYPE=1 Show type of repository (Bare, Shallow).
|
||||
# GIT_PROMPT_SHOW_UPSTREAM=1 Show status of this repository compaired to upstream:
|
||||
# ?? - No upstream set.
|
||||
# == - Working tree is equal to upstream.
|
||||
# <> - Divergent from upstream.
|
||||
# >> or >x - Working tree is ahead of upstream (x = commits ahead when used with next option).
|
||||
# << or <x - Working tree is behind upstream (x = commits behind when used with next option).
|
||||
# GIT_PROMPT_SHOW_UPSTREAM_EXTENDED=1 - In addition to upstream status, show the number of commits difference (inplies above).
|
||||
local COUNT GIT_PROMPT GIT_REPO_INFO RET="$?"
|
||||
# GIT_PROMPT_SHOW_UPSTREAM_EXTENDED=1 In addition to upstream status, show the number of commits difference (inplies above).
|
||||
# GIT_PROMPT_AUTO_PREFETCH=1 Automatically 'prefetch' upstream refs for comparisons (requires GIT_PROMPT_SHOW_UPSTREAM above).
|
||||
# GIT_PROMPT_SHOW_IGNORED=1 Show a ! if the current directory is ignored.
|
||||
# GIT_PROMPT_SHOW_UNSTAGED=1 Show a * if there are unstaged changes (superceeded by above).
|
||||
# GIT_PROMPT_SHOW_UNCOMMITTED=1 Show a & if there are staged but uncommitted changes (superceeded by above).
|
||||
# GIT_PROMPT_SHOW_UNTRACKED=1 Show a + if there are untracked files in the working directory (superceeded by above).
|
||||
# GIT_PROMPT_SHOW_STASH=1 Show a $ if there is a stash in this repository (superceeded by above).
|
||||
# Displays: The printf formatted git prompt based upon $1 and the environment vaiables above, for example:
|
||||
# S:branch_name >5 *
|
||||
# Returns: Exit code of the command line before entering this function.
|
||||
# shellcheck disable=SC2155
|
||||
local BRANCH COUNT GIT_PROMPT GIT_REPO_INFO PWD=$(pwd -P) RET="$?"
|
||||
|
||||
# Bail out if there's no format argument given.
|
||||
(( $# != 1 )) && return "$RET"
|
||||
|
||||
# Get some repository information.
|
||||
# shellcheck disable=SC2207
|
||||
GIT_REPO_INFO=( $(git rev-parse --is-bare-repository --is-shallow-repository --is-inside-git-dir --is-inside-work-tree --short HEAD 2>/dev/null) )
|
||||
IFS=$'\n' GIT_REPO_INFO=( $(git rev-parse --show-toplevel --git-dir --is-bare-repository --is-shallow-repository --is-inside-git-dir --is-inside-work-tree 2>/dev/null) )
|
||||
ERR="$?"
|
||||
|
||||
# Do nothing if there's an error.
|
||||
(( ERR >= 1 )) || { (( ERR == 128 )) && (( ${#GIT_REPO_INFO[@]} != 3 )); } && return "$RET"
|
||||
(( ERR >= 1 )) && return "$RET"
|
||||
|
||||
# Generate the prompt.
|
||||
if [[ "${GIT_REPO_INFO[2]}" == "true" ]]; then
|
||||
# If in the git directory, use a special branch marker.
|
||||
if [[ "${GIT_REPO_INFO[4]}" == "true" ]]; then
|
||||
# In the git directory, use a special branch marker.
|
||||
GIT_PROMPT+="!GIT_DIR!"
|
||||
elif [[ "${GIT_REPO_INFO[3]}" == "true" ]]; then
|
||||
# If in the working directory, generate the prompt.
|
||||
# Add status markers.
|
||||
elif [[ "${GIT_REPO_INFO[5]}" == "true" ]]; then
|
||||
# In the working directory, generate the prompt.
|
||||
# Add type markers.
|
||||
[[ -n "$GIT_PROMPT_SHOW_TYPE" ]] && {
|
||||
if [[ "${GIT_REPO_INFO[0]}" == "true" ]]; then
|
||||
if [[ "${GIT_REPO_INFO[2]}" == "true" ]]; then
|
||||
GIT_PROMPT+="B:"
|
||||
elif [[ "${GIT_REPO_INFO[1]}" == "true" ]]; then
|
||||
elif [[ "${GIT_REPO_INFO[3]}" == "true" ]]; then
|
||||
GIT_PROMPT+="S:"
|
||||
fi
|
||||
}
|
||||
|
||||
# Add the branch.
|
||||
GIT_PROMPT+="$(git describe --contains --all HEAD)"
|
||||
|
||||
# Add a marker if directory is ignored, there's untracked files or a stash.
|
||||
if [[ -n "$GIT_PROMPT_SHOW_IGNORED" ]] && git check-ignore -q "${PWD#"$(git rev-parse --show-toplevel)/"}"; then
|
||||
GIT_PROMPT+=" !"
|
||||
elif [[ -n "$GIT_PROMPT_SHOW_UNSTAGED" ]] && git ls-files --modified --exclude-standard --directory --error-unmatch -- ':/*' >/dev/null 2>&1; then
|
||||
GIT_PROMPT+=" *"
|
||||
elif [[ -n "$GIT_PROMPT_SHOW_UNTRACKED" ]] && git ls-files --others --exclude-standard --directory --error-unmatch -- ':/*' >/dev/null 2>&1; then
|
||||
GIT_PROMPT+=" ?"
|
||||
elif [[ -n "$GIT_PROMPT_SHOW_STASH" ]] && git rev-parse --verify --quiet refs/stash >/dev/null; then
|
||||
GIT_PROMPT+=" &"
|
||||
# Add the branch if there have been commits.
|
||||
if [[ -e "${GIT_REPO_INFO[1]}/refs/heads/master" ]]; then
|
||||
BRANCH="$(git describe --contains --all HEAD)"
|
||||
GIT_PROMPT+="$BRANCH"
|
||||
else
|
||||
GIT_PROMPT+="!NO COMMITS!"
|
||||
fi
|
||||
|
||||
# Get upstream status.
|
||||
# Add upstream status.
|
||||
[[ -n "$GIT_PROMPT_SHOW_UPSTREAM" ]] || [[ -n "$GIT_PROMPT_SHOW_UPSTREAM_EXTENDED" ]] && {
|
||||
COUNT="$(git rev-list --count --left-right '@{upstream}'...HEAD 2>/dev/null | tr '[:blank:]' ' ')"
|
||||
# Whether to run prefetch tasks.
|
||||
[[ -n "$GIT_PROMPT_AUTO_PREFETCH" ]] && {
|
||||
# Only prefetch remotes if in the top-level working directory and if the repository is configured for maintenance work.
|
||||
[[ "$PWD" == "${GIT_REPO_INFO[0]}" ]] && git config --global --get --fixed-value maintenance.repo "$PWD" >/dev/null 2>&1 && {
|
||||
git maintenance run --task=prefetch 2>/dev/null || printf "\\033[1;31m%s\\033[39m\\n" "Git maintenance 'prefetch' task failed." >&2
|
||||
}
|
||||
}
|
||||
COUNT="$(git rev-list --count --left-right "${BRANCH:+refs/prefetch/remotes/origin/}${BRANCH:-@{upstream\}}...HEAD" 2>/dev/null | tr '[:blank:]' ' ')"
|
||||
case "$COUNT" in
|
||||
"")
|
||||
# No upstream.
|
||||
|
@ -85,7 +94,7 @@ __prompt_git_status() {
|
|||
GIT_PROMPT+=" <"
|
||||
if [[ -n "$GIT_PROMPT_SHOW_UPSTREAM_EXTENDED" ]]; then
|
||||
# Show the number of the difference.
|
||||
GIT_PROMPT+="${COUNT% 0}"
|
||||
GIT_PROMPT+="${COUNT% 0}"
|
||||
else
|
||||
GIT_PROMPT+="<"
|
||||
fi
|
||||
|
@ -96,6 +105,19 @@ __prompt_git_status() {
|
|||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Add a marker if directory is ignored, there's unstaged files, uncommitted changes, untracked files or a stash.
|
||||
if [[ -n "$GIT_PROMPT_SHOW_IGNORED" ]] && git check-ignore "${PWD#"${GIT_REPO_INFO[0]}/"}" >/dev/null 2>&1 ; then
|
||||
GIT_PROMPT+=" !"
|
||||
elif [[ -n "$GIT_PROMPT_SHOW_UNSTAGED" ]] && git ls-files --modified --exclude-standard --directory --error-unmatch -- ':/*' >/dev/null 2>&1; then
|
||||
GIT_PROMPT+=" *"
|
||||
elif [[ -n "$GIT_PROMPT_SHOW_UNCOMMITTED" ]] && ! git diff --name-only --cached --exit-code >/dev/null 2>&1; then
|
||||
GIT_PROMPT+=" &"
|
||||
elif [[ -n "$GIT_PROMPT_SHOW_UNTRACKED" ]] && git ls-files --others --exclude-standard --directory --error-unmatch -- ':/*' >/dev/null 2>&1; then
|
||||
GIT_PROMPT+=" +"
|
||||
elif [[ -n "$GIT_PROMPT_SHOW_STASH" ]] && git rev-parse --verify --quiet refs/stash >/dev/null; then
|
||||
GIT_PROMPT+=" $"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Output the prompt.
|
||||
|
@ -389,12 +411,14 @@ PROMPT_COMMAND="__nanorc_prompt_command; __ssh_agent_prompt_command"
|
|||
|
||||
# Git prompt options.
|
||||
GIT_PROMPT_SHOW_TYPE=1
|
||||
GIT_PROMPT_SHOW_IGNORED=1
|
||||
GIT_PROMPT_SHOW_UNSTAGED=1
|
||||
GIT_PROMPT_SHOW_UNTRACKED=1
|
||||
GIT_PROMPT_SHOW_STASH=1
|
||||
GIT_PROMPT_SHOW_UPSTREAM=1
|
||||
GIT_PROMPT_SHOW_UPSTREAM_EXTENDED=1
|
||||
GIT_PROMPT_AUTO_PREFETCH=1
|
||||
GIT_PROMPT_SHOW_IGNORED=1
|
||||
GIT_PROMPT_SHOW_UNSTAGED=1
|
||||
GIT_PROMPT_SHOW_UNCOMMITTED=1
|
||||
GIT_PROMPT_SHOW_UNTRACKED=1
|
||||
GIT_PROMPT_SHOW_STASH=1
|
||||
|
||||
# Version specific set up.
|
||||
if (( BASH_VERSINFO[0] >= 4 )); then
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
ui = auto
|
||||
[credential]
|
||||
username = tadgy
|
||||
helper = cache --timeout 2592000
|
||||
[commit]
|
||||
verbose = 1
|
||||
[push]
|
||||
|
@ -29,8 +30,6 @@
|
|||
[maintenance]
|
||||
repo = /
|
||||
repo = /root
|
||||
repo = /data/slackware/repo.git
|
||||
repo = /data/slackware/tagfiles.git
|
||||
repo = /data/slackware/tools.git
|
||||
repo = /data/tmp/slackbuilds.git
|
||||
repo = /data/tmp/ponce-slackbuilds.git
|
||||
repo = /etc/slackpkg/templates
|
||||
[init]
|
||||
defaultBranch = master
|
||||
|
|
3
.shellcheckrc
Normal file
3
.shellcheckrc
Normal file
|
@ -0,0 +1,3 @@
|
|||
enable=add-default-case,check-unassigned-uppercase,deprecate-which,quote-safe-variables,require-double-brackets
|
||||
wiki-link-count=10
|
||||
external-sources=true
|
|
@ -66,11 +66,6 @@ Host clone-* full-*
|
|||
ClearAllForwardings yes
|
||||
|
||||
# Git services.
|
||||
Host github.com
|
||||
Host github.com git.rlworkman.net
|
||||
User git
|
||||
ForwardAgent no
|
||||
ClearAllForwardings yes
|
||||
|
||||
Host git.rlworkman.net
|
||||
ForwardAgent no
|
||||
ClearAllForwardings yes
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue