From 37cdca37195403d72cab7cd03a8913673f52937f Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Tue, 16 Jul 2024 12:18:35 +0300 Subject: [PATCH] mermaid save to file, fix --- git/generae_overview_mermaid.sh | 37 ++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/git/generae_overview_mermaid.sh b/git/generae_overview_mermaid.sh index 103f7c3..a2cbe25 100644 --- a/git/generae_overview_mermaid.sh +++ b/git/generae_overview_mermaid.sh @@ -1,11 +1,15 @@ -$ #!/bin/bash +#!/bin/bash # Function to escape special characters for Mermaid escape_for_mermaid() { echo "$1" | sed 's/[^a-zA-Z0-9]/_/g' } +# Output file +output_file="branches_diagram.mmd" + # Start the Mermaid diagram +{ echo "%%{init: { 'theme': 'base' } }%%" echo "gitGraph" @@ -14,9 +18,12 @@ main_branch="master" # Start with the main branch echo " commit id: \"Initial commit\"" +echo " branch $main_branch" +echo " checkout $main_branch" # Keep track of declared branches -declared_branches=("$main_branch") +declare -A declared_branches +declared_branches[$main_branch]=1 # Function to find the base branch find_base_branch() { @@ -32,6 +39,26 @@ find_base_branch() { # Function to declare a branch if not already declared declare_branch() { local branch=$1 - if [[ ! " ${declared_branches[@]} " =~ " ${branch} " ]]; then - echo " branch $branch" -doneprocess_branch "$branch"--sort=committerdate --format='%(refname:short)' refs/heads/) \ No newline at end of file + if [[ -z "${declared_branches[$branch]}" ]]; then + echo " branch $(escape_for_mermaid "$branch")" + declared_branches[$branch]=1 + fi +} + +# Process each branch +for branch in $(git for-each-ref --sort=committerdate --format='%(refname:short)' refs/heads/); do + base_branch=$(find_base_branch "$branch") + + declare_branch "$branch" + + echo " checkout $(escape_for_mermaid "$branch")" + echo " commit id: \"$(git log -1 --pretty=format:%s "$branch")\"" + + if [ "$branch" != "$main_branch" ]; then + echo " checkout $(escape_for_mermaid "$base_branch")" + echo " merge $(escape_for_mermaid "$branch")" + fi +done +} > $output_file + +echo "Mermaid diagram saved to $output_file"