mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 04:36:49 +08:00
commit
f04d774e09
|
@ -55,7 +55,9 @@ INCLUDE zabapgit_sap_package.
|
|||
CLASS lcl_repo_online DEFINITION DEFERRED.
|
||||
|
||||
INCLUDE zabapgit_stage.
|
||||
INCLUDE zabapgit_git_helpers.
|
||||
INCLUDE zabapgit_repo.
|
||||
INCLUDE zabapgit_git.
|
||||
INCLUDE zabapgit_stage_logic.
|
||||
INCLUDE zabapgit_objects.
|
||||
INCLUDE zabapgit_tadir.
|
||||
|
@ -103,7 +105,6 @@ INCLUDE zabapgit_object_wdyn.
|
|||
INCLUDE zabapgit_object_webi.
|
||||
INCLUDE zabapgit_object_xslt.
|
||||
|
||||
INCLUDE zabapgit_git.
|
||||
INCLUDE zabapgit_repo_impl.
|
||||
INCLUDE zabapgit_background.
|
||||
INCLUDE zabapgit_zip.
|
||||
|
|
|
@ -54,7 +54,7 @@ FORM branch_popup TABLES tt_fields TYPE ty_sval_tt
|
|||
DATA: lv_url TYPE string,
|
||||
lx_error TYPE REF TO lcx_exception,
|
||||
ls_package_data TYPE scompkdtln,
|
||||
ls_branch TYPE lcl_git_transport=>ty_branch_list.
|
||||
ls_branch TYPE lcl_git_branch_list=>ty_git_branch.
|
||||
|
||||
FIELD-SYMBOLS: <ls_furl> LIKE LINE OF tt_fields,
|
||||
<ls_fbranch> LIKE LINE OF tt_fields.
|
||||
|
|
|
@ -7,22 +7,15 @@ CLASS ltcl_git_pack DEFINITION DEFERRED.
|
|||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_transport DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_git_transport DEFINITION FINAL.
|
||||
|
||||
CLASS lcl_git_transport DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
TYPES: BEGIN OF ty_branch_list,
|
||||
sha1 TYPE ty_sha1,
|
||||
name TYPE string,
|
||||
END OF ty_branch_list.
|
||||
TYPES: ty_branch_list_tt TYPE STANDARD TABLE OF ty_branch_list WITH DEFAULT KEY.
|
||||
|
||||
* remote to local
|
||||
CLASS-METHODS upload_pack
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||
iv_deepen TYPE abap_bool DEFAULT abap_true
|
||||
it_branches TYPE ty_branch_list_tt OPTIONAL
|
||||
it_branches TYPE lcl_git_branch_list=>ty_git_branch_list_tt OPTIONAL
|
||||
EXPORTING et_objects TYPE ty_objects_tt
|
||||
ev_branch TYPE ty_sha1
|
||||
RAISING lcx_exception.
|
||||
|
@ -38,11 +31,12 @@ CLASS lcl_git_transport DEFINITION FINAL.
|
|||
|
||||
CLASS-METHODS branches
|
||||
IMPORTING iv_url TYPE string
|
||||
RETURNING VALUE(rt_branch_list) TYPE ty_branch_list_tt
|
||||
RETURNING VALUE(ro_branch_list) TYPE REF TO lcl_git_branch_list
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS class_constructor.
|
||||
|
||||
|
||||
PRIVATE SECTION.
|
||||
CLASS-DATA: gv_agent TYPE string.
|
||||
|
||||
|
@ -55,12 +49,7 @@ CLASS lcl_git_transport DEFINITION FINAL.
|
|||
IMPORTING iv_url TYPE string
|
||||
iv_service TYPE string
|
||||
EXPORTING ei_client TYPE REF TO if_http_client
|
||||
et_branch_list TYPE ty_branch_list_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS pkt_string
|
||||
IMPORTING iv_string TYPE string
|
||||
RETURNING VALUE(rv_pkt) TYPE string
|
||||
eo_branch_list TYPE REF TO lcl_git_branch_list
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS find_branch
|
||||
|
@ -76,16 +65,6 @@ CLASS lcl_git_transport DEFINITION FINAL.
|
|||
CHANGING cv_data TYPE xstring
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS length_utf8_hex
|
||||
IMPORTING iv_data TYPE xstring
|
||||
RETURNING VALUE(rv_len) TYPE i
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS parse_branch_list
|
||||
IMPORTING iv_data TYPE string
|
||||
RETURNING VALUE(rt_list) TYPE ty_branch_list_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS set_headers
|
||||
IMPORTING iv_url TYPE string
|
||||
iv_service TYPE string
|
||||
|
@ -96,9 +75,6 @@ CLASS lcl_git_transport DEFINITION FINAL.
|
|||
IMPORTING ii_client TYPE REF TO if_http_client
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS get_null
|
||||
RETURNING VALUE(rv_c) TYPE char1.
|
||||
|
||||
CLASS-METHODS send_receive
|
||||
IMPORTING ii_client TYPE REF TO if_http_client
|
||||
RAISING lcx_exception.
|
||||
|
@ -251,20 +227,6 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "set_headers
|
||||
|
||||
METHOD get_null.
|
||||
|
||||
DATA: lv_x(4) TYPE x VALUE '00000000',
|
||||
lv_z(2) TYPE c.
|
||||
|
||||
FIELD-SYMBOLS <lv_y> TYPE c.
|
||||
|
||||
|
||||
ASSIGN lv_x TO <lv_y> CASTING.
|
||||
lv_z = <lv_y>.
|
||||
rv_c = lv_z(1).
|
||||
|
||||
ENDMETHOD. "get_null
|
||||
|
||||
METHOD check_http_200.
|
||||
|
||||
DATA: lv_code TYPE i.
|
||||
|
@ -335,52 +297,9 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "acquire_login_details
|
||||
|
||||
METHOD parse_branch_list.
|
||||
|
||||
DATA: lt_result TYPE TABLE OF string,
|
||||
lv_hash TYPE ty_sha1,
|
||||
lv_name TYPE string,
|
||||
lv_foo TYPE string ##needed,
|
||||
lv_char TYPE c,
|
||||
lv_data LIKE LINE OF lt_result.
|
||||
|
||||
FIELD-SYMBOLS: <ls_branch> LIKE LINE OF rt_list.
|
||||
|
||||
|
||||
SPLIT iv_data AT gc_newline INTO TABLE lt_result.
|
||||
LOOP AT lt_result INTO lv_data.
|
||||
IF sy-tabix = 1.
|
||||
CONTINUE. " current loop
|
||||
ELSEIF sy-tabix = 2 AND strlen( lv_data ) > 49.
|
||||
lv_hash = lv_data+8.
|
||||
lv_name = lv_data+49.
|
||||
lv_char = get_null( ).
|
||||
SPLIT lv_name AT lv_char INTO lv_name lv_foo.
|
||||
ELSEIF sy-tabix > 2 AND strlen( lv_data ) > 45.
|
||||
lv_hash = lv_data+4.
|
||||
lv_name = lv_data+45.
|
||||
ELSEIF sy-tabix = 2 AND strlen( lv_data ) = 8 AND lv_data(8) = '00000000'.
|
||||
lcx_exception=>raise( 'No branches, create branch manually by adding file' ).
|
||||
ELSE.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
IF lv_name CP 'refs/pull/*'.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
APPEND INITIAL LINE TO rt_list ASSIGNING <ls_branch>.
|
||||
<ls_branch>-sha1 = lv_hash.
|
||||
<ls_branch>-name = lv_name.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "parse_branch_list
|
||||
|
||||
METHOD find_branch.
|
||||
|
||||
DATA: lt_branch_list TYPE ty_branch_list_tt,
|
||||
ls_branch_list LIKE LINE OF lt_branch_list.
|
||||
|
||||
DATA: lo_branch_list TYPE REF TO lcl_git_branch_list.
|
||||
|
||||
branch_list(
|
||||
EXPORTING
|
||||
|
@ -388,20 +307,10 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
iv_service = iv_service
|
||||
IMPORTING
|
||||
ei_client = ei_client
|
||||
et_branch_list = lt_branch_list ).
|
||||
eo_branch_list = lo_branch_list ).
|
||||
|
||||
IF ev_branch IS SUPPLIED.
|
||||
IF iv_branch_name IS INITIAL.
|
||||
lcx_exception=>raise( 'branch empty' ).
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_branch_list INTO ls_branch_list
|
||||
WITH KEY name = iv_branch_name.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'Branch not found' ).
|
||||
ENDIF.
|
||||
|
||||
ev_branch = ls_branch_list-sha1.
|
||||
ev_branch = lo_branch_list->find_by_name( iv_branch_name )-sha1.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "find_branch
|
||||
|
@ -417,7 +326,7 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
iv_service = c_service-upload
|
||||
IMPORTING
|
||||
ei_client = li_client
|
||||
et_branch_list = rt_branch_list ).
|
||||
eo_branch_list = ro_branch_list ).
|
||||
li_client->close( ).
|
||||
|
||||
ENDMETHOD. "branches
|
||||
|
@ -470,9 +379,9 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
ii_client = ei_client ).
|
||||
|
||||
lv_data = ei_client->response->get_cdata( ).
|
||||
et_branch_list = parse_branch_list( lv_data ).
|
||||
create object eo_branch_list exporting iv_data = lv_data.
|
||||
|
||||
ENDMETHOD. "ref_discovery
|
||||
ENDMETHOD. "branch_list
|
||||
|
||||
METHOD send_receive.
|
||||
|
||||
|
@ -505,7 +414,6 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "send_receive
|
||||
|
||||
|
||||
METHOD receive_pack.
|
||||
|
||||
DATA: li_client TYPE REF TO if_http_client,
|
||||
|
@ -538,11 +446,11 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
iv_new &&
|
||||
` ` &&
|
||||
iv_branch_name &&
|
||||
get_null( ) &&
|
||||
lcl_git_utils=>get_null( ) &&
|
||||
` ` &&
|
||||
lv_cap_list &&
|
||||
gc_newline. "#EC NOTEXT
|
||||
lv_cmd_pkt = pkt_string( lv_line ).
|
||||
lv_cmd_pkt = lcl_git_utils=>pkt_string( lv_line ).
|
||||
|
||||
lv_buffer = lv_cmd_pkt && '0000'.
|
||||
lv_tmp = lcl_convert=>string_to_xstring_utf8( lv_buffer ).
|
||||
|
@ -566,38 +474,6 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "receive_pack
|
||||
|
||||
METHOD length_utf8_hex.
|
||||
|
||||
DATA: lv_xstring TYPE xstring,
|
||||
lv_string TYPE string,
|
||||
lv_char4 TYPE c LENGTH 4,
|
||||
lv_x TYPE x LENGTH 2,
|
||||
lo_obj TYPE REF TO cl_abap_conv_in_ce,
|
||||
lv_len TYPE int4.
|
||||
|
||||
* hmm, can this be done easier?
|
||||
|
||||
lv_xstring = iv_data(4).
|
||||
|
||||
lo_obj = cl_abap_conv_in_ce=>create(
|
||||
input = lv_xstring
|
||||
encoding = 'UTF-8' ).
|
||||
lv_len = xstrlen( lv_xstring ).
|
||||
|
||||
TRY.
|
||||
lo_obj->read( EXPORTING n = lv_len
|
||||
IMPORTING data = lv_string ).
|
||||
CATCH cx_sy_conversion_codepage.
|
||||
lcx_exception=>raise( 'error converting to hex, LENGTH_UTF8_HEX' ).
|
||||
ENDTRY.
|
||||
|
||||
lv_char4 = lv_string.
|
||||
TRANSLATE lv_char4 TO UPPER CASE.
|
||||
lv_x = lv_char4.
|
||||
rv_len = lv_x.
|
||||
|
||||
ENDMETHOD. "length_utf8_hex
|
||||
|
||||
METHOD parse.
|
||||
|
||||
CONSTANTS: lc_band1 TYPE x VALUE '01'.
|
||||
|
@ -608,7 +484,7 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
|
||||
|
||||
WHILE xstrlen( cv_data ) >= 4.
|
||||
lv_len = length_utf8_hex( cv_data ).
|
||||
lv_len = lcl_git_utils=>length_utf8_hex( cv_data ).
|
||||
|
||||
IF lv_len > xstrlen( cv_data ).
|
||||
lcx_exception=>raise( 'parse, string length too large' ).
|
||||
|
@ -641,7 +517,7 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
lv_xstring TYPE xstring,
|
||||
lv_line TYPE string,
|
||||
lv_pack TYPE xstring,
|
||||
lt_branches TYPE ty_branch_list_tt,
|
||||
lt_branches TYPE lcl_git_branch_list=>ty_git_branch_list_tt,
|
||||
lv_capa TYPE string.
|
||||
|
||||
FIELD-SYMBOLS: <ls_branch> LIKE LINE OF lt_branches.
|
||||
|
@ -678,11 +554,11 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
lv_line = 'want' && ` ` && <ls_branch>-sha1
|
||||
&& gc_newline. "#EC NOTEXT
|
||||
ENDIF.
|
||||
lv_buffer = lv_buffer && pkt_string( lv_line ).
|
||||
lv_buffer = lv_buffer && lcl_git_utils=>pkt_string( lv_line ).
|
||||
ENDLOOP.
|
||||
|
||||
IF iv_deepen = abap_true.
|
||||
lv_buffer = lv_buffer && pkt_string( 'deepen 1' && gc_newline ). "#EC NOTEXT
|
||||
lv_buffer = lv_buffer && lcl_git_utils=>pkt_string( 'deepen 1' && gc_newline ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
||||
lv_buffer = lv_buffer
|
||||
|
@ -707,28 +583,10 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "upload_pack
|
||||
|
||||
METHOD pkt_string.
|
||||
|
||||
DATA: lv_x TYPE x,
|
||||
lv_len TYPE i.
|
||||
|
||||
|
||||
lv_len = strlen( iv_string ).
|
||||
|
||||
IF lv_len >= 255.
|
||||
lcx_exception=>raise( 'PKT, todo' ).
|
||||
ENDIF.
|
||||
|
||||
lv_x = lv_len + 4.
|
||||
|
||||
rv_pkt = rv_pkt && '00' && lv_x && iv_string.
|
||||
|
||||
ENDMETHOD. "pkt
|
||||
|
||||
ENDCLASS. "lcl_transport IMPLEMENTATION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_pack IMPLEMENTATION
|
||||
* CLASS lcl_git_pack IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -1438,7 +1296,7 @@ CLASS lcl_git_porcelain DEFINITION FINAL FRIENDS ltcl_git_porcelain.
|
|||
|
||||
CLASS-METHODS delete_branch
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||
is_branch TYPE lcl_git_transport=>ty_branch_list
|
||||
is_branch TYPE lcl_git_branch_list=>ty_git_branch
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS full_tree
|
||||
|
@ -1627,7 +1485,7 @@ CLASS lcl_git_porcelain IMPLEMENTATION.
|
|||
lv_sha1 TYPE ty_sha1,
|
||||
lt_trees TYPE ty_trees_tt,
|
||||
lt_objects TYPE ty_objects_tt,
|
||||
lt_branches TYPE lcl_git_transport=>ty_branch_list_tt,
|
||||
lt_branches TYPE lcl_git_branch_list=>ty_git_branch_list_tt,
|
||||
lt_stage TYPE lcl_stage=>ty_stage_tt.
|
||||
|
||||
FIELD-SYMBOLS: <ls_stage> LIKE LINE OF lt_stage,
|
||||
|
|
342
src/zabapgit_git_helpers.prog.abap
Normal file
342
src/zabapgit_git_helpers.prog.abap
Normal file
|
@ -0,0 +1,342 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_GIT_HELPERS
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_git_utils
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_git_utils DEFINITION FINAL. " > Maybe better move to lcl_git_pack ??
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS get_null
|
||||
RETURNING VALUE(rv_c) TYPE char1.
|
||||
|
||||
CLASS-METHODS pkt_string
|
||||
IMPORTING iv_string TYPE string
|
||||
RETURNING VALUE(rv_pkt) TYPE string
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS length_utf8_hex
|
||||
IMPORTING iv_data TYPE xstring
|
||||
RETURNING VALUE(rv_len) TYPE i
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_git_utils
|
||||
|
||||
CLASS lcl_git_utils IMPLEMENTATION.
|
||||
|
||||
METHOD get_null.
|
||||
|
||||
DATA: lv_x(4) TYPE x VALUE '00000000',
|
||||
lv_z(2) TYPE c.
|
||||
|
||||
FIELD-SYMBOLS <lv_y> TYPE c.
|
||||
|
||||
|
||||
ASSIGN lv_x TO <lv_y> CASTING.
|
||||
lv_z = <lv_y>.
|
||||
rv_c = lv_z(1).
|
||||
|
||||
ENDMETHOD. "get_null
|
||||
|
||||
METHOD length_utf8_hex.
|
||||
|
||||
DATA: lv_xstring TYPE xstring,
|
||||
lv_string TYPE string,
|
||||
lv_char4 TYPE c LENGTH 4,
|
||||
lv_x TYPE x LENGTH 2,
|
||||
lo_obj TYPE REF TO cl_abap_conv_in_ce,
|
||||
lv_len TYPE int4.
|
||||
|
||||
* hmm, can this be done easier?
|
||||
|
||||
lv_xstring = iv_data(4).
|
||||
|
||||
lo_obj = cl_abap_conv_in_ce=>create(
|
||||
input = lv_xstring
|
||||
encoding = 'UTF-8' ).
|
||||
lv_len = xstrlen( lv_xstring ).
|
||||
|
||||
TRY.
|
||||
lo_obj->read( EXPORTING n = lv_len
|
||||
IMPORTING data = lv_string ).
|
||||
CATCH cx_sy_conversion_codepage.
|
||||
lcx_exception=>raise( 'error converting to hex, LENGTH_UTF8_HEX' ).
|
||||
ENDTRY.
|
||||
|
||||
lv_char4 = lv_string.
|
||||
TRANSLATE lv_char4 TO UPPER CASE.
|
||||
lv_x = lv_char4.
|
||||
rv_len = lv_x.
|
||||
|
||||
ENDMETHOD. "length_utf8_hex
|
||||
|
||||
METHOD pkt_string.
|
||||
|
||||
DATA: lv_x TYPE x,
|
||||
lv_len TYPE i.
|
||||
|
||||
|
||||
lv_len = strlen( iv_string ).
|
||||
|
||||
IF lv_len >= 255.
|
||||
lcx_exception=>raise( 'PKT, todo' ).
|
||||
ENDIF.
|
||||
|
||||
lv_x = lv_len + 4.
|
||||
|
||||
rv_pkt = rv_pkt && '00' && lv_x && iv_string.
|
||||
|
||||
ENDMETHOD. "pkt_string
|
||||
|
||||
ENDCLASS. "lcl_git_utils
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_git_branch_list DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_git_branch_list DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
TYPES: ty_git_branch_type TYPE char2.
|
||||
TYPES: BEGIN OF ty_git_branch,
|
||||
sha1 TYPE ty_sha1,
|
||||
name TYPE string,
|
||||
type TYPE ty_git_branch_type,
|
||||
is_head TYPE abap_bool,
|
||||
display_name TYPE string,
|
||||
END OF ty_git_branch.
|
||||
TYPES: ty_git_branch_list_tt TYPE STANDARD TABLE OF ty_git_branch WITH DEFAULT KEY.
|
||||
|
||||
CONSTANTS: BEGIN OF c_type,
|
||||
branch TYPE ty_git_branch_type VALUE 'HD',
|
||||
tag TYPE ty_git_branch_type VALUE 'TG',
|
||||
other TYPE ty_git_branch_type VALUE 'ZZ',
|
||||
END OF c_type.
|
||||
CONSTANTS HEAD_NAME TYPE string VALUE 'HEAD'.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING iv_data TYPE string
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS find_by_name
|
||||
IMPORTING iv_branch_name TYPE clike
|
||||
RETURNING VALUE(rs_branch) TYPE ty_git_branch
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS get_head " For potential future use
|
||||
RETURNING VALUE(rs_branch) TYPE ty_git_branch
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS get_branches_only
|
||||
RETURNING VALUE(rt_branches) TYPE ty_git_branch_list_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS get_tags_only " For potential future use
|
||||
RETURNING VALUE(rt_branches) TYPE ty_git_branch_list_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS is_ignored
|
||||
IMPORTING iv_branch_name TYPE clike
|
||||
RETURNING VALUE(rv_ignore) TYPE abap_bool.
|
||||
|
||||
CLASS-METHODS get_display_name
|
||||
IMPORTING iv_branch_name TYPE clike
|
||||
RETURNING VALUE(rv_display_name) TYPE string.
|
||||
|
||||
CLASS-METHODS get_type
|
||||
IMPORTING iv_branch_name TYPE clike
|
||||
RETURNING VALUE(rv_type) TYPE ty_git_branch_type.
|
||||
|
||||
CLASS-METHODS complete_heads_branch_name
|
||||
IMPORTING iv_branch_name TYPE clike
|
||||
RETURNING VALUE(rv_name) TYPE string.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA mt_branches TYPE ty_git_branch_list_tt.
|
||||
DATA mv_head_symref TYPE string.
|
||||
|
||||
CLASS-METHODS parse_branch_list
|
||||
IMPORTING iv_data TYPE string
|
||||
EXPORTING et_list TYPE ty_git_branch_list_tt
|
||||
ev_head_symref TYPE string
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS parse_head_params
|
||||
IMPORTING iv_data TYPE string
|
||||
EXPORTING ev_head_symref TYPE string.
|
||||
|
||||
ENDCLASS. "lcl_git_branch_list
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_git_branch_list IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_git_branch_list IMPLEMENTATION.
|
||||
|
||||
METHOD constructor.
|
||||
parse_branch_list(
|
||||
EXPORTING iv_data = iv_data
|
||||
IMPORTING et_list = me->mt_branches
|
||||
ev_head_symref = me->mv_head_symref ).
|
||||
ENDMETHOD. "create
|
||||
|
||||
METHOD find_by_name.
|
||||
|
||||
IF iv_branch_name IS INITIAL.
|
||||
lcx_exception=>raise( 'Branch name empty' ).
|
||||
ENDIF.
|
||||
|
||||
READ TABLE mt_branches INTO rs_branch
|
||||
WITH KEY name = iv_branch_name.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'Branch not found' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "find_by_name
|
||||
|
||||
METHOD get_head.
|
||||
|
||||
IF mv_head_symref IS NOT INITIAL.
|
||||
rs_branch = find_by_name( mv_head_symref ).
|
||||
ELSE.
|
||||
rs_branch = find_by_name( HEAD_NAME ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "get_head
|
||||
|
||||
METHOD parse_branch_list.
|
||||
|
||||
DATA: lt_result TYPE TABLE OF string,
|
||||
lv_hash TYPE ty_sha1,
|
||||
lv_name TYPE string,
|
||||
lv_head_params TYPE string,
|
||||
lv_char TYPE c,
|
||||
lv_data LIKE LINE OF lt_result.
|
||||
|
||||
FIELD-SYMBOLS: <ls_branch> LIKE LINE OF et_list.
|
||||
|
||||
CLEAR: et_list, ev_head_symref.
|
||||
|
||||
SPLIT iv_data AT gc_newline INTO TABLE lt_result.
|
||||
|
||||
LOOP AT lt_result INTO lv_data.
|
||||
IF sy-tabix = 1.
|
||||
CONTINUE. " current loop
|
||||
ELSEIF sy-tabix = 2 AND strlen( lv_data ) > 49.
|
||||
lv_hash = lv_data+8.
|
||||
lv_name = lv_data+49.
|
||||
lv_char = lcl_git_utils=>get_null( ).
|
||||
|
||||
SPLIT lv_name AT lv_char INTO lv_name lv_head_params.
|
||||
parse_head_params(
|
||||
EXPORTING iv_data = lv_head_params
|
||||
IMPORTING ev_head_symref = ev_head_symref ).
|
||||
ELSEIF sy-tabix > 2 AND strlen( lv_data ) > 45.
|
||||
lv_hash = lv_data+4.
|
||||
lv_name = lv_data+45.
|
||||
ELSEIF sy-tabix = 2 AND strlen( lv_data ) = 8 AND lv_data(8) = '00000000'.
|
||||
lcx_exception=>raise( 'No branches, create branch manually by adding file' ).
|
||||
ELSE.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
CHECK is_ignored( lv_name ) = abap_false.
|
||||
ASSERT lv_name IS NOT INITIAL.
|
||||
|
||||
APPEND INITIAL LINE TO et_list ASSIGNING <ls_branch>.
|
||||
<ls_branch>-sha1 = lv_hash.
|
||||
<ls_branch>-name = lv_name.
|
||||
<ls_branch>-display_name = get_display_name( lv_name ).
|
||||
<ls_branch>-type = get_type( lv_name ).
|
||||
IF <ls_branch>-name = HEAD_NAME OR <ls_branch>-name = ev_head_symref.
|
||||
<ls_branch>-is_head = abap_true.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "parse_branch_list
|
||||
|
||||
METHOD parse_head_params.
|
||||
|
||||
DATA: ls_match TYPE match_result,
|
||||
ls_submatch TYPE submatch_result.
|
||||
|
||||
FIND FIRST OCCURRENCE OF REGEX '\ssymref=HEAD:([^\s]+)' IN iv_data RESULTS ls_match.
|
||||
READ TABLE ls_match-submatches INTO ls_submatch INDEX 1.
|
||||
IF sy-subrc IS INITIAL.
|
||||
ev_head_symref = iv_data+ls_submatch-offset(ls_submatch-length).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "parse_head_params
|
||||
|
||||
METHOD is_ignored.
|
||||
|
||||
IF iv_branch_name EQ 'refs/heads/gh-pages'. " Github pages
|
||||
rv_ignore = abap_true.
|
||||
ENDIF.
|
||||
|
||||
IF iv_branch_name CP 'refs/pull/*'
|
||||
OR iv_branch_name CP 'refs/merge-requests/*'
|
||||
OR iv_branch_name CP 'refs/keep-around/*'
|
||||
OR iv_branch_name CP 'refs/tmp/*'.
|
||||
rv_ignore = abap_true.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "is_ignored
|
||||
|
||||
METHOD get_display_name.
|
||||
rv_display_name = iv_branch_name.
|
||||
|
||||
IF rv_display_name CP 'refs/heads/*'.
|
||||
REPLACE FIRST OCCURRENCE OF 'refs/heads/' IN rv_display_name WITH ''.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF rv_display_name CP 'refs/tags/*'.
|
||||
REPLACE FIRST OCCURRENCE OF 'refs/' IN rv_display_name WITH ''.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "get_display_name
|
||||
|
||||
METHOD get_type.
|
||||
rv_type = c_type-other.
|
||||
|
||||
IF iv_branch_name CP 'refs/heads/*' OR iv_branch_name = HEAD_NAME.
|
||||
rv_type = c_type-branch.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF iv_branch_name CP 'refs/tags/*'.
|
||||
rv_type = c_type-tag.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "get_type
|
||||
|
||||
METHOD complete_heads_branch_name.
|
||||
IF iv_branch_name CP 'refs/heads/*'.
|
||||
rv_name = iv_branch_name.
|
||||
ELSE.
|
||||
rv_name = 'refs/heads/' && iv_branch_name.
|
||||
ENDIF.
|
||||
ENDMETHOD. "complete_heads_branch_name
|
||||
|
||||
METHOD get_branches_only.
|
||||
FIELD-SYMBOLS <branch> LIKE LINE OF mt_branches.
|
||||
|
||||
LOOP AT mt_branches ASSIGNING <branch>.
|
||||
IF <branch>-type = c_type-branch.
|
||||
APPEND <branch> TO rt_branches.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDMETHOD. "get_branches_only
|
||||
|
||||
METHOD get_tags_only.
|
||||
FIELD-SYMBOLS <branch> LIKE LINE OF mt_branches.
|
||||
|
||||
LOOP AT mt_branches ASSIGNING <branch>.
|
||||
IF <branch>-type = c_type-tag.
|
||||
APPEND <branch> TO rt_branches.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDMETHOD. "get_tags_only
|
||||
|
||||
ENDCLASS. "lcl_git_branch_list
|
48
src/zabapgit_git_helpers.prog.xml
Normal file
48
src/zabapgit_git_helpers.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_GIT_HELPERS</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_GIT_HELPERS</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -869,7 +869,7 @@ CLASS lcl_gui_router IMPLEMENTATION.
|
|||
|
||||
lo_repo = lcl_app=>repo_srv( )->new_online(
|
||||
iv_url = lv_url
|
||||
iv_branch_name = 'refs/heads/master'
|
||||
iv_branch_name = 'refs/heads/master' "TODO replace with HEAD ?
|
||||
iv_package = lv_target_package ) ##NO_TEXT.
|
||||
|
||||
lo_repo->status( ). " check for errors
|
||||
|
|
|
@ -30,11 +30,19 @@ CLASS lcl_gui_page_super DEFINITION ABSTRACT.
|
|||
|
||||
PROTECTED SECTION.
|
||||
METHODS render_repo_top
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo
|
||||
iv_show_package TYPE abap_bool DEFAULT abap_true
|
||||
iv_show_branch TYPE abap_bool DEFAULT abap_true
|
||||
iv_branch TYPE string OPTIONAL
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo
|
||||
iv_show_package TYPE abap_bool DEFAULT abap_true
|
||||
iv_show_branch TYPE abap_bool DEFAULT abap_true
|
||||
iv_interactive_branch TYPE abap_bool DEFAULT abap_false
|
||||
iv_branch TYPE string OPTIONAL
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS render_branch_span
|
||||
IMPORTING iv_branch TYPE string
|
||||
io_repo TYPE REF TO lcl_repo_online
|
||||
iv_interactive TYPE abap_bool
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS header
|
||||
|
@ -94,9 +102,13 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
|
|||
IF iv_show_branch = abap_true.
|
||||
ro_html->add( '<img src="img/branch">' ).
|
||||
IF iv_branch IS INITIAL.
|
||||
ro_html->add( |<span>{ lo_repo_online->get_branch_name( ) }</span>| ).
|
||||
ro_html->add( render_branch_span( iv_branch = lo_repo_online->get_branch_name( )
|
||||
io_repo = lo_repo_online
|
||||
iv_interactive = iv_interactive_branch ) ).
|
||||
ELSE.
|
||||
ro_html->add( |<span>{ iv_branch }</span>| ).
|
||||
ro_html->add( render_branch_span( iv_branch = iv_branch
|
||||
io_repo = lo_repo_online
|
||||
iv_interactive = iv_interactive_branch ) ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
@ -111,6 +123,30 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD render_branch_span.
|
||||
DATA: lv_text TYPE string,
|
||||
lv_class TYPE string.
|
||||
|
||||
lv_text = lcl_git_branch_list=>get_display_name( iv_branch ).
|
||||
|
||||
CASE lcl_git_branch_list=>get_type( iv_branch ). "TODO
|
||||
WHEN lcl_git_branch_list=>c_type-branch.
|
||||
WHEN lcl_git_branch_list=>c_type-tag.
|
||||
WHEN OTHERS.
|
||||
ENDCASE.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
IF iv_interactive = abap_true.
|
||||
ro_html->add( |<span class="{ lv_class }">| ).
|
||||
ro_html->add_anchor( iv_act = |switch_branch?{ io_repo->get_key( ) }|
|
||||
iv_txt = lv_text ). "TODO refactor
|
||||
ro_html->add( '</span>' ).
|
||||
ELSE.
|
||||
ro_html->add( |<span class="{ lv_class }">{ lv_text }</span>| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "render_branch_span
|
||||
|
||||
METHOD header.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
@ -321,6 +357,7 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
|
|||
_add '.dropdown:hover .dropdown_content { display: block; }'.
|
||||
_add '.dropdown:hover .dropbtn { color: #79a0d2; }'.
|
||||
|
||||
" REPOSITORY
|
||||
_add '/* REPOSITORY */'.
|
||||
_add 'div.repo {'.
|
||||
_add ' margin-top: 3px;'.
|
||||
|
|
|
@ -37,7 +37,7 @@ CLASS lcl_branch_overview DEFINITION FINAL.
|
|||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS: get_branches
|
||||
RETURNING VALUE(rt_branches) TYPE lcl_git_transport=>ty_branch_list_tt.
|
||||
RETURNING VALUE(rt_branches) TYPE lcl_git_branch_list=>ty_git_branch_list_tt.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
|
@ -57,7 +57,7 @@ CLASS lcl_branch_overview DEFINITION FINAL.
|
|||
RAISING lcx_exception.
|
||||
|
||||
CLASS-DATA:
|
||||
gt_branches TYPE lcl_git_transport=>ty_branch_list_tt,
|
||||
gt_branches TYPE lcl_git_branch_list=>ty_git_branch_list_tt,
|
||||
gt_commits TYPE TABLE OF ty_commit.
|
||||
|
||||
ENDCLASS.
|
||||
|
@ -161,11 +161,8 @@ CLASS lcl_branch_overview IMPLEMENTATION.
|
|||
* get objects directly from git, mo_repo only contains a shallow clone of only
|
||||
* the selected branch
|
||||
|
||||
gt_branches = lcl_git_transport=>branches( io_repo->get_url( ) ).
|
||||
|
||||
DELETE gt_branches WHERE name = 'refs/heads/gh-pages' ##NO_TEXT.
|
||||
DELETE gt_branches WHERE name CP 'refs/tags/*' ##NO_TEXT.
|
||||
DELETE gt_branches WHERE name CP 'refs/pull/*' ##NO_TEXT.
|
||||
"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
|
||||
|
@ -379,7 +376,7 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION.
|
|||
METHOD form_select.
|
||||
|
||||
DATA: lv_name TYPE string,
|
||||
lt_branches TYPE lcl_git_transport=>ty_branch_list_tt.
|
||||
lt_branches TYPE lcl_git_branch_list=>ty_git_branch_list_tt.
|
||||
|
||||
FIELD-SYMBOLS: <ls_branch> LIKE LINE OF lt_branches.
|
||||
|
||||
|
|
|
@ -293,7 +293,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( |<div class="repo" id="repo{ io_repo->get_key( ) }">| ).
|
||||
ro_html->add( render_repo_top( io_repo ) ).
|
||||
ro_html->add( render_repo_top( io_repo = io_repo iv_interactive_branch = abap_true ) ).
|
||||
|
||||
TRY.
|
||||
extract_repo_content( EXPORTING io_repo = io_repo
|
||||
|
|
|
@ -14,8 +14,8 @@ CLASS lcl_merge DEFINITION FINAL.
|
|||
|
||||
TYPES: BEGIN OF ty_merge,
|
||||
repo TYPE REF TO lcl_repo_online,
|
||||
source TYPE lcl_git_transport=>ty_branch_list,
|
||||
target TYPE lcl_git_transport=>ty_branch_list,
|
||||
source TYPE lcl_git_branch_list=>ty_git_branch,
|
||||
target TYPE lcl_git_branch_list=>ty_git_branch,
|
||||
common TYPE ty_ancestor,
|
||||
stree TYPE lcl_git_porcelain=>ty_expanded_tt,
|
||||
ttree TYPE lcl_git_porcelain=>ty_expanded_tt,
|
||||
|
@ -294,29 +294,20 @@ CLASS lcl_merge IMPLEMENTATION.
|
|||
|
||||
METHOD fetch_git.
|
||||
|
||||
DEFINE _find.
|
||||
lv_name = 'refs/heads/' && &1 ##NO_TEXT.
|
||||
READ TABLE lt_branches INTO &2 WITH KEY name = lv_name.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'branch not found' ).
|
||||
ENDIF.
|
||||
APPEND &2 TO lt_upload.
|
||||
END-OF-DEFINITION.
|
||||
DATA: lo_branch_list TYPE REF TO lcl_git_branch_list,
|
||||
lt_upload TYPE lcl_git_branch_list=>ty_git_branch_list_tt.
|
||||
|
||||
DATA: lv_name TYPE string,
|
||||
lt_branches TYPE lcl_git_transport=>ty_branch_list_tt,
|
||||
lt_upload TYPE lcl_git_transport=>ty_branch_list_tt.
|
||||
lo_branch_list = lcl_git_transport=>branches( gs_merge-repo->get_url( ) ).
|
||||
gs_merge-source = lo_branch_list->find_by_name( lcl_git_branch_list=>complete_heads_branch_name( iv_source ) ).
|
||||
gs_merge-target = lo_branch_list->find_by_name( lcl_git_branch_list=>complete_heads_branch_name( iv_target ) ).
|
||||
|
||||
APPEND gs_merge-source TO lt_upload.
|
||||
APPEND gs_merge-target TO lt_upload.
|
||||
|
||||
lt_branches = lcl_git_transport=>branches( gs_merge-repo->get_url( ) ).
|
||||
|
||||
_find iv_source gs_merge-source.
|
||||
_find iv_target gs_merge-target.
|
||||
|
||||
lcl_git_transport=>upload_pack( EXPORTING io_repo = gs_merge-repo
|
||||
iv_deepen = abap_false
|
||||
lcl_git_transport=>upload_pack( EXPORTING io_repo = gs_merge-repo
|
||||
iv_deepen = abap_false
|
||||
it_branches = lt_upload
|
||||
IMPORTING et_objects = gt_objects ).
|
||||
IMPORTING et_objects = gt_objects ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ CLASS lcl_popups DEFINITION.
|
|||
RAISING lcx_exception,
|
||||
branch_list_popup
|
||||
IMPORTING iv_url TYPE string
|
||||
RETURNING VALUE(rs_branch) TYPE lcl_git_transport=>ty_branch_list
|
||||
RETURNING VALUE(rs_branch) TYPE lcl_git_branch_list=>ty_git_branch
|
||||
RAISING lcx_exception,
|
||||
repo_popup
|
||||
IMPORTING iv_url TYPE string
|
||||
|
@ -116,7 +116,7 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
CLEAR ev_cancel.
|
||||
|
||||
* TAB FLD LABEL DEF ATTR
|
||||
_add_dialog_fld 'TEXTL' 'LINE' 'Name' 'refs/heads/branch_name' ''.
|
||||
_add_dialog_fld 'TEXTL' 'LINE' 'Name' 'new_branch_name' ''.
|
||||
|
||||
CALL FUNCTION 'POPUP_GET_VALUES'
|
||||
EXPORTING
|
||||
|
@ -137,7 +137,7 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
ELSE.
|
||||
READ TABLE lt_fields INDEX 1 ASSIGNING <ls_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
ev_name = <ls_field>-value.
|
||||
ev_name = lcl_git_branch_list=>complete_heads_branch_name( <ls_field>-value ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -194,7 +194,7 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
METHOD delete_branch.
|
||||
|
||||
DATA: lo_repo TYPE REF TO lcl_repo_online,
|
||||
ls_branch TYPE lcl_git_transport=>ty_branch_list.
|
||||
ls_branch TYPE lcl_git_branch_list=>ty_git_branch.
|
||||
|
||||
|
||||
lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ).
|
||||
|
@ -220,7 +220,8 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
|
||||
METHOD branch_list_popup.
|
||||
|
||||
DATA: lt_branches TYPE lcl_git_transport=>ty_branch_list_tt,
|
||||
DATA: lo_branches TYPE REF TO lcl_git_branch_list,
|
||||
lt_branches TYPE lcl_git_branch_list=>ty_git_branch_list_tt,
|
||||
lv_answer TYPE c LENGTH 1,
|
||||
lt_selection TYPE TABLE OF spopli.
|
||||
|
||||
|
@ -228,13 +229,20 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
<ls_branch> LIKE LINE OF lt_branches.
|
||||
|
||||
|
||||
lt_branches = lcl_git_transport=>branches( iv_url ).
|
||||
lo_branches = lcl_git_transport=>branches( iv_url ).
|
||||
|
||||
lt_branches = lo_branches->get_branches_only( ).
|
||||
LOOP AT lt_branches ASSIGNING <ls_branch>.
|
||||
APPEND INITIAL LINE TO lt_selection ASSIGNING <ls_sel>.
|
||||
<ls_sel>-varoption = <ls_branch>-name.
|
||||
ENDLOOP.
|
||||
|
||||
* lt_branches = lo_branches->get_tags_only( ).
|
||||
* LOOP AT lt_branches ASSIGNING <ls_branch>.
|
||||
* APPEND INITIAL LINE TO lt_selection ASSIGNING <ls_sel>.
|
||||
* <ls_sel>-varoption = <ls_branch>-name.
|
||||
* ENDLOOP.
|
||||
|
||||
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
|
||||
EXPORTING
|
||||
textline1 = 'Select branch'
|
||||
|
@ -261,8 +269,7 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
READ TABLE lt_selection ASSIGNING <ls_sel> WITH KEY selflag = abap_true.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
READ TABLE lt_branches INTO rs_branch WITH KEY name = <ls_sel>-varoption.
|
||||
ASSERT sy-subrc = 0.
|
||||
rs_branch = lo_branches->find_by_name( <ls_sel>-varoption ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -298,6 +305,7 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
lv_icon_br TYPE icon-name,
|
||||
lt_fields TYPE TABLE OF sval,
|
||||
lv_pattr TYPE spo_fattr,
|
||||
lv_battr TYPE spo_fattr,
|
||||
lv_button2 TYPE svalbutton-buttontext,
|
||||
lv_icon2 TYPE icon-name.
|
||||
|
||||
|
@ -306,15 +314,17 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
|
||||
IF NOT iv_package IS INITIAL.
|
||||
lv_pattr = '05'.
|
||||
lv_battr = '03'.
|
||||
ELSE.
|
||||
lv_battr = '05'.
|
||||
lv_button2 = 'Create package' ##NO_TEXT.
|
||||
lv_icon2 = icon_msg.
|
||||
ENDIF.
|
||||
|
||||
* TAB FLD LABEL DEF ATTR
|
||||
_add_dialog_fld 'ABAPTXT255' 'LINE' 'Git Clone Url' iv_url ''.
|
||||
_add_dialog_fld 'ABAPTXT255' 'LINE' 'Git Clone Url' iv_url lv_pattr.
|
||||
_add_dialog_fld 'TDEVC' 'DEVCLASS' 'Target Package' iv_package lv_pattr.
|
||||
_add_dialog_fld 'TEXTL' 'LINE' 'Branch' iv_branch '05'.
|
||||
_add_dialog_fld 'TEXTL' 'LINE' 'Branch' iv_branch lv_battr.
|
||||
|
||||
lv_icon_ok = icon_okay.
|
||||
lv_icon_br = icon_workflow_fork.
|
||||
|
|
|
@ -80,6 +80,8 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL.
|
|||
RETURNING VALUE(rv_url) TYPE lcl_persistence_repo=>ty_repo-url,
|
||||
get_branch_name
|
||||
RETURNING VALUE(rv_name) TYPE lcl_persistence_repo=>ty_repo-branch_name,
|
||||
get_branches
|
||||
RETURNING VALUE(ro_branches) TYPE REF TO lcl_git_branch_list,
|
||||
set_url
|
||||
IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url
|
||||
RAISING lcx_exception,
|
||||
|
@ -109,7 +111,8 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL.
|
|||
DATA:
|
||||
mt_objects TYPE ty_objects_tt,
|
||||
mv_branch TYPE ty_sha1,
|
||||
mv_initialized TYPE abap_bool.
|
||||
mv_initialized TYPE abap_bool,
|
||||
mo_branches TYPE REF TO lcl_git_branch_list.
|
||||
|
||||
METHODS:
|
||||
handle_stage_ignore
|
||||
|
|
|
@ -73,6 +73,8 @@ CLASS lcl_repo_online IMPLEMENTATION.
|
|||
et_objects = mt_objects
|
||||
ev_branch = mv_branch ).
|
||||
|
||||
mo_branches = lcl_git_transport=>branches( get_url( ) ).
|
||||
|
||||
find_dot_abapgit( ).
|
||||
|
||||
mv_initialized = abap_true.
|
||||
|
@ -105,6 +107,10 @@ CLASS lcl_repo_online IMPLEMENTATION.
|
|||
rv_name = ms_data-branch_name.
|
||||
ENDMETHOD. "get_branch_name
|
||||
|
||||
METHOD get_branches.
|
||||
ro_branches = mo_branches.
|
||||
ENDMETHOD. "get_branches
|
||||
|
||||
METHOD set_url.
|
||||
|
||||
mv_initialized = abap_false.
|
||||
|
|
Loading…
Reference in New Issue
Block a user