diff --git a/src/zabapgit_git.prog.abap b/src/zabapgit_git.prog.abap index 1a039767b..ab6a2a47a 100644 --- a/src/zabapgit_git.prog.abap +++ b/src/zabapgit_git.prog.abap @@ -602,6 +602,8 @@ CLASS lcl_git_pack IMPLEMENTATION. rv_type = zif_abapgit_definitions=>gc_type-tree. WHEN '011'. rv_type = zif_abapgit_definitions=>gc_type-blob. + WHEN '100'. + rv_type = zif_abapgit_definitions=>gc_type-tag. WHEN '111'. rv_type = zif_abapgit_definitions=>gc_type-ref_d. WHEN OTHERS. diff --git a/src/zabapgit_page_branch_overview.prog.abap b/src/zabapgit_page_branch_overview.prog.abap index a18bdfe41..43bb5f8b9 100644 --- a/src/zabapgit_page_branch_overview.prog.abap +++ b/src/zabapgit_page_branch_overview.prog.abap @@ -20,6 +20,7 @@ CLASS lcl_branch_overview DEFINITION FINAL. message TYPE string, branch TYPE string, merge TYPE string, + tags TYPE stringtab, create TYPE STANDARD TABLE OF ty_create WITH DEFAULT KEY, compressed TYPE abap_bool, END OF ty_commit. @@ -54,11 +55,14 @@ CLASS lcl_branch_overview DEFINITION FINAL. get_git_objects IMPORTING io_repo TYPE REF TO lcl_repo_online RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt - RAISING zcx_abapgit_exception. + RAISING zcx_abapgit_exception, + determine_tags + RAISING zcx_abapgit_exception. CLASS-DATA: gt_branches TYPE lcl_git_branch_list=>ty_git_branch_list_tt, - gt_commits TYPE TABLE OF ty_commit. + gt_commits TYPE TABLE OF ty_commit, + gt_tags TYPE lcl_git_branch_list=>ty_git_branch_list_tt. ENDCLASS. @@ -143,6 +147,7 @@ CLASS lcl_branch_overview IMPLEMENTATION. determine_branch( ). determine_merges( ). + determine_tags( ). fixes( ). SORT gt_commits BY time ASCENDING. @@ -153,6 +158,8 @@ CLASS lcl_branch_overview IMPLEMENTATION. METHOD get_git_objects. + DATA: lo_branch_list TYPE REF TO lcl_git_branch_list. + lcl_progress=>show( iv_key = 'Get git objects' iv_current = 1 iv_total = 1 @@ -162,12 +169,16 @@ CLASS lcl_branch_overview IMPLEMENTATION. * the selected branch "TODO refactor - gt_branches = lcl_git_transport=>branches( io_repo->get_url( ) )->get_branches_only( ). - lcl_git_transport=>upload_pack( EXPORTING io_repo = io_repo - iv_deepen = abap_false + lo_branch_list = lcl_git_transport=>branches( io_repo->get_url( ) ). + + gt_branches = lo_branch_list->get_branches_only( ). + gt_tags = lo_branch_list->get_tags_only( ). + + lcl_git_transport=>upload_pack( EXPORTING io_repo = io_repo + iv_deepen = abap_false it_branches = gt_branches - IMPORTING et_objects = rt_objects ). + IMPORTING et_objects = rt_objects ). DELETE rt_objects WHERE type = zif_abapgit_definitions=>gc_type-blob. @@ -298,6 +309,26 @@ CLASS lcl_branch_overview IMPLEMENTATION. ENDMETHOD. + + METHOD determine_tags. + + FIELD-SYMBOLS: TYPE lcl_git_branch_list=>ty_git_branch, + TYPE lcl_branch_overview=>ty_commit. + + LOOP AT gt_tags ASSIGNING . + + READ TABLE gt_commits WITH KEY sha1 = -sha1 + ASSIGNING . + CHECK sy-subrc = 0. + + INSERT replace( val = -name + sub = zif_abapgit_definitions=>gc_tag_prefix + with = `` ) INTO TABLE -tags. + + ENDLOOP. + + ENDMETHOD. + ENDCLASS. *********************** @@ -473,7 +504,8 @@ CLASS lcl_gui_page_boverview IMPLEMENTATION. ro_html->add( |{ escape_branch( -branch ) }.commit(\{message: "{ escape_message( -message ) }", author: "{ -author }", sha1: "{ - -sha1(7) }"\});| ). + -sha1(7) }", tag: "{ concat_lines_of( table = -tags + sep = ` | ` ) }"\});| ). ELSE. ro_html->add( |{ escape_branch( -merge ) }.merge({ escape_branch( -branch ) }, \{message: "{ diff --git a/src/zif_abapgit_definitions.intf.abap b/src/zif_abapgit_definitions.intf.abap index 797e47549..d66015d71 100644 --- a/src/zif_abapgit_definitions.intf.abap +++ b/src/zif_abapgit_definitions.intf.abap @@ -155,6 +155,7 @@ INTERFACE zif_abapgit_definitions commit TYPE zif_abapgit_definitions=>ty_type VALUE 'commit', "#EC NOTEXT tree TYPE zif_abapgit_definitions=>ty_type VALUE 'tree', "#EC NOTEXT ref_d TYPE zif_abapgit_definitions=>ty_type VALUE 'ref_d', "#EC NOTEXT + tag TYPE zif_abapgit_definitions=>ty_type VALUE 'tag', "#EC NOTEXT blob TYPE zif_abapgit_definitions=>ty_type VALUE 'blob', "#EC NOTEXT END OF gc_type . CONSTANTS: