X-Git-Url: https://zdv2.bktei.com/gitweb/BK-2020-03.git/blobdiff_plain/9d839273a1a4a5b8cf6153485ed788897ae6b0b4..942ea2dfc5aaa1cc100e8327776ee9a3b90953ec:/user/git-bk-find-file?ds=sidebyside diff --git a/user/git-bk-find-file b/user/git-bk-find-file old mode 100644 new mode 100755 index c31b31c..b1feb0d --- a/user/git-bk-find-file +++ b/user/git-bk-find-file @@ -1,9 +1,9 @@ #!/usr/bin/env bash # Desc: Grep search filenames of all git committed work trees -# Usage: git-bk-find-file [string regex] -# Example git-bk-find-file '*.txt' +# Usage: git-bk-find-file [string grep pattern] +# Example git-bk-find-file '.txt$' # Ref/Attrib: albfan "How can I search Git branches for a file or directory?" https://stackoverflow.com/a/16868704/10850071 -# Version: 0.0.1 +# Version: 0.2.0 # Depends: GNU bash v5.1.16, GNU parallel 20210822 yell() { echo "$0: $*" >&2; } # print script path and all args to stderr @@ -24,16 +24,24 @@ display_commit() { # Input: arg1: commit id # args2+: passed to grep # Output: stdout + # Depends: git 2.34.1 local commit results; commit="$1"; shift; # Decide if need to show commit at all if results="$(git ls-tree -r --name-only "$commit" | grep "$1")"; then - commit="${commit:(-8)}"; # get last 8 chars - # Prepend results with commit - results="$( echo "$results" | sed "s/^/$commit: /" )"; - printf "%s\n" "$results"; + # Get commit timestamp + time="$(git -c log.showSignature=false show -s --format=%cI "$commit")"; + + # Get first 8 chars of commit + short_commit="${commit:0:8}"; + + # Output results + while read -r line; do + if [[ -z "$line" ]]; then continue; fi; # skip blank lines + printf "%s %s %s\n" "$time" "$short_commit" "$line"; + done < <(printf "%s\n" "$results"); fi; return 0;