#!/bin/bash alias ga=' git add' alias gaa=' git add -A' alias gau=' git add -u' alias gba=' git branch -a' alias gbak='git commit -m "BAK ##$(date +"%Y-%m-%dT%T%z")"' alias gcc=' git checkout -- .' alias gd=' git diff' alias gdt=' git difftool --dir-diff' alias gex=' rm -Rfv .git ; git init ; git add -A' alias gfak='git pull ; git add -u ; git commit -m "BAK ##$(date +"%Y-%m-%dT%T%z")" ; git push' alias gg=' git log --graph --decorate --oneline --no-abbrev-commit' alias ghr=' ls -1A | grep -vE .git$ | xargs -rI{} rm -Rf '{}' && git checkout -- .' alias gl=' git log' alias gpp=' git pull ; git push' alias gs=' git status' function gall(){ if [ "${2}" == "" ]; then find . -type d | sort -u | grep -E "\.git$" | sed "s|\/\.git||" | sed "s|^\.|$PWD|" | xargs -I{} bash -c "cd {} ; echo '"'>>>>>>>>>> {}'"' ; ${1}" else find . -type d | sort -u | grep -E "\.git$" | grep -Ei "${2}" | sed "s|\/\.git||" | sed "s|^\.|$PWD|" | xargs -I{} bash -c "cd {} ; echo '"'>>>>>>>>>> {}'"' ; ${1}" fi } function gcuab(){ local cb=$(git branch --show-current) while read -r line; do git checkout "${line}" git pull if [ "${1}" == '--crawler' ]; then find -L . -type f -not -path '*/.git*' | \ xargs -rI{} grep -EH '^' '{}' >../$(pwd | \ sed -E "s|.*/(.*)|\1_${line}_allCnt\.txt|g") fi done < <(git branch -a | grep -F 'remotes' | sed -E 's|(^[ ]*remotes/origin/)||g' | cut -d ' ' -f 1) git checkout "${cb}" } function gbswitch(){ while read -r line; do git checkout "${line}" git pull done < <(git branch -a | grep -F 'remotes' | sed -E 's|(^[ ]*remotes/origin/)||g' | cut -d ' ' -f 1 | fzf) } function gmm(){ local cb=$(git branch --show-current) local mst=$(git branch | grep -E 'main|master' | tr -s ' ' | cut -d ' ' -f 2) git checkout "${mst}" git pull git checkout "${cb}" git merge "${mst}" } function gh(){ local opts=$(cat << EOF add :q: . ______________ add_adoc :q: find | grep -E \.adoc$ | xargs -rI{} git add '{}' branch :q: . ______________ branch_byRepo_local :q: echo "${1}" | xargs -rI{} bash -c "git checkout -b '{}' ; git push --set-upstream origin '{}'" branch_remaster :q: cd ../master ; git pull ; git fetch --prune ; cd ../head ; rm -Rf .git ; cp -R ../master/.git . branch_setupstream :q: git push --set-upstream origin $(git branch --show-current) log :q: . ______________ log_branch :q: git --no-pager log --name-status >../$(pwd | sed -E 's|.*/(.*)|\1_git\.log|g') log_hist :q: git clone $(if [ -f 'repo.url' ]; then cat repo.url | grep -Ev '^##.*' ; fi) work ; cd work ; git checkout "${1}" ; git --no-pager log | grep -E "^commit " | sed -E "s|commit ||g" | xargs -rI{} bash -c 'git checkout "{}" ; find -L . -type f -not -path "*/.terraform*" -not -path "*/.git*" | xargs -rI{} file "{}" | grep -E "ASCII|text" | cut -d ":" -f 1 | sort -u --version-sort | xargs -rI@ grep -EH "^" "@" >"../\$(git log "{}" -n 1 --pretty=format:%cd --date=format:"%Y%m%d_%H%M%S")__{}.txt"' log_hist_nmbr :q: git clone $(if [ -f 'repo.url' ]; then cat repo.url | grep -Ev '^##.*' ; fi) work ; cd work ; git checkout "${1}" ; git --no-pager log | grep -E "^commit " | sed -E "s|commit ||g" | xargs -rI{} bash -c 'git checkout "{}" ; find -L . -type f -not -path "*/.terraform*" -not -path "*/.git*" | xargs -rI{} file "{}" | grep -E "ASCII|text" | cut -d ":" -f 1 | sort -u --version-sort | xargs -rI@ grep -EHn "^" "@" >"../\$(git log "{}" -n 1 --pretty=format:%cd --date=format:"%Y%m%d_%H%M%S")__{}.txt"' meta :q: . ______________ meta_info :q: echo -e "GIT_REPO:\t$(git config --get remote.origin.url)" && echo -e "CURRENT BRANCH:\t$(git branch --show-current)" && echo -e "LOG_INFO:\t$(git log --pretty=format:'%H [%cN] %aI %s' -n 1)" meta_origin :q: git config --get remote.origin.url ## purge :q: . ______________ purge :q: find -type f | grep -F 'repo.url' | sed -E 's|(.*/).*|\1|g' | xargs -rI{} bash -c 'cd '{}' ; ls -1 | grep -vE "repo\.url|setup\.sh|froozen" | xargs rm -Rf ; git clone \$(if [ -f 'repo.url' ]; then cat repo.url | grep -vE '^#'; fi) head ; cp -R head master ; cd head ; git --no-pager log --name-status >../\$(pwd | sed -E "s|.*/(.*)|\1_git\.log|g") ; find -L . -type f -not -path '*/node_modules*' -not -path '*/.git*' | xargs -rI{} file "{}" | grep ASCII | cut -d ":" -f 1 | sort -u --version-sort | xargs -rI{} grep -EH '^' '{}' >../\$(pwd | sed -E "s|.*/(.*)|\1_allCnt\.txt|g") ' freeze :q: cp -R head froozen twins :q: . ______________ twins_addRepo :q: find -type f | grep -E 'setup\.sh|repo.url' | grep -Ev '/\bhist\b/' | xargs -rI{} git add -f '{}' twins_purge :q: rm -Rf * ; git checkout -- . ; find -type f | grep -F 'repo.url' | sed -E 's|(.*/).*|\1|g' | xargs -rI{} bash -c 'cd '{}' ; ls -1 | grep -vE "repo\.url|setup\.sh" | xargs rm -Rf ; git clone \$(if [ -f 'repo.url' ]; then cat repo.url; fi) head ; cp -R head master ; cd head ; git --no-pager log --name-status >../\$(pwd | sed -E "s|.*/(.*)|\1_git\.log|g") ; find -L . -type f -not -path '*/.terraform*' -not -path '*/.git*' | xargs -rI{} file "{}" | grep ASCII | cut -d ":" -f 1 | sort -u --version-sort | xargs -rI{} grep -EH '^' '{}' >../\$(pwd | sed -E "s|.*/(.*)|\1_allCnt\.txt|g") ' twins_forceAllFiles :q: find -L . -type f -not -path '*/.terraform*' -not -path '*/.git*' | xargs -rI{} git add -f '{}' EOF ) local selOpt=$(echo "${opts}" | grep -vE '^##' | nl -i1 -n'rz' -v0 -w3 | sort -ru | fzf) if [ "${selOpt}" == "" ]; then echo ">>>>>>> nothing selected, cancel ..." return fi mode=$( echo "${selOpt}" | sed -E 's/(^.*)([ ]*)(:[a-z]?:)([ ]*)(.*$)/\3/g' ) selOpt=$( echo "${selOpt}" | sed -E 's/(^.*)([ ]*)(:[a-z]?:)([ ]*)(.*$)/\5/g' ) case $mode in ":q:") echo ">>>>>>> ${selOpt}" history -s "${selOpt}" eval "${selOpt}" ;; *) echo ">>>>>>> ${selOpt} '$@'" history -s "${selOpt} '$@'" history -s "gh '$@'" eval "${selOpt} '$@'" ;; esac } function lrepo(){ local LCMODULES_DIR="${HOME}/lcmodules_local/head" local selOpt=$(find "${LCMODULES_DIR}" -not -path '*/.git*' | grep -E '/HEAD$' | sed -E "s|(${LCMODULES_DIR}/)(.*)/HEAD|\2|g" | sed -E 's|(.*)| :: \1|g' | grep -Ei "$(echo "$@" | tr -s ' ' | sed -E 's| |\||g')" | nl -i1 -n'rz' -v0 -w3 | sort -ru | fzf) if [ "${selOpt}" == "" ]; then echo ">>>>>>> nothing selected, cancel ..." return fi selOpt=$( echo "${selOpt}" | sed -E 's/(^.*)[ ]*::[ ]*(.*$)/\2/g' ) read -p "options ('p'lain/'s'ub): " a; case $a in "s") sub=$(echo "${selOpt}" | sed -E "s|.*/(.*)|\1|g") mkdir -p "${sub}" ; cd "${sub}" ;; "p") ;; *) echo "-- Nothing to do --" return ;; esac selOpt="git init ; git remote add origin file://${LCMODULES_DIR}/$selOpt ; git fetch ; git reset origin/master ; git checkout master ; git push --set-upstream origin master" echo ">>>>>>> ${selOpt}" history -s "${selOpt}" eval "${selOpt}" }