Merge pull request #1083 from christianguenter2/tags-in-branch-overview

Tags in branch overview and tag fixes
This commit is contained in:
Lars Hvam 2018-01-04 11:52:53 +01:00 committed by GitHub
commit 5cffdbe50d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 84 additions and 26 deletions

View File

@ -602,6 +602,8 @@ CLASS lcl_git_pack IMPLEMENTATION.
rv_type = zif_abapgit_definitions=>gc_type-tree. rv_type = zif_abapgit_definitions=>gc_type-tree.
WHEN '011'. WHEN '011'.
rv_type = zif_abapgit_definitions=>gc_type-blob. rv_type = zif_abapgit_definitions=>gc_type-blob.
WHEN '100'.
rv_type = zif_abapgit_definitions=>gc_type-tag.
WHEN '111'. WHEN '111'.
rv_type = zif_abapgit_definitions=>gc_type-ref_d. rv_type = zif_abapgit_definitions=>gc_type-ref_d.
WHEN OTHERS. WHEN OTHERS.

View File

@ -20,6 +20,7 @@ CLASS lcl_branch_overview DEFINITION FINAL.
message TYPE string, message TYPE string,
branch TYPE string, branch TYPE string,
merge TYPE string, merge TYPE string,
tags TYPE stringtab,
create TYPE STANDARD TABLE OF ty_create WITH DEFAULT KEY, create TYPE STANDARD TABLE OF ty_create WITH DEFAULT KEY,
compressed TYPE abap_bool, compressed TYPE abap_bool,
END OF ty_commit. END OF ty_commit.
@ -54,11 +55,14 @@ CLASS lcl_branch_overview DEFINITION FINAL.
get_git_objects get_git_objects
IMPORTING io_repo TYPE REF TO lcl_repo_online IMPORTING io_repo TYPE REF TO lcl_repo_online
RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt RETURNING VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt
RAISING zcx_abapgit_exception,
determine_tags
RAISING zcx_abapgit_exception. RAISING zcx_abapgit_exception.
CLASS-DATA: CLASS-DATA:
gt_branches TYPE lcl_git_branch_list=>ty_git_branch_list_tt, 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. ENDCLASS.
@ -143,6 +147,7 @@ CLASS lcl_branch_overview IMPLEMENTATION.
determine_branch( ). determine_branch( ).
determine_merges( ). determine_merges( ).
determine_tags( ).
fixes( ). fixes( ).
SORT gt_commits BY time ASCENDING. SORT gt_commits BY time ASCENDING.
@ -153,6 +158,8 @@ CLASS lcl_branch_overview IMPLEMENTATION.
METHOD get_git_objects. METHOD get_git_objects.
DATA: lo_branch_list TYPE REF TO lcl_git_branch_list.
lcl_progress=>show( iv_key = 'Get git objects' lcl_progress=>show( iv_key = 'Get git objects'
iv_current = 1 iv_current = 1
iv_total = 1 iv_total = 1
@ -162,7 +169,11 @@ CLASS lcl_branch_overview IMPLEMENTATION.
* the selected branch * the selected branch
"TODO refactor "TODO refactor
gt_branches = lcl_git_transport=>branches( io_repo->get_url( ) )->get_branches_only( ).
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 lcl_git_transport=>upload_pack( EXPORTING io_repo = io_repo
iv_deepen = abap_false iv_deepen = abap_false
@ -298,6 +309,26 @@ CLASS lcl_branch_overview IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD determine_tags.
FIELD-SYMBOLS: <ls_tag> TYPE lcl_git_branch_list=>ty_git_branch,
<ls_commit> TYPE lcl_branch_overview=>ty_commit.
LOOP AT gt_tags ASSIGNING <ls_tag>.
READ TABLE gt_commits WITH KEY sha1 = <ls_tag>-sha1
ASSIGNING <ls_commit>.
CHECK sy-subrc = 0.
INSERT replace( val = <ls_tag>-name
sub = zif_abapgit_definitions=>gc_tag_prefix
with = `` ) INTO TABLE <ls_commit>-tags.
ENDLOOP.
ENDMETHOD.
ENDCLASS. ENDCLASS.
*********************** ***********************
@ -412,6 +443,7 @@ CLASS lcl_gui_page_boverview IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD body. METHOD body.
DATA: tag 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.
@ -470,10 +502,18 @@ CLASS lcl_gui_page_boverview IMPLEMENTATION.
escape_message( <ls_commit>-message ) escape_message( <ls_commit>-message )
}", dotColor: "black", dotSize: 15, messageHashDisplay: false, messageAuthorDisplay: false\});| ). }", dotColor: "black", dotSize: 15, messageHashDisplay: false, messageAuthorDisplay: false\});| ).
ELSEIF <ls_commit>-merge IS INITIAL. ELSEIF <ls_commit>-merge IS INITIAL.
" gitgraph doesn't support multiple tags per commit yet.
" Therefore we concatenate them.
" https://github.com/nicoespeon/gitgraph.js/issues/143
tag = concat_lines_of( table = <ls_commit>-tags
sep = ` | ` ).
ro_html->add( |{ escape_branch( <ls_commit>-branch ) }.commit(\{message: "{ ro_html->add( |{ escape_branch( <ls_commit>-branch ) }.commit(\{message: "{
escape_message( <ls_commit>-message ) }", author: "{ escape_message( <ls_commit>-message ) }", author: "{
<ls_commit>-author }", sha1: "{ <ls_commit>-author }", sha1: "{
<ls_commit>-sha1(7) }"\});| ). <ls_commit>-sha1(7) }", tag: "{ tag }"\});| ).
ELSE. ELSE.
ro_html->add( |{ escape_branch( <ls_commit>-merge ) }.merge({ ro_html->add( |{ escape_branch( <ls_commit>-merge ) }.merge({
escape_branch( <ls_commit>-branch ) }, \{message: "{ escape_branch( <ls_commit>-branch ) }, \{message: "{

View File

@ -137,7 +137,13 @@ CLASS lcl_popups DEFINITION FINAL.
EXPORTING EXPORTING
ev_url TYPE abaptxt255-line ev_url TYPE abaptxt255-line
ev_package TYPE tdevc-devclass ev_package TYPE tdevc-devclass
ev_branch TYPE textl-line. ev_branch TYPE textl-line,
remove_tag_prefix
IMPORTING
iv_text TYPE string
RETURNING
VALUE(rv_text) TYPE spopli-varoption.
ENDCLASS. ENDCLASS.
@ -302,21 +308,18 @@ CLASS lcl_popups IMPLEMENTATION.
METHOD create_tag_popup. METHOD create_tag_popup.
DATA: lv_answer TYPE c LENGTH 1, DATA: lv_answer TYPE c LENGTH 1,
lt_fields TYPE TABLE OF sval, lt_fields TYPE TABLE OF sval.
lv_text_question TYPE string.
FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields. FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
CLEAR: ev_name, ev_cancel. CLEAR: ev_name, ev_cancel.
lv_text_question = `You create a tag from current commit ` && iv_sha1(7) && ` continue?`. add_field( EXPORTING iv_tabname = 'TOAVALUE'
iv_fieldname = 'REFER_CODE'
lv_answer = lcl_popups=>popup_to_confirm( titlebar = `Create a tag?` iv_fieldtext = 'SHA'
text_question = lv_text_question ). iv_value = iv_sha1(7)
IF lv_answer <> '1'. iv_field_attr = '05'
ev_cancel = abap_true. CHANGING ct_fields = lt_fields ).
RETURN.
ENDIF.
add_field( EXPORTING iv_tabname = 'TEXTL' add_field( EXPORTING iv_tabname = 'TEXTL'
iv_fieldname = 'LINE' iv_fieldname = 'LINE'
@ -341,7 +344,8 @@ CLASS lcl_popups IMPLEMENTATION.
IF lv_answer = 'A'. IF lv_answer = 'A'.
ev_cancel = abap_true. ev_cancel = abap_true.
ELSE. ELSE.
READ TABLE lt_fields INDEX 1 ASSIGNING <ls_field>. READ TABLE lt_fields WITH KEY fieldname = 'LINE'
ASSIGNING <ls_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
ev_name = |{ zif_abapgit_definitions=>gc_tag_prefix }{ <ls_field>-value }|. ev_name = |{ zif_abapgit_definitions=>gc_tag_prefix }{ <ls_field>-value }|.
ENDIF. ENDIF.
@ -591,14 +595,16 @@ CLASS lcl_popups IMPLEMENTATION.
lo_branches = lcl_git_transport=>branches( iv_url ). lo_branches = lcl_git_transport=>branches( iv_url ).
lt_tags = lo_branches->get_tags_only( ). lt_tags = lo_branches->get_tags_only( ).
IF lines( lt_tags ) = 0.
zcx_abapgit_exception=>raise( `There are no tags for this repository` ).
ENDIF.
IF iv_select_mode = abap_true. IF iv_select_mode = abap_true.
LOOP AT lt_tags ASSIGNING <ls_tag>. LOOP AT lt_tags ASSIGNING <ls_tag>.
INSERT INITIAL LINE INTO lt_selection INDEX 1 ASSIGNING <ls_sel>. INSERT INITIAL LINE INTO lt_selection INDEX 1 ASSIGNING <ls_sel>.
<ls_sel>-varoption = replace( val = <ls_tag>-name <ls_sel>-varoption = remove_tag_prefix( <ls_tag>-name ).
sub = zif_abapgit_definitions=>gc_tag_prefix
with = '' ).
ENDLOOP. ENDLOOP.
@ -639,9 +645,7 @@ CLASS lcl_popups IMPLEMENTATION.
LOOP AT lt_tags ASSIGNING <ls_tag>. LOOP AT lt_tags ASSIGNING <ls_tag>.
<ls_tag>-name = replace( val = <ls_tag>-name <ls_tag>-name = remove_tag_prefix( <ls_tag>-name ).
sub = zif_abapgit_definitions=>gc_tag_prefix
with = '' ).
<ls_tag>-sha1 = <ls_tag>-sha1(7). <ls_tag>-sha1 = <ls_tag>-sha1(7).
ENDLOOP. ENDLOOP.
@ -1225,4 +1229,15 @@ CLASS lcl_popups IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD remove_tag_prefix.
rv_text = iv_text.
REPLACE FIRST OCCURRENCE OF zif_abapgit_definitions=>gc_tag_prefix
IN rv_text
WITH ''.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -155,6 +155,7 @@ INTERFACE zif_abapgit_definitions
commit TYPE zif_abapgit_definitions=>ty_type VALUE 'commit', "#EC NOTEXT commit TYPE zif_abapgit_definitions=>ty_type VALUE 'commit', "#EC NOTEXT
tree TYPE zif_abapgit_definitions=>ty_type VALUE 'tree', "#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 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 blob TYPE zif_abapgit_definitions=>ty_type VALUE 'blob', "#EC NOTEXT
END OF gc_type . END OF gc_type .
CONSTANTS: CONSTANTS: