From 154ec29904b284077fa545fca38ee01f5a6b09ee Mon Sep 17 00:00:00 2001 From: Djuuu Date: Sun, 4 May 2025 18:28:20 +0200 Subject: [PATCH 01/12] Misc. cleanup --- git-mr | 5 ----- test/git-mr.bats | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/git-mr b/git-mr index 2158e6a..76769a9 100755 --- a/git-mr +++ b/git-mr @@ -1869,12 +1869,10 @@ mr_menu_update_all() { ')" project_url=$(gitlab_extract_project_url_part "$mr_url") - [[ -n $project_name && $project_name != "null" ]] || project_name="$project_url" # Fallback to URL portion # Load existing merge request details merge_request=$(gitlab_merge_request "$mr_iid" "$project_url") - mr_description=$(gitlab_extract_description "$merge_request") mr_menu_content=$(mr_menu_contents "$menu_items" "$mr_url") @@ -1944,7 +1942,6 @@ mr_menu_replace_description() { else # replace menu once if [[ $i -eq "$menu_end" ]]; then - echo_debug "Replacing menu" echo "$menu_content" menu_was_output=1 fi @@ -1954,7 +1951,6 @@ mr_menu_replace_description() { echo "$mr_description_line" # insert menu once if [[ $menu_was_output -eq 0 && -z "$mr_description_line" && $i -gt 1 ]]; then - echo_debug "Inserting menu" echo "$menu_content" echo menu_was_output=1 @@ -1966,7 +1962,6 @@ mr_menu_replace_description() { done < <(echo "$mr_description") if [[ $menu_was_output -eq 0 ]]; then - echo_debug "Inserting menu (failsafe)" [[ -n "$prev_description_line" ]] && echo echo "$menu_content" fi diff --git a/test/git-mr.bats b/test/git-mr.bats index 5f2f044..9c52f35 100644 --- a/test/git-mr.bats +++ b/test/git-mr.bats @@ -150,16 +150,6 @@ sha_link() { assert_failure "$ERR_GIT_REPO" } -@test "Uses GNU commands" { - run sed --version - assert_success - assert_output --partial "GNU sed" - - run grep --version - assert_success - assert_output --partial "GNU grep" -} - @test "Determines current branch" { git switch main run git_current_branch @@ -385,6 +375,16 @@ sha_link() { ################################################################################ # Misc. utilities +@test "Uses GNU commands" { + run sed --version + assert_success + assert_output --partial "GNU sed" + + run grep --version + assert_success + assert_output --partial "GNU grep" +} + @test "Exits with error" { run exit_error 99 "Nope!" assert_failure 99 From c34e2808feb5a7479b1fb06954cda70c933da3f0 Mon Sep 17 00:00:00 2001 From: Djuuu Date: Sun, 4 May 2025 18:29:47 +0200 Subject: [PATCH 02/12] Determine default text editor from env --- git-mr | 29 +++++++++++++++++++++++++++++ test/git-mr.bats | 14 ++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/git-mr b/git-mr index 76769a9..2a0f538 100755 --- a/git-mr +++ b/git-mr @@ -419,6 +419,35 @@ git_mr_readonly() { return 0 } +git_mr_editor() { + local editor + + if [[ -n "$VISUAL" ]]; then + echo_debug "Using VISUAL=$VISUAL" + editor=$VISUAL + elif [[ -n "$EDITOR" ]]; then + echo_debug "Using EDITOR=$EDITOR" + editor=$EDITOR + elif [[ -x /usr/bin/editor ]]; then + echo_debug "Using default system editor: /usr/bin/editor" + editor=/usr/bin/editor + elif [[ -x "$(command -v "vim")" ]]; then + echo_debug "Falling back to vim editor" + editor=vim + elif [[ -x "$(command -v "nano")" ]]; then + echo_debug "Falling back to nano editor" + editor=nano + else + local errmsg="Unable to find any suitable editor. Please set VISUAL or EDITOR env variable." + [[ -x "$(command -v "update-alternatives")" ]] && + errmsg="${errmsg}\nAlternatively, you can configure the default system editor with:\n sudo update-alternatives --config editor" + exit_error "$ERR_MR_DEPS" "$errmsg" + fi + + [[ -x "$(command -v "$editor")" ]] || exit_error "$ERR_MR_DEPS" "Invalid editor: $editor" + + echo "$editor" +} ################################################################################ # Markdown formatting diff --git a/test/git-mr.bats b/test/git-mr.bats index 9c52f35..2ddc18c 100644 --- a/test/git-mr.bats +++ b/test/git-mr.bats @@ -527,6 +527,20 @@ sha_link() { assert_success } +@test "Determines default text editor from env" { + VISUAL=fake_visual_test + EDITOR=fake_editor_test + run git_mr_editor + assert_failure + assert_output "Invalid editor: fake_visual_test" + + VISUAL= + EDITOR=fake_editor_test + run git_mr_editor + assert_failure + assert_output "Invalid editor: fake_editor_test" +} + ################################################################################ # Markdown formatting From 4284fd60dc4bbe5547be7d9db614908d647aef21 Mon Sep 17 00:00:00 2001 From: Djuuu Date: Sun, 4 May 2025 18:58:47 +0200 Subject: [PATCH 03/12] Build raw menu list for edition --- git-mr | 21 +++++++++++++++++++++ test/git-mr.bats | 14 ++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/git-mr b/git-mr index 2a0f538..0db3231 100755 --- a/git-mr +++ b/git-mr @@ -1715,6 +1715,27 @@ mr_menu_contents() { echo "$GIT_MR_MENU_END" } +mr_menu_list_contents() { + local menu_items=$1 + + while IFS=$'\n' read -r menu_item; do + local mr_url mr_title project_name + eval "$(echo "$menu_item" | jq -r ' + "mr_url=" + (.web_url | @sh) + ";\n" + + "mr_title=" + (.title | @sh) + ";\n" + + "project_name=" + (.project_name | @sh) + ";\n" + ')" + + [[ -n $project_name && $project_name != "null" ]] || # Fallback to URL portion + project_name=$(gitlab_extract_project_url_part "$mr_url") + + mr_title=$(gitlab_title_undraft "$mr_title") + + echo "* ${project_name}: $(markdown_link "$mr_title" "$mr_url")" + + done < <(echo "$menu_items") +} + mr_menu_print_title() { local issue_code=$1 local issue_title=$2 diff --git a/test/git-mr.bats b/test/git-mr.bats index 2ddc18c..5c7f353 100644 --- a/test/git-mr.bats +++ b/test/git-mr.bats @@ -2124,6 +2124,20 @@ End" )" } +@test "Builds raw menu list" { + test_menu_items='{"iid":31,"title":"MR 31 title","web_url":"https://gitlab.example.net/proj-C/-/merge_requests/31","state":"opened","project_id":3,"project_name":"Project C"} +{"iid":11,"title":"MR 11 title","web_url":"https://gitlab.example.net/proj-A/-/merge_requests/11","state":"opened","project_id":1,"project_name":"Project A"} +{"iid":21,"title":"MR 21 title","web_url":"https://gitlab.example.net/proj-B/-/merge_requests/21","state":"opened","project_id":2,"project_name":"Project B"}' + + run mr_menu_list_contents "$test_menu_items" + assert_output "$(cat <<- EOF + * Project C: [MR 31 title](https://gitlab.example.net/proj-C/-/merge_requests/31) + * Project A: [MR 11 title](https://gitlab.example.net/proj-A/-/merge_requests/11) + * Project B: [MR 21 title](https://gitlab.example.net/proj-B/-/merge_requests/21) + EOF + )" +} + @test "Prints menu title" { run mr_menu_print_title "AB-123" "" "" "$(echo -e "a\nb\nc")" assert_output "$(cat <<- EOF From 45c1c4fff070fb3f85df204428b5d392796efd02 Mon Sep 17 00:00:00 2001 From: Djuuu Date: Sun, 4 May 2025 19:17:04 +0200 Subject: [PATCH 04/12] Highlight current MR link in edited menu --- git-mr | 11 +++++++++++ test/git-mr.bats | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/git-mr b/git-mr index 0db3231..691b2af 100755 --- a/git-mr +++ b/git-mr @@ -1952,6 +1952,17 @@ mr_menu_update_all() { echo "${updated_count} merge request$([[ $updated_count -gt 1 ]] && echo 's') updated" } +mr_menu_highlight_current() { + local menu_content=$1 + local mr_url=$2 + + local search replace + search="(\s?)\* (.*\[.*\]\($(regex_escape "$mr_url")\).*)" + replace="\1* ${MD_BOLD}\2${MD_BOLD}" + + echo "$menu_content" | sed -r -e "s/${search}/${replace}/" +} + mr_menu_start_line() { local mr_description=$1 diff --git a/test/git-mr.bats b/test/git-mr.bats index 5c7f353..62f8e99 100644 --- a/test/git-mr.bats +++ b/test/git-mr.bats @@ -2241,6 +2241,39 @@ End" )" } +@test "Highlights current MR link in edited menu" { + + test_menu_content='## Menu + +### Main feature + + * Project A: [MR 11 title](https://gitlab.example.net/proj-A/-/merge_requests/11) + * Project Bee: [MR 21 title](https://gitlab.example.net/proj-B/-/merge_requests/21) (/!\ WIP) + +### Documentation + + * Project Doc: [MR 31 title](https://gitlab.example.net/proj-C/-/merge_requests/31) + +--------------------------------------------------------------------------------' + + run mr_menu_highlight_current "$test_menu_content" "https://gitlab.example.net/proj-B/-/merge_requests/21" + assert_output "$(cat <<- EOF + ## Menu + + ### Main feature + + * Project A: [MR 11 title](https://gitlab.example.net/proj-A/-/merge_requests/11) + * **Project Bee: [MR 21 title](https://gitlab.example.net/proj-B/-/merge_requests/21) (/!\ WIP)** + + ### Documentation + + * Project Doc: [MR 31 title](https://gitlab.example.net/proj-C/-/merge_requests/31) + + -------------------------------------------------------------------------------- + EOF + )" +} + @test "Replaces menu in MR descriptions" { local menu_content="## Menu From 897bd28f1be1dd53b2b2faf6d4ce0b61e2962e94 Mon Sep 17 00:00:00 2001 From: Djuuu Date: Sun, 4 May 2025 20:42:53 +0200 Subject: [PATCH 05/12] Prepare menu edit testing --- test/fake-menu-edit.sh | 10 +++ test/test_helper/gitlab-mock-menu.bash | 110 ++++++++++++++++--------- 2 files changed, 82 insertions(+), 38 deletions(-) create mode 100755 test/fake-menu-edit.sh diff --git a/test/fake-menu-edit.sh b/test/fake-menu-edit.sh new file mode 100755 index 0000000..df7c85e --- /dev/null +++ b/test/fake-menu-edit.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +test_menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG" + +echo ' + +* Fake edited menu +* For test + +' > "$test_menu_file" diff --git a/test/test_helper/gitlab-mock-menu.bash b/test/test_helper/gitlab-mock-menu.bash index e16b966..7377164 100644 --- a/test/test_helper/gitlab-mock-menu.bash +++ b/test/test_helper/gitlab-mock-menu.bash @@ -1,67 +1,97 @@ gitlab_request() { local f="gitlab_request " - case "$1" in - "merge_requests?scope=all&state=all&view=simple&search=AB-123"*) - # echo "$f✔️ $1" >> gitlab-mock-menu.log - echo '[ - {"iid": 31,"title":"MR 31 title","web_url":"https://'${GITLAB_DOMAIN}'/proj-C/-/merge_requests/31","state":"opened","project_id":3}, - {"iid": 11,"title":"MR 11 title","web_url":"https://'${GITLAB_DOMAIN}'/proj-A/-/merge_requests/11","state":"opened","project_id":1}, - {"iid": 21,"title":"MR 21 title","web_url":"https://'${GITLAB_DOMAIN}'/proj-B/-/merge_requests/21","state":"opened","project_id":2}, - {"iid": 41,"title":"MR 41 title","web_url":"https://'${GITLAB_DOMAIN}'/proj-D/-/merge_requests/41","state":"closed","project_id":4} - ]' - ;; - "projects/proj-A/merge_requests/11/discussions"*) - # echo "$f✔️ $1" >> gitlab-mock-menu.log; - echo '[]'; ;; - "projects/proj-B/merge_requests/21/discussions"*) - # echo "$f✔️ $1" >> gitlab-mock-menu.log; - echo '[]'; ;; - "projects/proj-C/merge_requests/31/discussions"*) - # echo "$f✔️ $1" >> gitlab-mock-menu.log; - echo '[]'; ;; - "projects/proj-D/merge_requests/41/discussions"*) - # echo "$f✔️ $1" >> gitlab-mock-menu.log; - echo '[]'; ;; + local url="$1" + local method="${2:-GET}" - "projects?"*) - # echo "$f✔️ $1" >> gitlab-mock-menu.log - echo '[ - {"id":1,"name":"Project A"}, - {"id":2,"name":"Project B"}, - {"id":3,"name":"Project C"}, - {"id":4,"name":"Project D"} - ]' - ;; + case "$method" in + "GET") case "$url" in + "merge_requests?scope=all&state=all&view=simple&search=AB-123"*) + # echo "$f✔️ $method $url" >> gitlab-mock-menu.log + echo '[ + {"iid": 31,"title":"MR 31 title","web_url":"https://'${GITLAB_DOMAIN}'/proj-C/-/merge_requests/31","state":"opened","project_id":3}, + {"iid": 11,"title":"MR 11 title","web_url":"https://'${GITLAB_DOMAIN}'/proj-A/-/merge_requests/11","state":"opened","project_id":1}, + {"iid": 21,"title":"MR 21 title","web_url":"https://'${GITLAB_DOMAIN}'/proj-B/-/merge_requests/21","state":"opened","project_id":2}, + {"iid": 41,"title":"MR 41 title","web_url":"https://'${GITLAB_DOMAIN}'/proj-D/-/merge_requests/41","state":"closed","project_id":4} + ]' ;; - *) - echo "$f❌ $1" >> gitlab-mock-menu.log - return 1 - ;; + "projects/proj-A/merge_requests/11/discussions"*) + # echo "$f✔️ $method $url" >> gitlab-mock-menu.log; + echo '[]'; ;; + "projects/proj-B/merge_requests/21/discussions"*) + # echo "$f✔️ $method $url" >> gitlab-mock-menu.log; + echo '[]'; ;; + "projects/proj-C/merge_requests/31/discussions"*) + # echo "$f✔️ $method $url" >> gitlab-mock-menu.log; + echo '[]'; ;; + "projects/proj-D/merge_requests/41/discussions"*) + # echo "$f✔️ $method $url" >> gitlab-mock-menu.log; + echo '[]'; ;; + + "projects?"*) + # echo "$f✔️ $method $url" >> gitlab-mock-menu.log + echo '[ + {"id":1,"name":"Project A"}, + {"id":2,"name":"Project B"}, + {"id":3,"name":"Project C"}, + {"id":4,"name":"Project D"} + ]' ;; + *) + echo "$f❌ $method $url" >> gitlab-mock-menu.log + return 1 ;; + esac ;; + + "PUT") case "$url" in + "projects/proj-A/merge_requests/11"*) + # echo "$f✔️ $method $url" >> gitlab-mock-menu.log; + echo '{"fake": "ok"}'; ;; + "projects/proj-B/merge_requests/21"*) + # echo "$f✔️ $method $url" >> gitlab-mock-menu.log; + echo '{"fake": "ok"}'; ;; + "projects/proj-C/merge_requests/31"*) + # echo "$f✔️ $method $url" >> gitlab-mock-menu.log; + echo '{"fake": "ok"}'; ;; + *) + echo "$f❌ $method $url" >> gitlab-mock-menu.log + return 1 ;; + esac ;; esac } gitlab_merge_request() { + local descr11="# Lorem ipsum\n\n" + descr11="${descr11}## Menu\n\n" + descr11="${descr11}* Blabla\n\n" + descr11="${descr11}--------------------------------------------------------------------------------\n\n" + descr11="${descr11}Merge request with description\n" + descr11="${descr11}and previous menu to be updated.\n" + + local descr21="# Deserunt laborum nibh\n\n" + descr21="${descr21}Merge request with description,\n" + descr21="${descr21}but missing menu.\n" + + local descr31="# Merge request with only title" + local f="gitlab_merge_request " case $1 in 11) # echo "$f✔️ $1 $2" >> gitlab-mock-menu.log - echo '{"iid": 11, "title": "MR 11 title", "project_id": 1, + echo '{"iid": 11, "title": "MR 11 title", "project_id": 1, "description": "'${descr11}'", "source_branch":"feature/branch-11", "web_url": "https://'${GITLAB_DOMAIN}'/proj-A/-/merge_requests/11", "head_pipeline": {"status": "running", "web_url": "https://'${GITLAB_DOMAIN}'/proj-A/-/pipelines/11"}, "state": "opened", "labels": ["QA"], "upvotes": 2, "downvotes": 0, "target_branch": "main", "merge_status": "can_be_merged"}';; 21) # echo "$f✔️ $1 $2" >> gitlab-mock-menu.log - echo '{"iid": 21, "title": "MR 21 title", "project_id": 2, + echo '{"iid": 21, "title": "MR 21 title", "project_id": 2, "description": "'${descr21}'", "source_branch":"feature/branch-21", "web_url": "https://'${GITLAB_DOMAIN}'/proj-B/-/merge_requests/21", "head_pipeline": {"status": "failed", "web_url": "https://'${GITLAB_DOMAIN}'/proj-B/-/pipelines/21"}, "state": "opened", "labels": ["Review"], "upvotes": 0, "downvotes": 1, "target_branch": "main"}';; 31) # echo "$f✔️ $1 $2" >> gitlab-mock-menu.log - echo '{"iid": 31, "title": "MR 31 title", "project_id": 3, + echo '{"iid": 31, "title": "MR 31 title", "project_id": 3, "description": "'${descr31}'", "source_branch":"feature/branch-31", "web_url": "https://'${GITLAB_DOMAIN}'/proj-C/-/merge_requests/31", "head_pipeline": {"status": "scheduled", "web_url": "https://'${GITLAB_DOMAIN}'/proj-C/-/pipelines/31"}, @@ -120,3 +150,7 @@ gitlab_merge_request_threads() { return 1; ;; esac } + +clear_screen() { + return 0 # noop +} From b4383eb74e62cc630cbc92c89242f1798eb830fa Mon Sep 17 00:00:00 2001 From: Djuuu Date: Sun, 4 May 2025 20:46:43 +0200 Subject: [PATCH 06/12] mr menu edit --- git-mr | 85 ++++++++++++++++++++++++++++++++++++++++++++++ test/git-mr.bats | 87 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 172 insertions(+) diff --git a/git-mr b/git-mr index 691b2af..1e29f4b 100755 --- a/git-mr +++ b/git-mr @@ -1963,6 +1963,89 @@ mr_menu_highlight_current() { echo "$menu_content" | sed -r -e "s/${search}/${replace}/" } +mr_menu_edit() { + local issue_code=$1 + local menu_items=$2 + + # Determine editor + local editor; editor=$(git_mr_editor) || exit $? + + # Init temporary menu file + local menu_file; menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG" + mr_menu_list_contents "$menu_items" > "$menu_file" + + # Edit temporary menu file + "$editor" "$menu_file" + + # Cleanup menu content + local edited_content + edited_content=$(sed -e :a -e '/./,$!d;/^\n*$/{$d;N;};/\n$/ba' "$menu_file") # Remove leading and training empty lines + edited_content=$(echo -e "${GIT_MR_MENU_START}\n\n${edited_content}\n\n${GIT_MR_MENU_END}\n") # Add menu header and footer + + local mr_iid \ + mr_url \ + mr_title \ + project_name \ + project_url \ + merge_request \ + mr_description \ + mr_menu_content \ + updated_description \ + mr_update_data \ + result + + # Use array instead of looping over variable content with `read` to leave standard input open for `confirm` + local menu_array + readarray menu_array < <(echo "$menu_items") + + # Iterate over menu merge requests + local i=1 updated_count=0 + for menu_item in "${menu_array[@]}"; do + + eval "$(echo "$menu_item" | jq -r ' + "mr_iid=" + (.iid | @sh) + ";\n" + + "mr_url=" + (.web_url | @sh) + ";\n" + + "mr_title=" + (.title | @sh) + ";\n" + + "project_name=" + (.project_name | @sh) + ";\n" + ')" + + project_url=$(gitlab_extract_project_url_part "$mr_url") + [[ -n $project_name && $project_name != "null" ]] || project_name="$project_url" # Fallback to URL portion + + # Load existing merge request details + merge_request=$(gitlab_merge_request "$mr_iid" "$project_url") + mr_description=$(gitlab_extract_description "$merge_request") + + # Prepare menu content + mr_menu_content="$(mr_menu_highlight_current "$edited_content" "$mr_url")" + updated_description="$(mr_menu_replace_description "$mr_description" "$mr_menu_content")" + + clear_screen + mr_menu_print_title "$issue_code" "" "" "$menu_items" "$i" + mr_menu_print_description "$updated_description" "$mr_url" "$mr_title" "$project_name" + + mr_update_data='{}' + if confirm "Do you want to update the menu in the merge request description?"; then + mr_update_data=$(jq_build "description" "$updated_description" "$mr_update_data") || exit "$ERR_MR" + fi + if [[ $mr_update_data != "{}" ]]; then + echo -n "Updating merge request..." + result=$(gitlab_merge_request_update "$mr_iid" "$mr_update_data" "$project_url") + [[ -n $result ]] && + ((updated_count += 1)) && + echo -e "OK\n" + else + echo + fi + ((i += 1)) + done + + [[ $updated_count -gt 0 ]] && + echo "${updated_count} merge request$([[ $updated_count -gt 1 ]] && echo 's') updated" + + rm "$menu_file" +} + mr_menu_start_line() { local mr_description=$1 @@ -2629,6 +2712,7 @@ mr_menu() { # Consume options up|update) git_mr_menu_mode=update ;; --current) git_mr_menu_update_all=0 ;; + ed|edit) git_mr_menu_mode=edit ;; st|status) git_mr_menu_mode=status ;; # Default: conserve argument *) args+=("${1}") ;; @@ -2655,6 +2739,7 @@ mr_menu() { update) if [[ $git_mr_menu_update_all -eq 1 ]] then mr_menu_update_all "$issue_code" "$menu_items" else mr_menu_update "$menu_items"; fi ;; + edit) mr_menu_edit "$issue_code" "$menu_items" ;; status) mr_menu_status "$issue_code" "$menu_items" ;; *) return "$ERR_MR" ;; esac diff --git a/test/git-mr.bats b/test/git-mr.bats index 62f8e99..23f1319 100644 --- a/test/git-mr.bats +++ b/test/git-mr.bats @@ -2394,6 +2394,93 @@ paragraph. } +@test "Allows menu edit before update" { + load "test_helper/gitlab-mock-menu.bash" + + VISUAL="../../fake-menu-edit.sh" + run mr_menu edit "AB-123" <<< 'y +y +n' + + assert_output --partial "$(cat <<-EOF + ================================================================================ + AB-123 (merge request 1/3) + ================================================================================ + + -------------------------------------------------------------------------------- + Project C: MR 31 title + -------------------------------------------------------------------------------- + + # Merge request with only title + + ## Menu + + * Fake edited menu + * For test + + -------------------------------------------------------------------------------- + + -------------------------------------------------------------------------------- + Updating merge request...OK + EOF + )" + + assert_output --partial "$(cat <<-EOF + ================================================================================ + AB-123 (merge request 2/3) + ================================================================================ + + -------------------------------------------------------------------------------- + Project A: MR 11 title + -------------------------------------------------------------------------------- + + # Lorem ipsum + + ## Menu + + * Fake edited menu + * For test + + -------------------------------------------------------------------------------- + + Merge request with description + and previous menu to be updated. + + -------------------------------------------------------------------------------- + Updating merge request...OK + EOF + )" + + assert_output --partial "$(cat <<-EOF + ================================================================================ + AB-123 (merge request 3/3) + ================================================================================ + + -------------------------------------------------------------------------------- + Project B: MR 21 title + -------------------------------------------------------------------------------- + + # Deserunt laborum nibh + + ## Menu + + * Fake edited menu + * For test + + -------------------------------------------------------------------------------- + + Merge request with description, + but missing menu. + + -------------------------------------------------------------------------------- + EOF + )" + + assert_output --partial "2 merge requests updated" + + refute [ -e '.git/MR_MENU_EDITMSG' ] +} + ################################################################################ # Status change functions From 2c0b1329f070cf78736cba14c0092a39241441b6 Mon Sep 17 00:00:00 2001 From: Djuuu Date: Sun, 4 May 2025 21:38:20 +0200 Subject: [PATCH 07/12] mr menu edit completion --- completion/_git-mr | 4 +++- git-mr-completion.bash | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/completion/_git-mr b/completion/_git-mr index 6f55953..840337c 100644 --- a/completion/_git-mr +++ b/completion/_git-mr @@ -36,6 +36,7 @@ __git-mr_menu_commands() { local -a commands=( 'status:show menu merge requests status summary' 'update:update menu in related merge request descriptions' + 'edit:edit menu before updating in related merge request descriptions' ) _describe -V -t mr-menu-commands 'mr menu commands' commands } @@ -61,6 +62,7 @@ _git-mr() { op|open) mr_action="open" ;; st|status) [[ $mr_action == "menu" ]] && mr_action="menu-status" || mr_action="status" ;; up|update) [[ $mr_action == "menu" ]] && mr_action="menu-update" || mr_action="update" ;; + ed|edit) [[ $mr_action == "menu" ]] && mr_action="menu-edit" || mr_action="default" ;; mg|merge) mr_action="merge" ;; menu) mr_action="menu" ;; ip|cr|qa|ok) mr_action="transition" ;; @@ -89,7 +91,7 @@ _git-mr() { '(--no-color)'--no-color'[disable terminal colors]' '(--no-links)'--no-links'[disable terminal hyperlinks]' );; esac - case $mr_action in default|update|menu-update|transition|merge) opts+=( + case $mr_action in default|update|menu-update|menu-edit|transition|merge) opts+=( '(-y --yes)'{-y,--yes}'[bypass confirmation prompts ("yes")]' );; esac opts+=( diff --git a/git-mr-completion.bash b/git-mr-completion.bash index 634c344..820fcaf 100644 --- a/git-mr-completion.bash +++ b/git-mr-completion.bash @@ -35,6 +35,7 @@ __git-mr_menu_commands() { cat <<-'ACTIONS' status update + edit ACTIONS )" } @@ -55,6 +56,7 @@ _git_mr() { open) mr_action="open" ;; status) [[ $mr_action == "menu" ]] && mr_action="menu-status" || mr_action="status" ;; update) [[ $mr_action == "menu" ]] && mr_action="menu-update" || mr_action="update" ;; + edit) [[ $mr_action == "menu" ]] && mr_action="menu-edit" || mr_action="default" ;; merge) mr_action="merge" ;; menu) mr_action="menu" ;; ip | cr | qa | ok) mr_action="transition" ;; @@ -70,6 +72,7 @@ _git_mr() { op) mr_action="open" ;; st) [[ $mr_action == "menu" ]] && mr_action="menu-status" || mr_action="status" ;; up) [[ $mr_action == "menu" ]] && mr_action="menu-update" || mr_action="update" ;; + ed) [[ $mr_action == "menu" ]] && mr_action="menu-edit" || mr_action="default" ;; mg) mr_action="merge" ;; esac fi @@ -92,7 +95,7 @@ _git_mr() { __gitcomp_nl_append '--no-color' __gitcomp_nl_append '--no-links' ;; esac - case $mr_action in default | update | menu-update | transition | merge) + case $mr_action in default | update | menu-update | menu-edit | transition | merge) __gitcomp_nl_append '-y'; __gitcomp_nl_append '--yes' ;; esac __gitcomp_nl_append '-v'; __gitcomp_nl_append '--verbose' From fc47c4210f19217b9d62cd1e235bd790c50dacc5 Mon Sep 17 00:00:00 2001 From: Djuuu Date: Sun, 4 May 2025 22:30:30 +0200 Subject: [PATCH 08/12] Fix '\r' (windows) --- git-mr | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/git-mr b/git-mr index 1e29f4b..c1bcebb 100755 --- a/git-mr +++ b/git-mr @@ -1871,7 +1871,7 @@ mr_menu_update() { ')" local mr_menu_content; mr_menu_content=$(mr_menu_contents "$menu_items" "$mr_url") - local updated_description; updated_description="$(mr_menu_replace_description "$mr_description" "$mr_menu_content")" + local updated_description; updated_description="$(mr_menu_replace_description "$mr_description" "$mr_menu_content" | tr -d '\r')" mr_menu_print_description "$updated_description" "$mr_url" "$mr_title" @@ -1926,7 +1926,7 @@ mr_menu_update_all() { mr_description=$(gitlab_extract_description "$merge_request") mr_menu_content=$(mr_menu_contents "$menu_items" "$mr_url") - updated_description="$(mr_menu_replace_description "$mr_description" "$mr_menu_content")" + updated_description="$(mr_menu_replace_description "$mr_description" "$mr_menu_content" | tr -d '\r')" clear_screen mr_menu_print_title "$issue_code" "" "" "$menu_items" "$i" @@ -2018,7 +2018,7 @@ mr_menu_edit() { # Prepare menu content mr_menu_content="$(mr_menu_highlight_current "$edited_content" "$mr_url")" - updated_description="$(mr_menu_replace_description "$mr_description" "$mr_menu_content")" + updated_description="$(mr_menu_replace_description "$mr_description" "$mr_menu_content" | tr -d '\r')" clear_screen mr_menu_print_title "$issue_code" "" "" "$menu_items" "$i" @@ -2103,7 +2103,7 @@ mr_menu_replace_description() { prev_description_line="$mr_description_line" ((i += 1)) - done < <(echo "$mr_description") + done < <(echo "$mr_description" | tr -d '\r') if [[ $menu_was_output -eq 0 ]]; then [[ -n "$prev_description_line" ]] && echo From 09a1c71932ef7d2429a1b5854848e9ee4a9257fa Mon Sep 17 00:00:00 2001 From: Djuuu Date: Mon, 5 May 2025 22:12:57 +0200 Subject: [PATCH 09/12] Handle comments in menu edition file --- git-mr | 43 +++++++++++++++++++++++++++++++------- test/fake-menu-edit.sh | 10 +++++++++ test/git-mr.bats | 38 +++++++++++++++++++++++++++++++-- test/test-menu-contents.md | 34 ++++++++++++++++++++++++++++++ 4 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 test/test-menu-contents.md diff --git a/git-mr b/git-mr index c1bcebb..2210dd1 100755 --- a/git-mr +++ b/git-mr @@ -1715,9 +1715,10 @@ mr_menu_contents() { echo "$GIT_MR_MENU_END" } -mr_menu_list_contents() { +mr_menu_editable_content() { local menu_items=$1 + echo while IFS=$'\n' read -r menu_item; do local mr_url mr_title project_name eval "$(echo "$menu_item" | jq -r ' @@ -1734,6 +1735,19 @@ mr_menu_list_contents() { echo "* ${project_name}: $(markdown_link "$mr_title" "$mr_url")" done < <(echo "$menu_items") + + cat << EOF + + +//! +//! Here you can rearrange menu items, add additional description, etc. +//! +//! Individual menu items will be highlighted in the relevant merge request, +//! provided you keep the markdown list & link format. +//! +//! If you remove everything, menu update will be aborted. +//! +EOF } mr_menu_print_title() { @@ -1963,6 +1977,23 @@ mr_menu_highlight_current() { echo "$menu_content" | sed -r -e "s/${search}/${replace}/" } +mr_menu_edit_read_file() { + local menu_file=$1 + + # Cleanup edited menu contents: + # - remove comments + # - remove leading blank lines and collapse multiple blank lines + local edited_content; edited_content=$( \ + sed -e '/^\s*\/\/!/d' "$menu_file" | + sed -e '/./,$!d' -e '/^$/N;/^\n$/D' \ + ) + + # Output menu contents + echo -e "${GIT_MR_MENU_START}\n" + echo -e "${edited_content}\n" + echo -e "${GIT_MR_MENU_END}" +} + mr_menu_edit() { local issue_code=$1 local menu_items=$2 @@ -1972,15 +2003,13 @@ mr_menu_edit() { # Init temporary menu file local menu_file; menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG" - mr_menu_list_contents "$menu_items" > "$menu_file" + mr_menu_editable_content "$menu_items" > "$menu_file" - # Edit temporary menu file + # Open temporary menu file in editor "$editor" "$menu_file" - # Cleanup menu content - local edited_content - edited_content=$(sed -e :a -e '/./,$!d;/^\n*$/{$d;N;};/\n$/ba' "$menu_file") # Remove leading and training empty lines - edited_content=$(echo -e "${GIT_MR_MENU_START}\n\n${edited_content}\n\n${GIT_MR_MENU_END}\n") # Add menu header and footer + # Get file contents + local edited_content; edited_content="$(mr_menu_edit_read_file "$menu_file")" local mr_iid \ mr_url \ diff --git a/test/fake-menu-edit.sh b/test/fake-menu-edit.sh index df7c85e..ddb63ec 100755 --- a/test/fake-menu-edit.sh +++ b/test/fake-menu-edit.sh @@ -3,8 +3,18 @@ test_menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG" echo ' +//! +//! Here you can rearrange menu items, add additional description, etc. +//! +//! Individual menu items will be highlighted in the relevant merge request, +//! provided you keep the markdown list & link format. +//! +//! If you remove everything, menu update will be aborted. +//! + * Fake edited menu * For test + ' > "$test_menu_file" diff --git a/test/git-mr.bats b/test/git-mr.bats index 23f1319..7e964fd 100644 --- a/test/git-mr.bats +++ b/test/git-mr.bats @@ -2124,16 +2124,27 @@ End" )" } -@test "Builds raw menu list" { +@test "Builds editable menu content" { test_menu_items='{"iid":31,"title":"MR 31 title","web_url":"https://gitlab.example.net/proj-C/-/merge_requests/31","state":"opened","project_id":3,"project_name":"Project C"} {"iid":11,"title":"MR 11 title","web_url":"https://gitlab.example.net/proj-A/-/merge_requests/11","state":"opened","project_id":1,"project_name":"Project A"} {"iid":21,"title":"MR 21 title","web_url":"https://gitlab.example.net/proj-B/-/merge_requests/21","state":"opened","project_id":2,"project_name":"Project B"}' - run mr_menu_list_contents "$test_menu_items" + run mr_menu_editable_content "$test_menu_items" assert_output "$(cat <<- EOF + * Project C: [MR 31 title](https://gitlab.example.net/proj-C/-/merge_requests/31) * Project A: [MR 11 title](https://gitlab.example.net/proj-A/-/merge_requests/11) * Project B: [MR 21 title](https://gitlab.example.net/proj-B/-/merge_requests/21) + + + //! + //! Here you can rearrange menu items, add additional description, etc. + //! + //! Individual menu items will be highlighted in the relevant merge request, + //! provided you keep the markdown list & link format. + //! + //! If you remove everything, menu update will be aborted. + //! EOF )" } @@ -2394,6 +2405,29 @@ paragraph. } +@test "Cleans up edited menu" { + run mr_menu_edit_read_file ../../test-menu-contents.md + assert_output "$(cat <<-EOF + ## Menu + + Content line: first + + Content line: before comments + Content line: after comments + + * Menu item 1 + * Menu item 2 + * [Menu item 3](https://example.net) + + Content line ddd + + Content line eee + + -------------------------------------------------------------------------------- + EOF + )" +} + @test "Allows menu edit before update" { load "test_helper/gitlab-mock-menu.bash" diff --git a/test/test-menu-contents.md b/test/test-menu-contents.md new file mode 100644 index 0000000..7183ff2 --- /dev/null +++ b/test/test-menu-contents.md @@ -0,0 +1,34 @@ + + + +Content line: first + + +Content line: before comments +//! +//! This is a comment section +//! +//! Individual menu items will be highlighted in the relevant merge request, +//! provided you keep the markdown list & link format. +//! +//! If you remove everything, menu update will be aborted. +//! +Content line: after comments + + + +* Menu item 1 +* Menu item 2 + * [Menu item 3](https://example.net) + + Content line ddd + +//!Another comment + //! Another comment with spaces before + //! Another comment with tabs before + + +Content line eee + + + From 387878e33563b793a8cb70f031ca79fbacc3c1f7 Mon Sep 17 00:00:00 2001 From: Djuuu Date: Tue, 6 May 2025 01:21:47 +0200 Subject: [PATCH 10/12] Abort if edited menu is empty --- git-mr | 6 ++++++ test/fake-menu-edit-empty.sh | 18 ++++++++++++++++++ test/git-mr.bats | 13 +++++++++++++ test/test-empty-menu-contents.md | 20 ++++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100755 test/fake-menu-edit-empty.sh create mode 100644 test/test-empty-menu-contents.md diff --git a/git-mr b/git-mr index 2210dd1..5db7142 100755 --- a/git-mr +++ b/git-mr @@ -1988,6 +1988,9 @@ mr_menu_edit_read_file() { sed -e '/./,$!d' -e '/^$/N;/^\n$/D' \ ) + # Abort if menu is empty + [[ -z "${edited_content// /}" ]] && return + # Output menu contents echo -e "${GIT_MR_MENU_START}\n" echo -e "${edited_content}\n" @@ -2011,6 +2014,9 @@ mr_menu_edit() { # Get file contents local edited_content; edited_content="$(mr_menu_edit_read_file "$menu_file")" + # Abort if menu is empty + [[ -z "$edited_content" ]] && exit_error 0 "Empty menu, aborting." + local mr_iid \ mr_url \ mr_title \ diff --git a/test/fake-menu-edit-empty.sh b/test/fake-menu-edit-empty.sh new file mode 100755 index 0000000..df523b6 --- /dev/null +++ b/test/fake-menu-edit-empty.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +test_menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG" + +echo ' + +//! +//! Here you can rearrange menu items, add additional description, etc. +//! +//! Individual menu items will be highlighted in the relevant merge request, +//! provided you keep the markdown list & link format. +//! +//! If you remove everything, menu update will be aborted. +//! + + + +' > "$test_menu_file" diff --git a/test/git-mr.bats b/test/git-mr.bats index 7e964fd..7f5c744 100644 --- a/test/git-mr.bats +++ b/test/git-mr.bats @@ -2426,6 +2426,9 @@ paragraph. -------------------------------------------------------------------------------- EOF )" + + run mr_menu_edit_read_file ../../test-empty-menu-contents.md + assert_output "" } @test "Allows menu edit before update" { @@ -2515,6 +2518,16 @@ n' refute [ -e '.git/MR_MENU_EDITMSG' ] } +@test "Aborts menu update when edited menu is empty" { + load "test_helper/gitlab-mock-menu.bash" + + VISUAL="../../fake-menu-edit-empty.sh" + GIT_MR_YES=1 + + run mr_menu edit "AB-123" + assert_output "Empty menu, aborting." +} + ################################################################################ # Status change functions diff --git a/test/test-empty-menu-contents.md b/test/test-empty-menu-contents.md new file mode 100644 index 0000000..1af9c0e --- /dev/null +++ b/test/test-empty-menu-contents.md @@ -0,0 +1,20 @@ + + + +//! +//! This is a comment section +//! +//! Individual menu items will be highlighted in the relevant merge request, +//! provided you keep the markdown list & link format. +//! +//! If you remove everything, menu update will be aborted. +//! + + + +//!Another comment + //! Another comment with spaces before + //! Another comment with tabs before + + + From fa010068cb428fefbbf951cbe65105197ede1739 Mon Sep 17 00:00:00 2001 From: Djuuu Date: Tue, 6 May 2025 21:52:48 +0200 Subject: [PATCH 11/12] Use markdown file extension & HTML comments for better experience in editors with syntax-highlighting --- git-mr | 24 +++++++++++++----------- test/fake-menu-edit-empty.sh | 21 ++++++++++++--------- test/fake-menu-edit.sh | 22 +++++++++++++--------- test/git-mr.bats | 20 +++++++++++--------- test/test-empty-menu-contents.md | 21 ++++++++++----------- test/test-menu-contents.md | 20 ++++++++------------ 6 files changed, 67 insertions(+), 61 deletions(-) diff --git a/git-mr b/git-mr index 5db7142..a84ff73 100755 --- a/git-mr +++ b/git-mr @@ -1739,14 +1739,16 @@ mr_menu_editable_content() { cat << EOF -//! -//! Here you can rearrange menu items, add additional description, etc. -//! -//! Individual menu items will be highlighted in the relevant merge request, -//! provided you keep the markdown list & link format. -//! -//! If you remove everything, menu update will be aborted. -//! + + + + + + + + + + EOF } @@ -1981,10 +1983,10 @@ mr_menu_edit_read_file() { local menu_file=$1 # Cleanup edited menu contents: - # - remove comments + # - remove comment lines and sections # - remove leading blank lines and collapse multiple blank lines local edited_content; edited_content=$( \ - sed -e '/^\s*\/\/!/d' "$menu_file" | + sed -e '//d' -e '//d' "$menu_file" | sed -e '/./,$!d' -e '/^$/N;/^\n$/D' \ ) @@ -2005,7 +2007,7 @@ mr_menu_edit() { local editor; editor=$(git_mr_editor) || exit $? # Init temporary menu file - local menu_file; menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG" + local menu_file; menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG.md" mr_menu_editable_content "$menu_items" > "$menu_file" # Open temporary menu file in editor diff --git a/test/fake-menu-edit-empty.sh b/test/fake-menu-edit-empty.sh index df523b6..59d2ec1 100755 --- a/test/fake-menu-edit-empty.sh +++ b/test/fake-menu-edit-empty.sh @@ -1,18 +1,21 @@ #!/usr/bin/env bash -test_menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG" +test_menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG.md" echo ' -//! -//! Here you can rearrange menu items, add additional description, etc. -//! -//! Individual menu items will be highlighted in the relevant merge request, -//! provided you keep the markdown list & link format. -//! -//! If you remove everything, menu update will be aborted. -//! + + + + + + + + + + + ' > "$test_menu_file" diff --git a/test/fake-menu-edit.sh b/test/fake-menu-edit.sh index ddb63ec..4a66aeb 100755 --- a/test/fake-menu-edit.sh +++ b/test/fake-menu-edit.sh @@ -1,20 +1,24 @@ #!/usr/bin/env bash -test_menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG" +test_menu_file="$(git rev-parse --git-dir)/MR_MENU_EDITMSG.md" echo ' -//! -//! Here you can rearrange menu items, add additional description, etc. -//! -//! Individual menu items will be highlighted in the relevant merge request, -//! provided you keep the markdown list & link format. -//! -//! If you remove everything, menu update will be aborted. -//! * Fake edited menu * For test + + + + + + + + + + + + ' > "$test_menu_file" diff --git a/test/git-mr.bats b/test/git-mr.bats index 7f5c744..fe90626 100644 --- a/test/git-mr.bats +++ b/test/git-mr.bats @@ -2137,14 +2137,16 @@ End" * Project B: [MR 21 title](https://gitlab.example.net/proj-B/-/merge_requests/21) - //! - //! Here you can rearrange menu items, add additional description, etc. - //! - //! Individual menu items will be highlighted in the relevant merge request, - //! provided you keep the markdown list & link format. - //! - //! If you remove everything, menu update will be aborted. - //! + + + + + + + + + + EOF )" } @@ -2515,7 +2517,7 @@ n' assert_output --partial "2 merge requests updated" - refute [ -e '.git/MR_MENU_EDITMSG' ] + refute [ -e '.git/MR_MENU_EDITMSG.md' ] } @test "Aborts menu update when edited menu is empty" { diff --git a/test/test-empty-menu-contents.md b/test/test-empty-menu-contents.md index 1af9c0e..973cfa7 100644 --- a/test/test-empty-menu-contents.md +++ b/test/test-empty-menu-contents.md @@ -1,20 +1,19 @@ -//! -//! This is a comment section -//! -//! Individual menu items will be highlighted in the relevant merge request, -//! provided you keep the markdown list & link format. -//! -//! If you remove everything, menu update will be aborted. -//! + + +Beware, lines containing a are completely deleted. + + + -//!Another comment - //! Another comment with spaces before - //! Another comment with tabs before diff --git a/test/test-menu-contents.md b/test/test-menu-contents.md index 7183ff2..e5402aa 100644 --- a/test/test-menu-contents.md +++ b/test/test-menu-contents.md @@ -5,17 +5,13 @@ Content line: first Content line: before comments -//! -//! This is a comment section -//! -//! Individual menu items will be highlighted in the relevant merge request, -//! provided you keep the markdown list & link format. -//! -//! If you remove everything, menu update will be aborted. -//! + + Content line: after comments - +Beware, lines containing a are completely deleted. * Menu item 1 * Menu item 2 @@ -23,9 +19,9 @@ Content line: after comments Content line ddd -//!Another comment - //! Another comment with spaces before - //! Another comment with tabs before + Content line eee From f3fb28df60b1fe5f556cc6ec4aaf48e45c10a8f9 Mon Sep 17 00:00:00 2001 From: Djuuu Date: Tue, 6 May 2025 22:47:29 +0200 Subject: [PATCH 12/12] mr menu edit documentation --- README.md | 12 +++++++ doc/generate-sample-output.sh | 58 ++++++++++++++++++++++++++++++++-- doc/git-mr-menu-edit-0.png | Bin 0 -> 8828 bytes doc/git-mr-menu-edit-1.png | Bin 0 -> 52689 bytes doc/git-mr-menu-edit-2.png | Bin 0 -> 54125 bytes git-mr | 1 + 6 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 doc/git-mr-menu-edit-0.png create mode 100644 doc/git-mr-menu-edit-1.png create mode 100644 doc/git-mr-menu-edit-2.png diff --git a/README.md b/README.md index 3e15ceb..239e571 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ Prepares a merge request description, with link to Jira ticket and current branc git mr [OPTIONS] menu [SEARCH_TERM] git mr [OPTIONS] menu update [--current] [SEARCH_TERM] +git mr [OPTIONS] menu edit [SEARCH_TERM] git mr [OPTIONS] menu status [SEARCH_TERM] git mr [OPTIONS] (ip|cr|qa|ok) [BRANCH] @@ -393,6 +394,7 @@ This view allows navigating through the merge request commits, and comments left
 git mr [OPTION...] menu                       [SEARCH_TERM] 
 git mr [OPTION...] menu up|update [--current] [SEARCH_TERM] 
+git mr [OPTION...] menu ed|edit               [SEARCH_TERM] 
 git mr [OPTION...] menu st|status             [SEARCH_TERM] 
 
@@ -411,6 +413,16 @@ Searches for all (non-closed) merge requests with the current issue code in the * `git mr menu up|update --current` Inserts or updates menu in current merge request description only (prompts for confirmation). +* `git mr menu ed|edit` + Opens menu in editor for tweaking before updating related merge request descriptions. + Uses default editor, guessed through `VISUAL` or `EDITOR` environment variables. + + ![git mr menu edit](doc/git-mr-menu-edit-0.png) + + ![git mr menu edit](doc/git-mr-menu-edit-1.png) + + ![git mr menu edit](doc/git-mr-menu-edit-2.png) + * `git mr menu st|status` Prints menu and status indicators for every related merge request. diff --git a/doc/generate-sample-output.sh b/doc/generate-sample-output.sh index 2fe7636..48a648e 100755 --- a/doc/generate-sample-output.sh +++ b/doc/generate-sample-output.sh @@ -422,6 +422,51 @@ EOF echo } +sample_mr_menu_edit() { + fake_prompt "git mr menu edit" + + mr_description="# [XY-1234 Quisque sed](https://jira.example.net/browse/XY-1234) + +## Menu + +### Feature + +Lorem ipsum feature + +* Some Project: [Feature/XY-1234 Lorem Ipsum](https://myapp.gitlab.com/some/project/...) +* **Other Project: [Feature/XY-1234 Quisque sed](https://myapp.gitlab.com/other/project/...)** + +### Documentation + +* Third Project: [Feature/XY-1234 Nunc vestibulum](https://myapp.gitlab.com/third/project/...) + +-------------------------------------------------------------------------------- + + +Quisque sed consectetur adipiscing elit. + +Pellentesque eu lectus felis. Phasellus maximus, quam quis accumsan varius, +enim nunc egestas ante, ut venenatis nunc eros non lorem. Ut molestie elementum +nisi in sollicitudin. +" + +mr_url="https://myapp.gitlab.com/other/project/..." +mr_title="Feature/XY-1234 Quisque sed" +project_name="Other Project" + + cat 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 M5s>6B1Z*v@QivR!s literal 0 HcmV?d00001 diff --git a/doc/git-mr-menu-edit-2.png b/doc/git-mr-menu-edit-2.png new file mode 100644 index 0000000000000000000000000000000000000000..2fc7c0f32cdf5a0fe8e850421c61954958d714b1 GIT binary patch literal 54125 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