mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 04:36:49 +08:00
add handling of deleted branches in branchoverview (#1928)
* add handling of deleted branches in branchoverview also display deleted branches in branch overview but w/o a branch name * PP #1823
This commit is contained in:
parent
aa7a5fd01f
commit
529bfc478e
|
@ -60,12 +60,11 @@ CLASS zcl_abapgit_gui_page_boverview DEFINITION
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_gui_page_boverview IMPLEMENTATION.
|
CLASS zcl_abapgit_gui_page_boverview IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD body.
|
METHOD body.
|
||||||
DATA: lv_tag TYPE string.
|
DATA: lv_tag TYPE string.
|
||||||
|
DATA: lv_branch_display_name TYPE string.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_commit> LIKE LINE OF mt_commits,
|
FIELD-SYMBOLS: <ls_commit> LIKE LINE OF mt_commits,
|
||||||
<ls_create> LIKE LINE OF <ls_commit>-create.
|
<ls_create> LIKE LINE OF <ls_commit>-create.
|
||||||
|
@ -145,9 +144,15 @@ CLASS zcl_abapgit_gui_page_boverview IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
LOOP AT <ls_commit>-create ASSIGNING <ls_create>.
|
LOOP AT <ls_commit>-create ASSIGNING <ls_create>.
|
||||||
|
IF <ls_create>-name CS zcl_abapgit_branch_overview=>c_deleted_branch_name_prefix.
|
||||||
|
lv_branch_display_name = ''.
|
||||||
|
ELSE.
|
||||||
|
lv_branch_display_name = <ls_create>-name.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ro_html->add( |var { escape_branch( <ls_create>-name ) } = {
|
ro_html->add( |var { escape_branch( <ls_create>-name ) } = {
|
||||||
escape_branch( <ls_create>-parent ) }.branch("{
|
escape_branch( <ls_create>-parent ) }.branch("{
|
||||||
<ls_create>-name }");| ).
|
lv_branch_display_name }");| ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
|
@ -9,6 +9,7 @@ CLASS zcl_abapgit_branch_overview DEFINITION
|
||||||
|
|
||||||
INTERFACES zif_abapgit_branch_overview .
|
INTERFACES zif_abapgit_branch_overview .
|
||||||
TYPES: ty_commits TYPE STANDARD TABLE OF zif_abapgit_definitions=>ty_commit WITH DEFAULT KEY .
|
TYPES: ty_commits TYPE STANDARD TABLE OF zif_abapgit_definitions=>ty_commit WITH DEFAULT KEY .
|
||||||
|
CONSTANTS c_deleted_branch_name_prefix TYPE string VALUE '__DELETED_BRANCH_' ##NO_TEXT.
|
||||||
|
|
||||||
METHODS constructor
|
METHODS constructor
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
@ -61,6 +62,8 @@ CLASS zcl_abapgit_branch_overview DEFINITION
|
||||||
EXPORTING etr_commit_sha1s TYPE tyt_commit_sha1_range
|
EXPORTING etr_commit_sha1s TYPE tyt_commit_sha1_range
|
||||||
e_1st_commit TYPE zif_abapgit_definitions=>ty_commit
|
e_1st_commit TYPE zif_abapgit_definitions=>ty_commit
|
||||||
CHANGING ct_commits TYPE ty_commits.
|
CHANGING ct_commits TYPE ty_commits.
|
||||||
|
METHODS _reverse_sort_order
|
||||||
|
CHANGING ct_commits TYPE ty_commits.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -75,6 +78,8 @@ CLASS zcl_abapgit_branch_overview IMPLEMENTATION.
|
||||||
|
|
||||||
lt_objects = get_git_objects( io_repo ).
|
lt_objects = get_git_objects( io_repo ).
|
||||||
mt_commits = parse_commits( lt_objects ).
|
mt_commits = parse_commits( lt_objects ).
|
||||||
|
_sort_commits( CHANGING ct_commits = mt_commits ).
|
||||||
|
|
||||||
parse_annotated_tags( lt_objects ).
|
parse_annotated_tags( lt_objects ).
|
||||||
|
|
||||||
CLEAR lt_objects.
|
CLEAR lt_objects.
|
||||||
|
@ -83,7 +88,7 @@ CLASS zcl_abapgit_branch_overview IMPLEMENTATION.
|
||||||
determine_merges( ).
|
determine_merges( ).
|
||||||
determine_tags( ).
|
determine_tags( ).
|
||||||
fixes( ).
|
fixes( ).
|
||||||
_sort_commits( CHANGING ct_commits = mt_commits ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -141,31 +146,76 @@ CLASS zcl_abapgit_branch_overview IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD determine_merges.
|
METHOD determine_merges.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_merged> LIKE LINE OF mt_commits,
|
DATA: BEGIN OF deleted_branch_info,
|
||||||
<ls_commit> LIKE LINE OF mt_commits.
|
created TYPE flag,
|
||||||
|
index TYPE string,
|
||||||
|
name TYPE string,
|
||||||
|
END OF deleted_branch_info.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_merged_branch_commit> TYPE zif_abapgit_definitions=>ty_commit,
|
||||||
|
<ls_merged_branch_parent> TYPE zif_abapgit_definitions=>ty_commit,
|
||||||
|
<ls_commit> TYPE zif_abapgit_definitions=>ty_commit,
|
||||||
|
<ls_create> TYPE zif_abapgit_definitions=>ty_create.
|
||||||
|
|
||||||
* important: start with the newest first and propagate branches
|
* we need latest first here: latest -> initial
|
||||||
SORT mt_commits BY time DESCENDING.
|
_reverse_sort_order( CHANGING ct_commits = mt_commits ).
|
||||||
|
|
||||||
LOOP AT mt_commits ASSIGNING <ls_commit> WHERE NOT parent2 IS INITIAL.
|
LOOP AT mt_commits ASSIGNING <ls_commit> WHERE NOT parent2 IS INITIAL.
|
||||||
ASSERT NOT <ls_commit>-branch IS INITIAL.
|
ASSERT NOT <ls_commit>-branch IS INITIAL.
|
||||||
|
|
||||||
READ TABLE mt_commits ASSIGNING <ls_merged> WITH KEY sha1 = <ls_commit>-parent2.
|
READ TABLE mt_commits ASSIGNING <ls_merged_branch_commit> WITH KEY sha1 = <ls_commit>-parent2.
|
||||||
IF sy-subrc = 0.
|
IF sy-subrc = 0.
|
||||||
<ls_commit>-merge = <ls_merged>-branch.
|
<ls_commit>-merge = <ls_merged_branch_commit>-branch.
|
||||||
|
|
||||||
* orphaned, branch has been deleted after merge
|
* orphaned, branch has been deleted after merge
|
||||||
WHILE <ls_merged>-branch IS INITIAL.
|
deleted_branch_info-created = abap_false.
|
||||||
<ls_merged>-branch = <ls_commit>-branch.
|
|
||||||
READ TABLE mt_commits ASSIGNING <ls_merged> WITH KEY sha1 = <ls_merged>-parent1.
|
WHILE <ls_merged_branch_commit>-branch IS INITIAL.
|
||||||
|
IF deleted_branch_info-created = abap_false.
|
||||||
|
|
||||||
|
deleted_branch_info-created = abap_true.
|
||||||
|
deleted_branch_info-index = deleted_branch_info-index + 1.
|
||||||
|
deleted_branch_info-name = c_deleted_branch_name_prefix && deleted_branch_info-index && '__'.
|
||||||
|
CONDENSE deleted_branch_info-name NO-GAPS.
|
||||||
|
|
||||||
|
<ls_commit>-merge = deleted_branch_info-name.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
<ls_merged_branch_commit>-branch = deleted_branch_info-name.
|
||||||
|
|
||||||
|
READ TABLE mt_commits ASSIGNING <ls_merged_branch_parent>
|
||||||
|
WITH KEY sha1 = <ls_merged_branch_commit>-parent1.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
EXIT.
|
EXIT.
|
||||||
|
ELSE.
|
||||||
|
ASSIGN <ls_merged_branch_parent> TO <ls_merged_branch_commit>.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDWHILE.
|
ENDWHILE.
|
||||||
|
|
||||||
|
IF <ls_merged_branch_parent> IS ASSIGNED.
|
||||||
|
APPEND INITIAL LINE TO <ls_merged_branch_parent>-create ASSIGNING <ls_create>.
|
||||||
|
<ls_create>-name = deleted_branch_info-name.
|
||||||
|
<ls_create>-parent = <ls_commit>-branch.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
" switch back to initial -> latest
|
||||||
|
_reverse_sort_order( CHANGING ct_commits = mt_commits ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD _reverse_sort_order.
|
||||||
|
DATA: lt_commits TYPE ty_commits.
|
||||||
|
FIELD-SYMBOLS: <ls_commit> TYPE zif_abapgit_definitions=>ty_commit.
|
||||||
|
|
||||||
|
LOOP AT ct_commits ASSIGNING <ls_commit>.
|
||||||
|
INSERT <ls_commit> INTO lt_commits INDEX 1.
|
||||||
|
ENDLOOP.
|
||||||
|
ct_commits = lt_commits.
|
||||||
|
FREE lt_commits.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -503,5 +553,4 @@ CLASS zcl_abapgit_branch_overview IMPLEMENTATION.
|
||||||
ct_commits = lt_sorted_commits.
|
ct_commits = lt_sorted_commits.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user