diff --git a/.bash_profile b/.bash_profile index 5c14e62..26d33f8 100644 --- a/.bash_profile +++ b/.bash_profile @@ -10,7 +10,6 @@ export LC_COLLATE="POSIX" # 'C' causes issues with some applications # export LC_CTYPE="POSIX" # Not sure why I set this in the first place... export LESS='-RM -j.5 -i -PM?f%F:stdin. -- Page %dt of %D -- %lt/%L (%Pt\%)$' export PAGER="less" -export PATH="/opt/sbin:/usr/local/sbin:/usr/sbin:/sbin:$PATH" export VISUAL="$EDITOR" hash lesspipe >/dev/null 2>&1 && eval "$(SHELL=/bin/sh lesspipe)" @@ -24,6 +23,7 @@ if [[ "$PLATFORM" = "Linux" ]]; then export LYNX_LSS="$HOME/.lynx.lss" export MANPAGER="less" export MANPATH="$HOME/.local/share/man:$MANPATH" + export PATH="/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" hash dircolors >/dev/null 2>&1 && eval "$(dircolors -b "$HOME/.dir_colors")" hash gpgconf >/dev/null 2>&1 && { GPG_SOCK_DIR="$(gpgconf --list-dirs | awk -F : '/socketdir:/ { print $2 }')" @@ -41,15 +41,15 @@ elif [[ "$PLATFORM" = "Darwin" ]]; then export LSCOLORS="ExGxdxdxCxDxDxbcacbeae" export MANPAGER="less -Mis -PM'Page %dt$'" export MANPATH="/opt/local/share/man:$MANPATH" - export PATH="/opt/local/sbin:/opt/local/bin:$PATH" + export PATH="/opt/local/libexec/gnubin:/opt/local/sbin:/opt/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" else printf "%s: %s\\n" "${BASH_SOURCE##*/}" "unsupported platform: $PLATFORM" >&2 fi # Add bin directories to PATH. +[[ -d "$HOME/files/bin" ]] && export PATH="$HOME/files/bin:$PATH" [[ -d "$HOME/.local/bin" ]] && export PATH="$HOME/.local/bin:$PATH" [[ -d "$HOME/bin" ]] && export PATH="$HOME/bin:$PATH" -[[ -d "$HOME/files/bin" ]] && export PATH="$HOME/files/bin:$PATH" # Screen. hash screen >/dev/null 2>&1 && { diff --git a/.bashrc b/.bashrc index defba15..8f7bc1e 100644 --- a/.bashrc +++ b/.bashrc @@ -21,20 +21,16 @@ __prompt_git_status() { # 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 RET="$?" BRANCH COUNT GIT_PROMPT GIT_PROMPT_MARKER_SET GIT_REPO_INFO PWD=$(pwd -P) + # Returns: 0 = Produced a prompt successfully. + # 1 = An error occured. + local BRANCH COUNT GIT_PROMPT GIT_PROMPT_MARKER_SET GIT_REPO_INFO IFS=$'\n' - # Bail out if there's no format argument given. - (( $# != 1 )) && return "$RET" + # Bail out if there's no format argument given, or it doesn't contain %s + (( $# != 1 )) || [[ "$1" != *%s* ]] && return 1 # Get some repository information. # shellcheck disable=SC2207 - IFS=$'\n' GIT_REPO_INFO=( $( git rev-parse --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 )) && return "$RET" + GIT_REPO_INFO=( $( git rev-parse --is-bare-repository --is-shallow-repository --is-inside-git-dir --is-inside-work-tree 2>/dev/null) ) || return 1 # Generate the prompt. if [[ "${GIT_REPO_INFO[2]}" == "true" ]]; then @@ -55,7 +51,11 @@ __prompt_git_status() { BRANCH="$(git rev-parse --abbrev-ref HEAD 2>/dev/null)" if [[ "$BRANCH" == "HEAD" ]]; then GIT_PROMPT+="?NO COMMITS?" - unset BRANCH + + # Output the prompt and escape early. + # shellcheck disable=SC2059 + printf -- "$1" "$GIT_PROMPT" + return 0 else GIT_PROMPT+="$BRANCH" fi @@ -140,13 +140,11 @@ __prompt_git_status() { # shellcheck disable=SC2059 printf -- "$1" "$GIT_PROMPT" - # Return the original error code. - return "$RET" + return 0 } __prompt_user_colour() { # Determine the colour of the username in the prompt. - local RET="$?" if [[ "$LOGNAME" == "root" ]]; then printf "%s" "1;31m" # Bright Red. @@ -156,29 +154,78 @@ __prompt_user_colour() { printf "%s" "1;36m" # Bright Cyan. fi - return "$RET" + return 0 } __git_prompt_command() { # Perform git actions. # Environment variables: - # GIT_DISABLE_PROMPT_PREFETCH=1 Disable automatic 'prefetch' of upstream refs. - # This can also be disabled on a per repository basis using: - # git config --add --local --bool script.DisablePromptPrefetch true - # Returns: Exit code of the command line before entering this function. - local RET="$?" + # GIT_DISABLE_PROMPT_PREFETCH=1 Disable automatic 'prefetch' of upstream refs. + # This can also be disabled on a per repository basis using: + # git config ---local -replace-all --type bool script.DisablePromptPrefetch true + # Returns: 0 = Tasks completed successfully. + # 1 = An error occured. + local GIT_REPO_INFO LC_ALL="C" NOW REPO_TIMESTAMP TIMESTAMP_VAR - # Run prefetch tasks if inside a work directory. - [[ -z "$GIT_DISABLE_PROMPT_PREFETCH" ]] && [[ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" == "true" ]] && \ - [[ "$(git config --get --local --bool script.DisablePromptPrefetch 2>/dev/null)" != "true" ]] && { - git maintenance run --task=prefetch 2>/dev/null || printf "\\033[1;31m%s\\033[39m\\n" "Git maintenance 'prefetch' task failed." >&2 + # shellcheck disable=SC2207 + GIT_REPO_INFO=( $( git rev-parse --is-inside-work-tree --show-toplevel 2>/dev/null) ) || return 1 + + # Only process if in a work directory. + [[ "${GIT_REPO_INFO[0]}" == "true" ]] && { + # Run prefetch tasks if not disabled. + [[ -z "$GIT_DISABLE_PROMPT_PREFETCH" ]] && [[ "$(git config --local --get --type bool script.DisablePromptPrefetch 2>/dev/null)" != "true" ]] && { + git maintenance run --task=prefetch 2>/dev/null || { + printf "\\033[1;31m%s\\033[0m\\n" "Git maintenance 'prefetch' task failed." >&2 + return 1 + } + } + + # The time now. + if [[ "$PLATFORM" == "Linux" ]]; then + NOW="$(date +'%s%3N')" + elif [[ "$PLATFORM" == "Darwin" ]]; then + NOW="$(perl -e 'use Time::HiRes; printf "%.3f", Time::HiRes::time();')" + NOW="${NOW/.}" + fi + + # Determine the timestamp variable name depending on bash version. + if (( BASH_VERSINFO[0] >= 4 )); then + TIMESTAMP_VAR="GIT_REPO_TIMESTAMP[${GIT_REPO_INFO[1]//[^[:alnum:]]/_}]" + else + # This is going to pollute the environment, but Darwin is a PITA. + TIMESTAMP_VAR="GIT_REPO_TIMESTAMP_${GIT_REPO_INFO[1]//[^[:alnum:]]/_}" + fi + + if [[ -n "${!TIMESTAMP_VAR}" ]]; then + # Monitor the git repo. + REPO_TIMESTAMP="$(git config --local --get --type int script.AutoMergeLast)" + (( ${!TIMESTAMP_VAR:-0} < REPO_TIMESTAMP )) && { + # Display message depending on status. + if [[ "$(git config --local --get --type int script.AutoMergeSuccess)" == "true" ]]; then + printf "\\033[1;32m%s" "Git auto-merge succeeded for this repo." + if [[ "${GIT_REPO_INFO[1]}" == "$HOME" ]]; then + printf " %s\\033[0m\\n" "Re-source .bash* files." + else + printf "\\033[0m\\n" + fi + # Update the timestamp in the environment. + declare -g "$TIMESTAMP_VAR"="$NOW" + else + printf "\\033[1;31m%s\\033[0m\\n" "Git auto-merge failed for this repo - correct manually." >&2 + fi + } + else + # Just set the timestamp in the environment. + declare -g "$TIMESTAMP_VAR"="$NOW" + fi } - return "$RET" + return 0 } __nanorc_prompt_command() { # Dynamically handle .nanorc file versions. + hash nano >/dev/null 2>&1 && { # shellcheck disable=SC2155 local NANO_VER="$(command nano --version | awk '/version/ { print $4 }' | cut -d. -f1)" @@ -199,15 +246,17 @@ __nanorc_prompt_command() { else unalias nano 2>/dev/null fi - printf "\\033[1;31m%s\\033[39m\\n" "No .nanorc for version '$NANO_VER'." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "No .nanorc for version '$NANO_VER'." >&2 fi } + + return 0 } __ssh_agent_prompt_command() { # If necessary, find and activate a new ssh agent socket before each prompt is displayed. - # Returns: 0 = All is good. - # 1 = An error occured. + # Returns: 0 = All is good. + # 1 = An error occured. local ERR if [[ -z "$SSH_AUTH_SOCK" ]]; then @@ -225,28 +274,29 @@ __ssh_agent_prompt_command() { # Find a new socket to use. if __find_ssh_agent_sock; then - printf "\\033[1;33m%s\\033[39m\\n" "Connected to existing ssh-agent socket." + printf "\\033[1;33m%s\\033[0m\\n" "Connected to existing ssh-agent socket." sleep 0.5 else # Start a new agent. eval "$(ssh-agent -s 2>/dev/null | grep -v 'echo'; printf "%s" "ERR=${PIPESTATUS[0]}")" (( ERR > 0 )) && { - printf "\\033[1;31m%s\\033[39m\\n" "Failed to start new ssh-agent - continuing with no agent." + printf "\\033[1;31m%s\\033[0m\\n" "Failed to start new ssh-agent - continuing with no agent." sleep 0.5 return 1 } - printf "\\033[1;32m%s\\033[39m\\n" "Started new ssh-agent." + printf "\\033[1;32m%s\\033[0m\\n" "Started new ssh-agent." __write_ssh_agents sleep 0.5 fi } + return 0 } __find_ssh_agent_sock() { # Find an *active* ssh agent socket. - # Returns: 0 = Found an active socket. - # 1 = Did not find a viable socket. + # Returns: 0 = Found an active socket. + # 1 = Did not find a viable socket. local I # Search the SSH_AUTH_SOCKS array for a viable socket. @@ -265,8 +315,8 @@ __find_ssh_agent_sock() { __read_ssh_agents() { # Read all the known ssh agent sockets into an array. - # Returns: 0 = Processed and read the agents file without issue. - # 1 = Error processing/reading the agents file. + # Returns: 0 = Processed and read the agents file without issue. + # 1 = Error processing/reading the agents file. local ERR I SOCK [[ ! -e "$HOME/.ssh/agents" ]] && touch "$HOME/.ssh/agents" @@ -277,10 +327,10 @@ __read_ssh_agents() { exec 9<"$HOME/.ssh/agents" && flock -E 10 -e -w 0.5 9 ERR=$? if (( ERR == 10 )); then - printf "\\033[1;31m%s\\033[39m\\n" "Failed to obtain lock on ~/.ssh/agents." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "Failed to obtain lock on ~/.ssh/agents." >&2 return 1 elif (( ERR > 0 )); then - printf "\\033[1;31m%s\\033[39m\\n" "Flock usage error." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "Flock usage error." >&2 return 1 fi @@ -301,11 +351,11 @@ __read_ssh_agents() { fi done (( ERR != 0 )) && { - printf "\\033[1;31m%s\\033[39m\\n" "Failed to obtain lock on ~/.ssh/agents." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "Failed to obtain lock on ~/.ssh/agents." >&2 return 1 } else - printf "\\033[1;31m%s\\033[39m\\n" "File locking unsupported on '$PLATFORM'." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "File locking unsupported on '$PLATFORM'." >&2 return 1 fi @@ -326,18 +376,19 @@ __read_ssh_agents() { # Error out if the data couldn't be read. (( ERR != 0 )) && { - printf "\\033[1;31m%s\\033[39m\\n" "Failed to read ssh-agent socket list." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "Failed to read ssh-agent socket list." >&2 unset SSH_AUTH_SOCKS SSH_AGENTS_MTIME return 1 } + return 0 } __write_ssh_agents() { # Write all unique ssh agent sockets into the ~/.ssh/agents file. - # Returns: 0 = Processed and wrote the agents file without issue. - # 1 = Error processing/writing the agents file. - # 2 = The SSH_AUTH_SOCKS array may be out of date as the agents file'a mtime has changed. + # Returns: 0 = Processed and wrote the agents file without issue. + # 1 = Error processing/writing the agents file. + # 2 = The SSH_AUTH_SOCKS array may be out of date as the agents file'a mtime has changed. local ERR I J MTIME SOCKS # Add the current agent socket to the sockets array. @@ -364,10 +415,10 @@ __write_ssh_agents() { exec 9<"$HOME/.ssh/agents" && flock -E 10 -e -w 0.5 9 ERR=$? if (( ERR == 10 )); then - printf "\\033[1;31m%s\\033[39m\\n" "Failed to obtain lock on ~/.ssh/agents." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "Failed to obtain lock on ~/.ssh/agents." >&2 return 1 elif (( ERR > 0 )); then - printf "\\033[1;31m%s\\033[39m\\n" "Flock usage error." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "Flock usage error." >&2 return 1 fi elif [[ "$(uname -s)" == "Darwin" ]]; then @@ -387,11 +438,11 @@ __write_ssh_agents() { fi done (( ERR != 0 )) && { - printf "\\033[1;31m%s\\033[39m\\n" "Failed to obtain lock on ~/.ssh/agents." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "Failed to obtain lock on ~/.ssh/agents." >&2 return 1 } else - printf "\\033[1;31m%s\\033[39m\\n" "File locking unsupported on '$PLATFORM'." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "File locking unsupported on '$PLATFORM'." >&2 return 1 fi @@ -408,14 +459,17 @@ __write_ssh_agents() { rm -f "$HOME/.ssh/agents" 2>/dev/null elif (( ERR >= 1 )); then rm -f "$HOME/.ssh/agents" 2>/dev/null - printf "\\033[1;31m%s\\033[39m\\n" "Failed to write ssh-agent socket list." >&2 + printf "\\033[1;31m%s\\033[0m\\n" "Failed to write ssh-agent socket list." >&2 return 1 fi + return 0 } imagebin() { - [[ -z "$1" ]] && { + # Throw an image file into an imagebin. + + [[ -z "$1" ]] || [[ ! -e "$1" ]] && { printf "%s: %s\\n" "Usage" "${FUNCNAME[0]} " >&2 return 1 } @@ -448,7 +502,6 @@ PROMPT_COMMAND="__nanorc_prompt_command; __ssh_agent_prompt_command; __git_promp GIT_PROMPT_SHOW_TYPE=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 @@ -463,31 +516,25 @@ if (( BASH_VERSINFO[0] >= 4 )); then # Trim the path in the prompt. PROMPT_DIRTRIM=2 # Coloured username + host + directory: - PS1='[\[\033[$(__prompt_user_colour)\]\u\[\033[39m\]@\[\033[1;33m\]\h\[\033[39m\]] \[\033[1;34m\]\w\[\033[39m\]$(__prompt_git_status "\[\\033[1;35m\] (%s)\[\\033[39m\]") ->' + PS1='[\[\033[$(__prompt_user_colour)\]\u\[\033[0m\]@\[\033[1;33m\]\h\[\033[0m\]] \[\033[1;34m\]\w\[\033[0m\]$(__prompt_git_status "\[\\033[1;35m\] (%s)\[\\033[0m\]") ->' else # Set the prompts. # Coloured username + host + directory: # shellcheck disable=SC2154 - PS1='[\[\033[$(__prompt_user_colour)\]\u\[\033[39m\]@\[\033[1;33m\]\h\[\033[39m\]] \[\033[1;34m\]$(printf "%s" "${PWD/#$HOME/~}" | awk -F/ '\''{if (NF>3) {printf ".../" $(NF-1) "/" $NF} else {printf $0}}'\'')\[\033[39m\]$(__prompt_git_status "\[\\033[1;35m\] (%s)\[\\033[39m\]") ->' + PS1='[\[\033[$(__prompt_user_colour)\]\u\[\033[0m\]@\[\033[1;33m\]\h\[\033[0m\]] \[\033[1;34m\]$(printf "%s" "${PWD/#$HOME/~}" | awk -F/ '\''{if (NF>3) {printf ".../" $(NF-1) "/" $NF} else {printf $0}}'\'')\[\033[0m\]$(__prompt_git_status "\[\\033[1;35m\] (%s)\[\\033[0m\]") ->' fi # Set the debugger prompt. # shellcheck disable=SC2155 -export PS4='+(\[\033[1;33m\]$?\[\033[39m\]) \[\033[1;34m\]${BASH_SOURCE##*/}\[\033[39m\]${FUNCNAME[0]:+(\[\033[1;32m\]${FUNCNAME[0]}\[\033[39m\])}:\[\033[1;31m\]$LINENO\[\033[39m\]: ' +export PS4='+(\[\033[1;33m\]$?\[\033[0m\]) \[\033[1;34m\]${BASH_SOURCE##*/}\[\033[0m\]${FUNCNAME[0]:+(\[\033[1;32m\]${FUNCNAME[0]}\[\033[0m\])}:\[\033[1;31m\]$LINENO\[\033[0m\]: ' # Common aliases. hash bc >/dev/null 2>&1 && alias bc='bc -lq' -hash diff >/dev/null 2>&1 && alias diff='diff --color=auto -u' -hash gpg2 >/dev/null 2>&1 && { - alias gpg='command gpg2' - alias gpg2='gpg2 --pinentry-mode=loopback' -} hash grep >/dev/null 2>&1 && { alias egrep='grep -E --color=auto' alias fgrep='grep -F --color=auto' alias grep='grep --color=auto' } -hash nc >/dev/null 2>&1 && alias pastebin='nc termbin.com 9999' # Auto start the ssh agent and add keys for scp/sftp/ssh. __ssh_agent_prompt_command @@ -511,6 +558,26 @@ hash ssh ssh-add >/dev/null 2>&1 && ssh() { command "${_EXEC:-${FUNCNAME[0]}}" "$@" } +# Handle the ~/.gitconfig link. +if [[ -e "$HOME/.gitconfig-$USER@$HOSTNAME" ]]; then + FILENAME=".gitconfig-$USER@$HOSTNAME" +elif [[ -e "$HOME/.gitconfig-$USER@*.${HOSTNAME#*.}" ]]; then + FILENAME=".gitconfig-$USER@*.${HOSTNAME#*.}" +elif [[ -e "$HOME/.gitconfig-$USER@*" ]]; then + FILENAME=".gitconfig-$USER@*" +elif [[ -e "$HOME/.gitconfig-*@$HOSTNAME" ]]; then + FILENAME=".gitconfig-*@$HOSTNAME" +elif [[ -e "$HOME/.gitconfig-*.${HOSTNAME#*.}" ]]; then + FILENAME=".gitconfig-*.${HOSTNAME#*.}" +elif [[ -e "$HOME/.gitconfig-default" ]]; then + FILENAME=".gitconfig-default" +else + (cd "$HOME" && [[ -L ".gitconfig" ]] && rm -f ".gitconfig") + printf "%s: %s\\n" "${BASH_SOURCE##*/}" "failed to update .gitconfig symlink" >&2 +fi +[[ -n "$FILENAME" ]] && (cd "$HOME" && ln -sf "$FILENAME" ".gitconfig") +unset FILENAME + # Platform specific set up. if [[ "$PLATFORM" = "Linux" ]]; then # Linux specific functions. @@ -525,7 +592,9 @@ if [[ "$PLATFORM" = "Linux" ]]; then } # Linux specific aliases. + hash diff >/dev/null 2>&1 && alias diff='diff --color=auto -u' hash ftpwho >/dev/null 2>&1 && alias ftpwho='ftpwho -v' + hash gpg2 >/dev/null 2>&1 && alias gpg='command gpg2' && alias gpg2='gpg2 --pinentry-mode=loopback' hash iftop >/dev/null 2>&1 && alias iftop='TERM=vt100 iftop' hash iotop >/dev/null 2>&1 && alias iotop='TERM=linux iotop' hash ip >/dev/null 2>&1 && alias ip='ip -color=auto' @@ -534,12 +603,19 @@ if [[ "$PLATFORM" = "Linux" ]]; then hash minicom >/dev/null 2>&1 && alias minicom='minicom -m -c on' hash mkpasswd >/dev/null 2>&1 && alias mkpasswd='mkpasswd -m sha512crypt' hash mkpasswd >/dev/null 2>&1 && alias pwgen='mkpasswd -m sha512crypt' + hash nc >/dev/null 2>&1 && alias pastebin='nc termbin.com 9999' hash pinfo >/dev/null 2>&1 && alias info='pinfo' hash ping >/dev/null 2>&1 && alias ping='ping -b' elif [[ "$PLATFORM" = "Darwin" ]]; then - # Darwin specific aliases. - hash df >/dev/null 2>&1 && alias df='df -P' - hash ls >/dev/null 2>&1 && alias ls='ls -bFG' + # Darwin specific aliases (some dependant on macports) + [[ ! -e "/opt/local/libexec/gnubin/df" ]] && alias df='df -kP' + # shellcheck disable=SC2015 + [[ ! -e "/opt/local/libexec/gnubin//diff" ]] && alias diff='diff -u' || alias diff='diff --color=auto -u' + hash last less >/dev/null 2>&1 && alias laston='last | less' + # shellcheck disable=SC2015 + [[ ! -e "/opt/local/libexec/gnubin/ls" ]] && alias ls='ls -bFGO' || alias ls='ls -bFv --color=auto' + [[ -e "/opt/local/libexec/gnubin/nc" ]] && alias pastebin='nc termbin.com 9999' + [[ -e "/opt/local/bin/pinfo" ]] && alias info='pinfo' hash top >/dev/null 2>&1 && alias top='top -o cpu -S' else printf "%s: %s\\n" "${BASH_SOURCE##*/}" "unsupported platform: $PLATFORM" >&2 diff --git a/.gitconfig-default b/.gitconfig-default new file mode 100644 index 0000000..7f9f4af --- /dev/null +++ b/.gitconfig-default @@ -0,0 +1,27 @@ +[user] + name = Darren 'Tadgy' Austin + email = darren@afterdark.org.uk +[color] + branch = auto + diff = auto + grep = auto + interactive = auto + showBranch = auto + status = auto + ui = auto +[credential] + username = tadgy + helper = cache --timeout 2592000 +[commit] + verbose = 1 +[push] + autoSetupRemote = true +[alias] + c = commit + co = checkout + d = diff + lsut = ls-files --others --exclude-standard --directory --error-unmatch -- ':/*' + p = push + s = status +[init] + defaultBranch = master diff --git a/.gitconfig-root@* b/.gitconfig-root@* new file mode 100644 index 0000000..9285de6 --- /dev/null +++ b/.gitconfig-root@* @@ -0,0 +1,30 @@ +[user] + name = Darren 'Tadgy' Austin + email = darren@afterdark.org.uk +[color] + branch = auto + diff = auto + grep = auto + interactive = auto + showBranch = auto + status = auto + ui = auto +[credential] + username = tadgy + helper = cache --timeout 2592000 +[commit] + verbose = 1 +[push] + autoSetupRemote = true +[alias] + c = commit + co = checkout + d = diff + lsut = ls-files --others --exclude-standard --directory --error-unmatch -- ':/*' + p = push + s = status +[init] + defaultBranch = master +[maintenance] + repo = / + repo = /root diff --git a/.gitconfig b/.gitconfig-root@*.afterdark.lan similarity index 100% rename from .gitconfig rename to .gitconfig-root@*.afterdark.lan index d205dcc..f499bb8 100644 --- a/.gitconfig +++ b/.gitconfig-root@*.afterdark.lan @@ -23,6 +23,8 @@ lsut = ls-files --others --exclude-standard --directory --error-unmatch -- ':/*' p = push s = status +[init] + defaultBranch = master [safe] directory = /data/slackware/repo.git directory = /data/slackware/tagfiles.git @@ -32,5 +34,3 @@ [maintenance] repo = / repo = /root -[init] - defaultBranch = master diff --git a/.gitconfig-tadgy@*.afterdark.lan b/.gitconfig-tadgy@*.afterdark.lan new file mode 100644 index 0000000..1e26210 --- /dev/null +++ b/.gitconfig-tadgy@*.afterdark.lan @@ -0,0 +1,35 @@ +[user] + name = Darren 'Tadgy' Austin + email = darren@afterdark.org.uk +[color] + branch = auto + diff = auto + grep = auto + interactive = auto + showBranch = auto + status = auto + ui = auto +[credential] + username = tadgy + helper = cache --timeout 2592000 +[commit] + verbose = 1 +[push] + autoSetupRemote = true +[alias] + c = commit + co = checkout + d = diff + lsut = ls-files --others --exclude-standard --directory --error-unmatch -- ':/*' + p = push + s = status +[init] + defaultBranch = master +[safe] + directory = /data/slackware/repo.git + directory = /data/slackware/tagfiles.git + directory = /data/slackware/tools.git + directory = /data/tmp/slackbuilds.git + directory = /data/tmp/ponce-slackbuilds.git +[maintenance] + repo = /home/tadgy diff --git a/.gitconfig-tadgy@chuckie.afterdark.lan b/.gitconfig-tadgy@chuckie.afterdark.lan new file mode 100644 index 0000000..053918a --- /dev/null +++ b/.gitconfig-tadgy@chuckie.afterdark.lan @@ -0,0 +1,53 @@ +[user] + name = Darren 'Tadgy' Austin + email = darren@afterdark.org.uk +[color] + branch = auto + diff = auto + grep = auto + interactive = auto + showBranch = auto + status = auto + ui = auto +[credential] + username = tadgy + helper = cache --timeout 2592000 +[commit] + verbose = 1 +[push] + autoSetupRemote = true +[alias] + c = commit + co = checkout + d = diff + lsut = ls-files --others --exclude-standard --directory --error-unmatch -- ':/*' + p = push + s = status +[init] + defaultBranch = master +[safe] + directory = /data/slackware/repo.git + directory = /data/slackware/tagfiles.git + directory = /data/slackware/tools.git + directory = /data/tmp/slackbuilds.git + directory = /data/tmp/ponce-slackbuilds.git +[maintenance] + repo = /home/tadgy + repo = /data/home/tadgy/Projects/bash-ini-parser.git + repo = /data/home/tadgy/Projects/bash-tasksched.git + repo = /data/home/tadgy/Projects/bootstrap.git + repo = /data/home/tadgy/Projects/bwbar.git + repo = /data/home/tadgy/Projects/dotfiles.git + repo = /data/home/tadgy/Projects/lumberjack.git + repo = /data/home/tadgy/Projects/pushover-client.git + repo = /data/home/tadgy/Projects/random-scripts.git + repo = /data/home/tadgy/Projects/repomanager.git + repo = /data/home/tadgy/Projects/slacknetsetup.git + repo = /data/home/tadgy/Projects/slackpkg-templates.git + repo = /data/home/tadgy/Projects/slackrepo.git + repo = /data/home/tadgy/Projects/system-configs.git + 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 diff --git a/.gitignore b/.gitignore index 2dc5b2e..f4d7e7b 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ /.cups/ /.dbus/ /.fltk/ +/.gitconfig /.gvfs/ /.lesshst /.lynx.cookies diff --git a/.ssh/config b/.ssh/config index 3b1ca37..738e162 100644 --- a/.ssh/config +++ b/.ssh/config @@ -8,12 +8,15 @@ ConnectTimeout 30 ExitOnForwardFailure yes ForwardAgent yes HashKnownHosts no -RemoteForward %d/.gnupg/S.gpg-agent ${HOME}/.gnupg/S.gpg-agent SendEnv LANG LC_* TERM StrictHostKeyChecking accept-new VerifyHostKeyDNS yes VisualHostKey yes +# Only forward the gpg-agent socket if it exists on the local host. +Match exec "[[ -e ${HOME}/.gnupg/S.gpg-agent ]]" + RemoteForward %d/.gnupg/S.gpg-agent ${HOME}/.gnupg/S.gpg-agent + # Home stuff. Host afterdark.org.uk Port 6722