mirror of
https://github.com/ItsDrike/dotfiles.git
synced 2025-06-29 04:00:42 +00:00
Major rewrite: switching back to Arch from NixOS
This commit is contained in:
parent
df585b737b
commit
254181c0fc
121 changed files with 5433 additions and 2371 deletions
57
home/.local/bin/scripts/cli/better-git-branch
Executable file
57
home/.local/bin/scripts/cli/better-git-branch
Executable file
|
@ -0,0 +1,57 @@
|
|||
#!/usr/bin/env bash
|
||||
# Source: https://gist.github.com/schacon/e9e743dee2e92db9a464619b99e94eff
|
||||
|
||||
# Colors
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
NO_COLOR='\033[0m'
|
||||
BLUE='\033[0;34m'
|
||||
YELLOW='\033[0;33m'
|
||||
NO_COLOR='\033[0m'
|
||||
|
||||
width1=5
|
||||
width2=6
|
||||
width3=30
|
||||
width4=20
|
||||
width5=20
|
||||
|
||||
# Function to count commits
|
||||
count_commits() {
|
||||
local branch="$1"
|
||||
local base_branch="$2"
|
||||
local ahead_behind
|
||||
|
||||
ahead_behind=$(git rev-list --left-right --count "$base_branch"..."$branch")
|
||||
echo "$ahead_behind"
|
||||
}
|
||||
|
||||
# Main script
|
||||
main_branch=$(git rev-parse HEAD)
|
||||
|
||||
printf "${GREEN}%-${width1}s ${RED}%-${width2}s ${BLUE}%-${width3}s ${YELLOW}%-${width4}s ${NO_COLOR}%-${width5}s\n" "Ahead" "Behind" "Branch" "Last Commit" " "
|
||||
|
||||
# Separator line for clarity
|
||||
printf "${GREEN}%-${width1}s ${RED}%-${width2}s ${BLUE}%-${width3}s ${YELLOW}%-${width4}s ${NO_COLOR}%-${width5}s\n" "-----" "------" "------------------------------" "-------------------" " "
|
||||
|
||||
format_string="%(objectname:short)@%(refname:short)@%(committerdate:relative)"
|
||||
IFS=$'\n'
|
||||
|
||||
for branchdata in $(git for-each-ref --sort=-authordate --format="$format_string" refs/heads/ --no-merged); do
|
||||
sha=$(echo "$branchdata" | cut -d '@' -f1)
|
||||
branch=$(echo "$branchdata" | cut -d '@' -f2)
|
||||
time=$(echo "$branchdata" | cut -d '@' -f3)
|
||||
if [ "$branch" != "$main_branch" ]; then
|
||||
# Get branch description
|
||||
description=$(git config branch."$branch".description)
|
||||
|
||||
# Count commits ahead and behind
|
||||
ahead_behind=$(count_commits "$sha" "$main_branch")
|
||||
ahead=$(echo "$ahead_behind" | cut -f2)
|
||||
behind=$(echo "$ahead_behind" | cut -f1)
|
||||
|
||||
# Display branch info
|
||||
# shellcheck disable=SC2086
|
||||
printf "${GREEN}%-${width1}s ${RED}%-${width2}s ${BLUE}%-${width3}s ${YELLOW}%-${width4}s ${NO_COLOR}%-${width5}s\n" $ahead $behind $branch "$time" "$description"
|
||||
fi
|
||||
done
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue