Useful script for showing status of data submodule
parent
cd60d921ec
commit
af60e6a695
|
@ -0,0 +1,90 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Tool for showing submodule history vs. associated and currently checked-out commits
|
||||
|
||||
module="data"
|
||||
tail_count=5
|
||||
|
||||
branch_name="$(git symbolic-ref HEAD 2>/dev/null)"
|
||||
|
||||
if [ -z "$branch_name" ]; then
|
||||
display_branch_name="(detached head)"
|
||||
else
|
||||
display_branch_name="$branch_name"
|
||||
fi
|
||||
|
||||
module_branch_name="$(cd $module && git symbolic-ref HEAD 2>/dev/null)"
|
||||
module_working_commit="$(cd $module && git rev-parse HEAD)"
|
||||
module_assoc_commit="$(git ls-tree $branch_name $module | awk '{print $3}' -)"
|
||||
|
||||
if [ -z "$module_branch_name" ]; then
|
||||
module_assoc_branches=($(cd $module && git branch --contains $module_assoc_commit | awk 'NR > 1 { print $1 }'))
|
||||
if [ ${#module_assoc_branches[@]} -ne 1 ]; then
|
||||
echo "$module module is in detached head, but referenced commit is in multiple branches"
|
||||
echo "Sorry, can't help you"
|
||||
exit 1
|
||||
else
|
||||
module_branch_name="${module_assoc_branches[0]}"
|
||||
display_module_branch_name="(detached head, detected: $module_branch_name)"
|
||||
fi
|
||||
else
|
||||
display_module_branch_name="$module_branch_name"
|
||||
fi
|
||||
|
||||
echo -e "Repository branch: \033[32m$display_branch_name\033[0m"
|
||||
echo -e "$module module branch: \033[32m$display_module_branch_name\033[0m"
|
||||
|
||||
if [ -z "$(cd $module && git rev-list HEAD | grep $module_assoc_commit)" ]; then
|
||||
echo -e "$module module associated commit: \033[33m$module_assoc_commit\033[0m is not in module history!"
|
||||
echo "You probably have checked out different branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
i=0
|
||||
c=0
|
||||
h=1
|
||||
(cd $module && git log --format='%H%x01%h%x01%s%x00' $module_branch_name) | while read -d $'\0' info; do
|
||||
commit=$(echo "$info" | cut -d$'\1' -f1)
|
||||
short_commit=$(echo "$info" | cut -d$'\1' -f2)
|
||||
message=$(echo "$info" | cut -d$'\1' -f3)
|
||||
|
||||
if [ $h -eq 1 ]; then
|
||||
echo -n -e "\033[34m H \033[0m"
|
||||
else
|
||||
echo -n " "
|
||||
fi
|
||||
|
||||
h=0
|
||||
|
||||
if [ "$commit" == "$module_working_commit" ]; then
|
||||
echo -n -e "\033[31m * \033[0m"
|
||||
c=$(($c+1))
|
||||
else
|
||||
echo -n " "
|
||||
fi
|
||||
|
||||
if [ "$commit" == "$module_assoc_commit" ]; then
|
||||
echo -n -e "\033[32m x \033[0m"
|
||||
c=$(($c+1))
|
||||
else
|
||||
echo -n " "
|
||||
fi
|
||||
|
||||
echo -e "\033[33m$short_commit\033[0m $message"
|
||||
|
||||
if [ $c -eq 2 ]; then
|
||||
i=$(($i+1))
|
||||
if [ $i -gt $tail_count ]; then
|
||||
echo " ..."
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo -e "\033[34m H \033[0m -- $module_branch_name HEAD"
|
||||
echo -e "\033[31m * \033[0m -- checked-out commit"
|
||||
echo -e "\033[32m x \033[0m -- associated commit"
|
||||
|
Loading…
Reference in New Issue