commit aedaf7e498a94e69623338dca6572c5f41c71b38
parent 9f1fcc729e35fd5b2f8d9b6427e5605e97d9857c
Author: root <root>
Date: Mon, 21 Apr 2025 16:54:04 +0200
add git related bash script
Diffstat:
1 file changed, 55 insertions(+), 0 deletions(-)
diff --git a/bash/funcs/git-list-old-unmerged-branches-on-remote.sh b/bash/funcs/git-list-old-unmerged-branches-on-remote.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+function check_unmerged_git_branches() {
+
+ GIT_DIR=$1
+ EMAIL=$2
+
+ if [ -z $GIT_DIR ]; then
+ echo "Must specify the path of a git repo"
+ return 1
+ fi
+
+ if [ -z $EMAIL ]; then
+ echo "Must specify recipient(s)"
+ return 1
+ fi
+
+ if [ ! -d "$GIT_DIR/.git" ]; then
+ echo "Directory is not a git repo: $GIT_DIR"
+ return 1
+ fi
+
+ THIS_DIR=$(echo $PWD);
+ THIS_SCRIPT=$(echo $PWD | sed -E 's/(.*[^a-z\-])?([a-z\-]{1,}).*/\2/'); #name of the directory this script is in - this makes sense if the directory name is more relevant and the script itself is just named something like "run"
+ NOW=$(date +%Y%m%d)
+
+ if [ -f ./branches.txt ]; then
+ rm ./branches.txt;
+ fi
+
+ if [ -f ./branches_results.txt ]; then
+ rm ./branches_results.txt;
+ fi
+
+ cd $GIT_DIR;
+
+ for branch in $(git branch -r --no-merged | grep -v "HEAD"); do
+ echo -e $branch"," $(git log --no-merges -n1 --format="%ct, %ci, %cr, %an, %ae" $branch | head -n1) | xargs echo >> "$THIS_DIR/branches.txt";
+ done
+
+ cd $THIS_DIR;
+
+ echo -e "Unmerged old branches check\nThis script checks for any un-merged branches on the remote that are older than 30 days.\n\n" >> ./branches_results.txt
+
+ cat ./branches.txt | awk 'BEGIN{FS=","; prev_month_stamp=(systime() - 30 * 24 * 60 * 60);}{if($2 > prev_month_stamp){next;} else {print $0;}}' >> ./branches_results.txt;
+
+ cat << EOF >> branches_results.txt
+
+ Please check if you have any unmerged branches in the remote repository, and either merge them or delete them.
+ -------------------------------------------------------------------------------------------
+ Generated by ${THIS_SCRIPT}
+EOF
+
+ cat ./branches_results.txt | mail -s "[INFO]: Unmerged old branches check @ ${NOW}" "$EMAIL"
+}