diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index a12ae5cef..be12babcf 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -47,8 +47,10 @@ CLASS lcl_services_git IMPLEMENTATION. METHOD reset. - DATA: lo_repo TYPE REF TO lcl_repo_online, - lv_answer TYPE c LENGTH 1. + DATA: lo_repo TYPE REF TO lcl_repo_online, + lv_answer TYPE c LENGTH 1, + lt_tadir TYPE lif_defs=>ty_tadir_tt, + lt_tadir_to_delete LIKE lt_tadir. lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). @@ -71,7 +73,44 @@ CLASS lcl_services_git IMPLEMENTATION. RAISE EXCEPTION TYPE lcx_cancel. ENDIF. - lo_repo->delete( ). + " delete local files that are not in remote... + DATA(lt_files_local) = lo_repo->get_files_local( ). + DATA(lt_files_remote) = lo_repo->get_files_remote( ). + + DATA(package) = lo_repo->get_package( ). + lt_tadir = lcl_tadir=>read( package ). + + LOOP AT lt_files_local ASSIGNING FIELD-SYMBOL(). + + IF NOT line_exists( lt_files_remote[ path = -file-path + filename = -file-filename ] ). + + IF sy-subrc = 0. + + READ TABLE lt_tadir ASSIGNING FIELD-SYMBOL() + WITH KEY object = -item-obj_type + obj_name = -item-obj_name + devclass = -item-devclass. + + ASSERT sy-subrc = 0. + + INSERT INTO TABLE lt_tadir_to_delete. + + ENDIF. + + ENDIF. + + ENDLOOP. + + + IF lines( lt_tadir_to_delete ) > 0. + + SORT lt_tadir_to_delete. + DELETE ADJACENT DUPLICATES FROM lt_tadir_to_delete. + lcl_objects=>delete( lt_tadir_to_delete ). + + ENDIF. + lo_repo->deserialize( ). ENDMETHOD.