Refactoring (#1279)

* URL: rename and add validation method

plus validate url in NEW_ONLINE

* optimize select

* move write protection check

* start refactoring gui away from deserializati/pull

* mvoe ZCL_ABAPGIT_SERVICES_ABAPGIT to UI

* delete ZCL_ABAPGIT_SERVICES_BKG

moved to GUI page

* move ZCL_ABAPGIT_SERVICES_GIT to UI

* move ZCL_ABAPGIT_SERVICES_REPO to UI

* fix indentation

* overwrite popup refactored to UI
This commit is contained in:
Lars Hvam 2018-03-29 14:29:03 +02:00 committed by GitHub
parent 3293fe5461
commit 7152b4281a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 514 additions and 312 deletions

View File

@ -1,25 +1,37 @@
CLASS zcl_abapgit_gui_page_bkg DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_gui_page
FINAL
CREATE PUBLIC INHERITING FROM zcl_abapgit_gui_page.
CREATE PUBLIC .
PUBLIC SECTION.
METHODS:
constructor IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key,
zif_abapgit_gui_page~on_event REDEFINITION.
METHODS constructor
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key .
METHODS zif_abapgit_gui_page~on_event
REDEFINITION .
PROTECTED SECTION.
METHODS render_content REDEFINITION.
PRIVATE SECTION.
DATA:
mv_key TYPE zif_abapgit_persistence=>ty_repo-key.
METHODS:
build_menu
RETURNING VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar,
render_data
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html
RAISING zcx_abapgit_exception.
DATA mv_key TYPE zif_abapgit_persistence=>ty_repo-key .
METHODS build_menu
RETURNING
VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar .
CLASS-METHODS update_task
IMPORTING
!is_bg_task TYPE zcl_abapgit_persist_background=>ty_background
RAISING
zcx_abapgit_exception .
METHODS render_data
RETURNING
VALUE(ro_html) TYPE REF TO zcl_abapgit_html
RAISING
zcx_abapgit_exception .
ENDCLASS.
@ -170,6 +182,25 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BKG IMPLEMENTATION.
ENDMETHOD.
METHOD update_task.
DATA lo_persistence TYPE REF TO zcl_abapgit_persist_background.
CREATE OBJECT lo_persistence.
IF is_bg_task-method = zcl_abapgit_persist_background=>c_method-nothing.
lo_persistence->delete( is_bg_task-key ).
ELSE.
lo_persistence->modify( is_bg_task ).
ENDIF.
MESSAGE 'Saved' TYPE 'S' ##NO_TEXT.
COMMIT WORK.
ENDMETHOD.
METHOD zif_abapgit_gui_page~on_event.
DATA ls_bg_task TYPE zcl_abapgit_persist_background=>ty_background.
@ -178,7 +209,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BKG IMPLEMENTATION.
WHEN zif_abapgit_definitions=>gc_action-bg_update.
ls_bg_task = zcl_abapgit_html_action_utils=>decode_bg_update( iv_getdata ).
ls_bg_task-key = mv_key.
zcl_abapgit_services_bkg=>update_task( ls_bg_task ).
update_task( ls_bg_task ).
ev_state = zif_abapgit_definitions=>gc_event_state-re_render.
ENDCASE.

View File

@ -1183,14 +1183,14 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
lv_finished = abap_true.
TRY.
zcl_abapgit_url=>name( |{ lv_url }| ).
zcl_abapgit_url=>validate( |{ lv_url }| ).
IF iv_freeze_package = abap_false.
zcl_abapgit_repo_srv=>get_instance( )->validate_package( lv_package ).
ENDIF.
CATCH zcx_abapgit_exception INTO lx_error.
MESSAGE lx_error TYPE 'S' DISPLAY LIKE 'E'.
" in case of validation errors we display the popup again
CLEAR: lv_finished.
CLEAR lv_finished.
ENDTRY.
ENDWHILE.

View File

@ -5,37 +5,33 @@ CLASS zcl_abapgit_services_abapgit DEFINITION
PUBLIC SECTION.
CONSTANTS c_abapgit_homepage TYPE string
VALUE 'http://www.abapgit.org' ##NO_TEXT.
CONSTANTS c_abapgit_wikipage TYPE string
VALUE 'http://docs.abapgit.org'.
CONSTANTS c_package_abapgit TYPE devclass
VALUE '$ABAPGIT'.
CONSTANTS c_package_plugins TYPE devclass
VALUE '$ABAPGIT_PLUGINS'.
CONSTANTS c_abapgit_url TYPE string
VALUE 'https://github.com/larshp/abapGit.git'.
CONSTANTS c_plugins_url TYPE string
VALUE 'https://github.com/larshp/abapGit-plugins.git'.
CONSTANTS c_abapgit_homepage TYPE string VALUE 'http://www.abapgit.org' ##NO_TEXT.
CONSTANTS c_abapgit_wikipage TYPE string VALUE 'http://docs.abapgit.org' ##NO_TEXT.
CONSTANTS c_package_abapgit TYPE devclass VALUE '$ABAPGIT' ##NO_TEXT.
CONSTANTS c_package_plugins TYPE devclass VALUE '$ABAPGIT_PLUGINS' ##NO_TEXT.
CONSTANTS c_abapgit_url TYPE string VALUE 'https://github.com/larshp/abapGit.git' ##NO_TEXT.
CONSTANTS c_plugins_url TYPE string VALUE 'https://github.com/larshp/abapGit-plugins.git' ##NO_TEXT.
CLASS-METHODS open_abapgit_homepage
RAISING zcx_abapgit_exception.
RAISING
zcx_abapgit_exception .
CLASS-METHODS open_abapgit_wikipage
RAISING zcx_abapgit_exception.
RAISING
zcx_abapgit_exception .
CLASS-METHODS install_abapgit
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS install_abapgit_pi
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS is_installed
RETURNING VALUE(rv_installed) TYPE abap_bool.
RETURNING
VALUE(rv_installed) TYPE abap_bool .
CLASS-METHODS is_installed_pi
RETURNING VALUE(rv_installed) TYPE abap_bool.
RETURNING
VALUE(rv_installed) TYPE abap_bool .
PRIVATE SECTION.
CLASS-METHODS do_install
@ -84,7 +80,9 @@ CLASS ZCL_ABAPGIT_SERVICES_ABAPGIT IMPLEMENTATION.
lo_repo->initialize( ).
lo_repo->find_remote_dot_abapgit( ).
lo_repo->status( ). " check for errors
lo_repo->deserialize( ).
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
zcl_abapgit_services_repo=>toggle_favorite( lo_repo->get_key( ) ).
ENDIF.

View File

@ -6,7 +6,7 @@
<CLSNAME>ZCL_ABAPGIT_SERVICES_ABAPGIT</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Services</DESCRIPT>
<DESCRIPT>UI - Services</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>

View File

@ -1,58 +1,83 @@
CLASS zcl_abapgit_services_git DEFINITION PUBLIC FINAL CREATE PUBLIC.
CLASS zcl_abapgit_services_git DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES: BEGIN OF ty_commit_fields,
repo_key TYPE zif_abapgit_persistence=>ty_repo-key,
committer_name TYPE string,
committer_email TYPE string,
author_name TYPE string,
author_email TYPE string,
comment TYPE string,
body TYPE string,
END OF ty_commit_fields.
TYPES:
BEGIN OF ty_commit_fields,
repo_key TYPE zif_abapgit_persistence=>ty_repo-key,
committer_name TYPE string,
committer_email TYPE string,
author_name TYPE string,
author_email TYPE string,
comment TYPE string,
body TYPE string,
END OF ty_commit_fields .
CLASS-METHODS pull
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS reset
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS create_branch
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS switch_branch
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS delete_branch
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS create_tag
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS delete_tag
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS switch_tag
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS tag_overview
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS commit
IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online
is_commit TYPE ty_commit_fields
io_stage TYPE REF TO zcl_abapgit_stage
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo_online
!is_commit TYPE ty_commit_fields
!io_stage TYPE REF TO zcl_abapgit_stage
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
ENDCLASS.
@ -239,12 +264,9 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
IF lo_repo->get_local_settings( )-write_protected = abap_true.
zcx_abapgit_exception=>raise( 'Cannot pull. Local code is write-protected by repo config' ).
ENDIF.
lo_repo->refresh( ).
lo_repo->deserialize( ).
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
COMMIT WORK.
@ -301,7 +323,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
ENDIF.
lo_repo->deserialize( ).
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
ENDMETHOD.
@ -331,9 +353,9 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
COMMIT WORK.
lo_repo->deserialize( ).
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
ENDMETHOD. "switch_branch
ENDMETHOD.
METHOD switch_tag.
@ -352,7 +374,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
COMMIT WORK.
lo_repo->deserialize( ).
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
ENDMETHOD.

View File

@ -6,7 +6,7 @@
<CLSNAME>ZCL_ABAPGIT_SERVICES_GIT</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Git services</DESCRIPT>
<DESCRIPT>UI - Git services</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>

View File

@ -1,52 +1,89 @@
CLASS zcl_abapgit_services_repo DEFINITION PUBLIC FINAL CREATE PUBLIC.
CLASS zcl_abapgit_services_repo DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS clone
IMPORTING iv_url TYPE string
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_url TYPE string
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS refresh
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception .
CLASS-METHODS remove
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS purge
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS new_offline
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS remote_attach
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS remote_detach
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS remote_change
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS refresh_local_checksums
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS toggle_favorite
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING zcx_abapgit_exception.
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception .
CLASS-METHODS open_se80
IMPORTING iv_package TYPE devclass
RAISING zcx_abapgit_exception.
IMPORTING
!iv_package TYPE devclass
RAISING
zcx_abapgit_exception .
CLASS-METHODS transport_to_branch
IMPORTING iv_repository_key TYPE zif_abapgit_persistence=>ty_value
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
IMPORTING
!iv_repository_key TYPE zif_abapgit_persistence=>ty_value
RAISING
zcx_abapgit_exception
zcx_abapgit_cancel .
CLASS-METHODS gui_deserialize
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
RAISING
zcx_abapgit_exception .
PRIVATE SECTION.
CLASS-METHODS popup_overwrite
CHANGING
!ct_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt
RAISING
zcx_abapgit_exception .
ENDCLASS.
@ -75,7 +112,8 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
lo_repo->initialize( ).
lo_repo->find_remote_dot_abapgit( ).
lo_repo->status( ). " check for errors
lo_repo->deserialize( ).
gui_deserialize( lo_repo ).
zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( lo_repo->get_key( ) ). " Set default repo for user
@ -84,6 +122,19 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
ENDMETHOD. "clone
METHOD gui_deserialize.
DATA: ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks.
ls_checks = io_repo->deserialize_checks( ).
popup_overwrite( CHANGING ct_overwrite = ls_checks-overwrite ).
io_repo->deserialize( ls_checks ).
ENDMETHOD.
METHOD new_offline.
DATA: lo_repo TYPE REF TO zcl_abapgit_repo,
@ -119,6 +170,50 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
ENDMETHOD. " open_se80.
METHOD popup_overwrite.
DATA: lt_columns TYPE stringtab,
lt_selected LIKE ct_overwrite,
lv_column LIKE LINE OF lt_columns.
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF ct_overwrite.
IF lines( ct_overwrite ) = 0.
RETURN.
ENDIF.
lv_column = 'OBJ_TYPE'.
INSERT lv_column INTO TABLE lt_columns.
lv_column = 'OBJ_NAME'.
INSERT lv_column INTO TABLE lt_columns.
zcl_abapgit_popups=>popup_to_select_from_list(
EXPORTING
it_list = ct_overwrite
i_header_text = |The following Objects have been modified locally.|
&& | Select the Objects which should be overwritten.|
i_select_column_text = 'Overwrite?'
it_columns_to_display = lt_columns
IMPORTING
et_list = lt_selected ).
* todo, it should be possible for the user to click cancel in the popup
LOOP AT ct_overwrite ASSIGNING <ls_overwrite>.
READ TABLE lt_selected WITH KEY
obj_type = <ls_overwrite>-obj_type
obj_name = <ls_overwrite>-obj_name
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
<ls_overwrite>-decision = 'Y'.
ELSE.
<ls_overwrite>-decision = 'N'.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD purge.
DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt,
@ -142,8 +237,8 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
IF lines( lt_tadir ) > 0.
lv_question = |This will DELETE all objects in package { lv_package }|
&& | ({ lines( lt_tadir ) } objects) from the system|. "#EC NOTEXT
lv_question = |This will DELETE all objects in package { lv_package
} ({ lines( lt_tadir ) } objects) from the system|. "#EC NOTEXT
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
titlebar = 'Uninstall'
@ -234,7 +329,9 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
ENDIF.
zcl_abapgit_repo_srv=>get_instance( )->switch_repo_type( iv_key = iv_key iv_offline = abap_false ).
zcl_abapgit_repo_srv=>get_instance( )->switch_repo_type(
iv_key = iv_key
iv_offline = abap_false ).
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lo_repo->set_url( ls_popup-url ).
@ -267,7 +364,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
COMMIT WORK.
ENDMETHOD. "remote_change
ENDMETHOD.
METHOD remote_detach.
@ -292,7 +389,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
COMMIT WORK.
ENDMETHOD. "remote_detach
ENDMETHOD.
METHOD remove.
@ -305,8 +402,8 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_package = lo_repo->get_package( ).
lv_question = |This will remove the repository reference to the package { lv_package }|
&& '. All objects will safely remain in the system.'.
lv_question = |This will remove the repository reference to the package { lv_package
}. All objects will safely remain in the system.|.
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
titlebar = 'Remove'
@ -326,17 +423,18 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
COMMIT WORK.
ENDMETHOD. "remove
ENDMETHOD.
METHOD toggle_favorite.
zcl_abapgit_persistence_user=>get_instance( )->toggle_favorite( iv_key ).
ENDMETHOD. " toggle_favorite.
ENDMETHOD.
METHOD transport_to_branch.
DATA:
lo_repository TYPE REF TO zcl_abapgit_repo_online,
lo_transport_to_branch TYPE REF TO zcl_abapgit_transport_2_branch,
@ -365,5 +463,6 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
io_repository = lo_repository
is_transport_to_branch = ls_transport_to_branch
it_transport_objects = lt_transport_objects ).
ENDMETHOD.
ENDCLASS.

View File

@ -6,7 +6,7 @@
<CLSNAME>ZCL_ABAPGIT_SERVICES_REPO</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Repository services</DESCRIPT>
<DESCRIPT>UI - Repository services</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>

View File

@ -5,23 +5,28 @@ CLASS zcl_abapgit_url DEFINITION
PUBLIC SECTION.
CLASS-METHODS validate
IMPORTING
!iv_url TYPE string
RAISING
zcx_abapgit_exception .
CLASS-METHODS host
IMPORTING
!iv_repo TYPE string
!iv_url TYPE string
RETURNING
VALUE(rv_host) TYPE string
RAISING
zcx_abapgit_exception .
CLASS-METHODS name
IMPORTING
!iv_repo TYPE string
!iv_url TYPE string
RETURNING
VALUE(rv_name) TYPE string
RAISING
zcx_abapgit_exception .
CLASS-METHODS path_name
IMPORTING
!iv_repo TYPE string
!iv_url TYPE string
RETURNING
VALUE(rv_path_name) TYPE string
RAISING
@ -30,7 +35,7 @@ CLASS zcl_abapgit_url DEFINITION
CLASS-METHODS regex
IMPORTING
!iv_repo TYPE string
!iv_url TYPE string
EXPORTING
!ev_host TYPE string
!ev_path TYPE string
@ -46,7 +51,7 @@ CLASS ZCL_ABAPGIT_URL IMPLEMENTATION.
METHOD host.
regex( EXPORTING iv_repo = iv_repo
regex( EXPORTING iv_url = iv_url
IMPORTING ev_host = rv_host ).
ENDMETHOD.
@ -54,7 +59,7 @@ CLASS ZCL_ABAPGIT_URL IMPLEMENTATION.
METHOD name.
regex( EXPORTING iv_repo = iv_repo
regex( EXPORTING iv_url = iv_url
IMPORTING ev_name = rv_name ).
ENDMETHOD.
@ -64,7 +69,7 @@ CLASS ZCL_ABAPGIT_URL IMPLEMENTATION.
DATA: lv_host TYPE string ##NEEDED.
FIND REGEX '(.*://[^/]*)(.*)' IN iv_repo
FIND REGEX '(.*://[^/]*)(.*)' IN iv_url
SUBMATCHES lv_host rv_path_name.
ENDMETHOD.
@ -72,11 +77,18 @@ CLASS ZCL_ABAPGIT_URL IMPLEMENTATION.
METHOD regex.
FIND REGEX '(.*://[^/]*)(.*/)([^\.]*)[\.git]?' IN iv_repo
FIND REGEX '(.*://[^/]*)(.*/)([^\.]*)[\.git]?' IN iv_url
SUBMATCHES ev_host ev_path ev_name.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Malformed URL' ).
ENDIF.
ENDMETHOD.
METHOD validate.
regex( iv_url ).
ENDMETHOD.
ENDCLASS.

View File

@ -263,6 +263,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
DATA: lo_per TYPE REF TO zcl_abapgit_persist_background,
lo_repo TYPE REF TO zcl_abapgit_repo_online,
lt_list TYPE zcl_abapgit_persist_background=>tt_background,
ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks,
lv_repo_name TYPE string.
FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list.
@ -299,7 +300,8 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
CASE <ls_list>-method.
WHEN zcl_abapgit_persist_background=>c_method-pull.
lo_repo->deserialize( ).
* todo, set defaults in ls_checks
lo_repo->deserialize( ls_checks ).
WHEN zcl_abapgit_persist_background=>c_method-push.
push( io_repo = lo_repo
is_settings = <ls_list> ).

View File

@ -28,10 +28,18 @@ CLASS zcl_abapgit_objects DEFINITION
CLASS-METHODS deserialize
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
!is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks
RETURNING
VALUE(rt_accessed_files) TYPE zif_abapgit_definitions=>ty_file_signatures_tt
RAISING
zcx_abapgit_exception .
CLASS-METHODS deserialize_checks
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
RETURNING
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks
RAISING
zcx_abapgit_exception .
CLASS-METHODS delete
IMPORTING
!it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt
@ -73,59 +81,84 @@ CLASS zcl_abapgit_objects DEFINITION
VALUE(rt_types) TYPE ty_types_tt .
PRIVATE SECTION.
CLASS-METHODS files_to_deserialize
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
RETURNING
VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt
RAISING
zcx_abapgit_exception .
CLASS-METHODS check_duplicates
IMPORTING it_files TYPE zif_abapgit_definitions=>ty_files_tt
RAISING zcx_abapgit_exception.
IMPORTING
!it_files TYPE zif_abapgit_definitions=>ty_files_tt
RAISING
zcx_abapgit_exception .
CLASS-METHODS create_object
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
iv_language TYPE spras
is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL
iv_native_only TYPE abap_bool DEFAULT abap_false
RETURNING VALUE(ri_obj) TYPE REF TO zif_abapgit_object
RAISING zcx_abapgit_exception.
CLASS-METHODS
prioritize_deser
IMPORTING it_results TYPE zif_abapgit_definitions=>ty_results_tt
RETURNING VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt.
IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item
!iv_language TYPE spras
!is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL
!iv_native_only TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(ri_obj) TYPE REF TO zif_abapgit_object
RAISING
zcx_abapgit_exception .
CLASS-METHODS prioritize_deser
IMPORTING
!it_results TYPE zif_abapgit_definitions=>ty_results_tt
RETURNING
VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt .
CLASS-METHODS class_name
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
RETURNING VALUE(rv_class_name) TYPE string.
CLASS-METHODS warning_overwrite
CHANGING ct_results TYPE zif_abapgit_definitions=>ty_results_tt
RAISING zcx_abapgit_exception.
IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item
RETURNING
VALUE(rv_class_name) TYPE string .
CLASS-METHODS warning_overwrite_adjust
IMPORTING
!it_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt
CHANGING
!ct_results TYPE zif_abapgit_definitions=>ty_results_tt
RAISING
zcx_abapgit_exception .
CLASS-METHODS warning_overwrite_find
IMPORTING
!it_results TYPE zif_abapgit_definitions=>ty_results_tt
RETURNING
VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt
RAISING
zcx_abapgit_exception .
CLASS-METHODS warning_package
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
iv_package TYPE devclass
RETURNING VALUE(rv_cancel) TYPE abap_bool
RAISING zcx_abapgit_exception.
IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item
!iv_package TYPE devclass
RETURNING
VALUE(rv_cancel) TYPE abap_bool
RAISING
zcx_abapgit_exception .
CLASS-METHODS update_package_tree
IMPORTING iv_package TYPE devclass.
IMPORTING
!iv_package TYPE devclass .
CLASS-METHODS delete_obj
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
RAISING zcx_abapgit_exception.
IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item
RAISING
zcx_abapgit_exception .
CLASS-METHODS compare_remote_to_local
IMPORTING
io_object TYPE REF TO zif_abapgit_object
it_remote TYPE zif_abapgit_definitions=>ty_files_tt
is_result TYPE zif_abapgit_definitions=>ty_result
!io_object TYPE REF TO zif_abapgit_object
!it_remote TYPE zif_abapgit_definitions=>ty_files_tt
!is_result TYPE zif_abapgit_definitions=>ty_result
RAISING
zcx_abapgit_exception.
zcx_abapgit_exception .
CLASS-METHODS deserialize_objects
IMPORTING it_objects TYPE ty_deserialization_tt
iv_ddic TYPE abap_bool DEFAULT abap_false
iv_descr TYPE string
CHANGING ct_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt
RAISING zcx_abapgit_exception.
IMPORTING
!it_objects TYPE ty_deserialization_tt
!iv_ddic TYPE abap_bool DEFAULT abap_false
!iv_descr TYPE string
CHANGING
!ct_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt
RAISING
zcx_abapgit_exception .
ENDCLASS.
@ -352,22 +385,19 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
FIELD-SYMBOLS: <ls_result> TYPE zif_abapgit_definitions=>ty_result,
<ls_deser> LIKE LINE OF lt_late.
lv_package = io_repo->get_package( ).
zcl_abapgit_default_task=>get_instance( )->set( lv_package ).
zcl_abapgit_objects_activation=>clear( ).
lt_remote = io_repo->get_files_remote( ).
lt_results = zcl_abapgit_file_status=>status( io_repo ).
DELETE lt_results WHERE match = abap_true. " Full match
SORT lt_results BY obj_type ASCENDING obj_name ASCENDING.
DELETE ADJACENT DUPLICATES FROM lt_results COMPARING obj_type obj_name.
lt_results = files_to_deserialize( io_repo ).
lt_results = prioritize_deser( lt_results ).
warning_overwrite( CHANGING ct_results = lt_results ).
warning_overwrite_adjust(
EXPORTING it_overwrite = is_checks-overwrite
CHANGING ct_results = lt_results ).
CREATE OBJECT lo_progress
EXPORTING
@ -459,6 +489,18 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
ENDMETHOD. "deserialize
METHOD deserialize_checks.
DATA: lt_results TYPE zif_abapgit_definitions=>ty_results_tt.
lt_results = files_to_deserialize( io_repo ).
rs_checks-overwrite = warning_overwrite_find( lt_results ).
ENDMETHOD.
METHOD deserialize_objects.
DATA: lo_progress TYPE REF TO zcl_abapgit_progress.
@ -504,6 +546,18 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
ENDMETHOD. "exists
METHOD files_to_deserialize.
rt_results = zcl_abapgit_file_status=>status( io_repo ).
DELETE rt_results WHERE match = abap_true. " Full match
SORT rt_results BY obj_type ASCENDING obj_name ASCENDING.
DELETE ADJACENT DUPLICATES FROM rt_results COMPARING obj_type obj_name.
rt_results = prioritize_deser( rt_results ).
ENDMETHOD.
METHOD has_changed_since.
rv_changed = abap_true. " Assume changed
@ -683,56 +737,56 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
ENDMETHOD. "update_package_tree
METHOD warning_overwrite.
METHOD warning_overwrite_adjust.
DATA: lt_results_overwrite LIKE ct_results,
lt_confirmed_overwrite LIKE ct_results,
lt_columns TYPE stringtab,
lv_column LIKE LINE OF lt_columns.
DATA: lt_overwrite LIKE it_overwrite,
ls_overwrite LIKE LINE OF lt_overwrite.
FIELD-SYMBOLS: <ls_result> LIKE LINE OF ct_results.
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF lt_overwrite.
LOOP AT ct_results ASSIGNING <ls_result>
WHERE NOT obj_type IS INITIAL.
IF <ls_result>-lstate IS NOT INITIAL
AND <ls_result>-lstate <> zif_abapgit_definitions=>gc_state-deleted
AND NOT ( <ls_result>-lstate = zif_abapgit_definitions=>gc_state-added
AND <ls_result>-rstate IS INITIAL ).
* make sure to get the current status, as something might have changed in the meanwhile
lt_overwrite = warning_overwrite_find( ct_results ).
"current object has been modified locally, add to table for popup
APPEND <ls_result> TO lt_results_overwrite.
LOOP AT lt_overwrite ASSIGNING <ls_overwrite>.
READ TABLE it_overwrite INTO ls_overwrite WITH KEY
obj_type = <ls_overwrite>-obj_type
obj_name = <ls_overwrite>-obj_name.
IF sy-subrc <> 0 OR ls_overwrite-decision IS INITIAL.
zcx_abapgit_exception=>raise( |Overwrite { <ls_overwrite>-obj_type } {
<ls_overwrite>-obj_name } undecided| ).
ENDIF.
IF ls_overwrite-decision = 'N'.
DELETE ct_results WHERE
obj_type = <ls_overwrite>-obj_type AND
obj_name = <ls_overwrite>-obj_name.
ASSERT sy-subrc = 0.
ENDIF.
ENDLOOP.
IF lines( lt_results_overwrite ) > 0.
ENDMETHOD.
lv_column = `OBJ_TYPE`.
INSERT lv_column INTO TABLE lt_columns.
lv_column = `OBJ_NAME`.
INSERT lv_column INTO TABLE lt_columns.
"all returned objects will be overwritten
zcl_abapgit_popups=>popup_to_select_from_list(
EXPORTING
it_list = lt_results_overwrite
i_header_text = |The following Objects have been modified locally.|
&& | Select the Objects which should be overwritten.|
i_select_column_text = 'Overwrite?'
it_columns_to_display = lt_columns
IMPORTING
et_list = lt_confirmed_overwrite ).
METHOD warning_overwrite_find.
LOOP AT lt_results_overwrite ASSIGNING <ls_result>.
READ TABLE lt_confirmed_overwrite TRANSPORTING NO FIELDS
WITH KEY obj_type = <ls_result>-obj_type
obj_name = <ls_result>-obj_name.
IF sy-subrc <> 0.
DELETE TABLE ct_results FROM <ls_result>.
ENDIF.
ENDLOOP.
ENDIF.
DATA: ls_overwrite LIKE LINE OF rt_overwrite.
FIELD-SYMBOLS: <ls_result> LIKE LINE OF it_results.
LOOP AT it_results ASSIGNING <ls_result>
WHERE NOT obj_type IS INITIAL.
IF <ls_result>-lstate IS NOT INITIAL
AND <ls_result>-lstate <> zif_abapgit_definitions=>gc_state-deleted
AND NOT ( <ls_result>-lstate = zif_abapgit_definitions=>gc_state-added
AND <ls_result>-rstate IS INITIAL ).
* current object has been modified locally, add to table
CLEAR ls_overwrite.
MOVE-CORRESPONDING <ls_result> TO ls_overwrite.
APPEND ls_overwrite TO rt_overwrite.
ENDIF.
ENDLOOP.
ENDMETHOD.

View File

@ -45,6 +45,7 @@ CLASS ltcl_dangerous IMPLEMENTATION.
lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt,
lv_msg TYPE string,
lt_results TYPE zif_abapgit_definitions=>ty_results_tt,
ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks,
lt_types TYPE zcl_abapgit_objects=>ty_types_tt.
FIELD-SYMBOLS: <ls_result> LIKE LINE OF lt_results,
@ -61,7 +62,7 @@ CLASS ltcl_dangerous IMPLEMENTATION.
iv_branch_name = 'refs/heads/master'
iv_package = c_package ).
lo_repo->status( ).
lo_repo->deserialize( ).
lo_repo->deserialize( ls_checks ).
lt_tadir = zcl_abapgit_tadir=>read( c_package ).
LOOP AT lt_types ASSIGNING <lv_type>.

View File

@ -7,6 +7,11 @@ CLASS zcl_abapgit_repo DEFINITION
PUBLIC SECTION.
METHODS deserialize_checks
RETURNING
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks
RAISING
zcx_abapgit_exception .
METHODS constructor
IMPORTING
!is_data TYPE zif_abapgit_persistence=>ty_repo .
@ -52,6 +57,8 @@ CLASS zcl_abapgit_repo DEFINITION
RAISING
zcx_abapgit_exception .
METHODS deserialize
IMPORTING
VALUE(is_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks
RAISING
zcx_abapgit_exception .
METHODS refresh
@ -146,11 +153,8 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
lt_requirements TYPE STANDARD TABLE OF zif_abapgit_dot_abapgit=>ty_requirement,
lx_error TYPE REF TO zcx_abapgit_exception.
find_remote_dot_abapgit( ).
IF get_dot_abapgit( )->get_master_language( ) <> sy-langu.
zcx_abapgit_exception=>raise( 'Current login language does not match master language' ).
ENDIF.
deserialize_checks( ).
lt_requirements = get_dot_abapgit( )->get_data( )-requirements.
IF lt_requirements IS NOT INITIAL.
@ -159,14 +163,13 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
ENDIF.
TRY.
lt_updated_files = zcl_abapgit_objects=>deserialize( me ).
lt_updated_files = zcl_abapgit_objects=>deserialize(
io_repo = me
is_checks = is_checks ).
CATCH zcx_abapgit_exception INTO lx_error.
" ensure to reset default transport request task
* ensure to reset default transport request task
zcl_abapgit_default_task=>get_instance( )->reset( ).
RAISE EXCEPTION lx_error.
ENDTRY.
APPEND get_dot_abapgit( )->get_signature( ) TO lt_updated_files.
@ -178,6 +181,23 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
ENDMETHOD.
METHOD deserialize_checks.
find_remote_dot_abapgit( ).
IF get_local_settings( )-write_protected = abap_true.
zcx_abapgit_exception=>raise( 'Cannot deserialize. Local code is write-protected by repo config' ).
ELSEIF get_dot_abapgit( )->get_master_language( ) <> sy-langu.
zcx_abapgit_exception=>raise( 'Current login language does not match master language' ).
ENDIF.
* todo
rs_checks = zcl_abapgit_objects=>deserialize_checks( me ).
ENDMETHOD.
METHOD find_remote_dot_abapgit.
FIELD-SYMBOLS: <ls_remote> LIKE LINE OF mt_remote.

View File

@ -147,13 +147,9 @@ CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
METHOD deserialize.
IF ms_data-local_settings-write_protected = abap_true.
zcx_abapgit_exception=>raise( 'Cannot deserialize. Local code is write-protected by repo config' ).
ENDIF.
initialize( ).
super->deserialize( ).
super->deserialize( is_checks ).
set( iv_sha1 = mv_branch ).

View File

@ -243,7 +243,12 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
lv_key TYPE zif_abapgit_persistence=>ty_repo-key.
ASSERT NOT iv_url IS INITIAL
AND NOT iv_branch_name IS INITIAL
AND NOT iv_package IS INITIAL.
validate_package( iv_package ).
zcl_abapgit_url=>validate( |{ iv_url }| ).
lv_key = mo_persistence->add(
iv_url = iv_url
@ -330,8 +335,9 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD validate_package.
DATA: ls_devclass TYPE tdevc,
lt_repos TYPE zif_abapgit_persistence=>tt_repo.
DATA: lv_as4user TYPE tdevc-as4user,
lt_repos TYPE zif_abapgit_persistence=>tt_repo.
IF iv_package IS INITIAL.
zcx_abapgit_exception=>raise( 'add, package empty' ).
@ -341,16 +347,14 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'not possible to use $TMP, create new (local) package' ).
ENDIF.
SELECT SINGLE *
FROM tdevc
INTO ls_devclass
WHERE devclass = iv_package. "#EC CI_GENBUFF
SELECT SINGLE as4user FROM tdevc
INTO lv_as4user
WHERE devclass = iv_package. "#EC CI_GENBUFF
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Package { iv_package } not found| ).
ENDIF.
IF is_sap_object_allowed( ) = abap_false AND ls_devclass-as4user = 'SAP'.
IF is_sap_object_allowed( ) = abap_false AND lv_as4user = 'SAP'.
zcx_abapgit_exception=>raise( |Package { iv_package } not allowed| ).
ENDIF.

View File

@ -1,33 +0,0 @@
CLASS zcl_abapgit_services_bkg DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
CLASS-METHODS update_task
IMPORTING is_bg_task TYPE zcl_abapgit_persist_background=>ty_background
RAISING zcx_abapgit_exception.
ENDCLASS.
CLASS ZCL_ABAPGIT_SERVICES_BKG IMPLEMENTATION.
METHOD update_task.
DATA lo_persistence TYPE REF TO zcl_abapgit_persist_background.
CREATE OBJECT lo_persistence.
IF is_bg_task-method = zcl_abapgit_persist_background=>c_method-nothing.
lo_persistence->delete( is_bg_task-key ).
ELSE.
lo_persistence->modify( is_bg_task ).
ENDIF.
MESSAGE 'Saved' TYPE 'S' ##NO_TEXT.
COMMIT WORK.
ENDMETHOD.
ENDCLASS.

View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_SERVICES_BKG</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Background services</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -394,7 +394,8 @@ CLASS ZCL_ABAPGIT_ZIP IMPLEMENTATION.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lo_repo->set_files_remote( unzip_file( file_upload( ) ) ).
lo_repo->deserialize( ).
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
ENDMETHOD. "import

View File

@ -79,6 +79,20 @@ INTERFACE zif_abapgit_definitions PUBLIC.
END OF ty_file_item .
TYPES:
ty_files_item_tt TYPE STANDARD TABLE OF ty_file_item WITH DEFAULT KEY .
TYPES: ty_yes_no TYPE c LENGTH 1.
TYPES: BEGIN OF ty_overwrite.
INCLUDE TYPE ty_item.
TYPES: decision TYPE ty_yes_no,
END OF ty_overwrite.
TYPES: ty_overwrite_tt TYPE STANDARD TABLE OF ty_overwrite WITH DEFAULT KEY.
TYPES: BEGIN OF ty_deserialize_checks,
overwrite TYPE ty_overwrite_tt,
END OF ty_deserialize_checks.
TYPES:
BEGIN OF ty_metadata,
class TYPE string,