Separate zif_abapgit_repo (#5329)

* zif_repo basis

* all but zcl_abapgit_repo_srv

* fix zcl_abapgit_repo_srv

* remove create_new_log from interface

* "hack" -> "TODO"

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Alexander Tsybulsky 2022-02-19 10:22:46 +02:00 committed by GitHub
parent 414a8fe1b2
commit 91cd4c3653
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 261 additions and 216 deletions

View File

@ -64,7 +64,7 @@ ENDCLASS.
CLASS zcl_abapgit_transport IMPLEMENTATION.
CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
METHOD add_all_objects_to_trans_req.
@ -147,7 +147,7 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
<lv_package> TYPE devclass,
<ls_object> TYPE tadir.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_package = lo_repo->get_package( ).
lt_packages = zcl_abapgit_factory=>get_sap_package( lv_package )->list_subpackages( ).
INSERT lv_package INTO TABLE lt_packages.
@ -292,6 +292,33 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
ENDMETHOD.
METHOD show_log.
DATA: li_log TYPE REF TO zif_abapgit_log,
lv_message TYPE string.
FIELD-SYMBOLS: <ls_log> TYPE sprot_u.
CREATE OBJECT li_log TYPE zcl_abapgit_log
EXPORTING
iv_title = iv_title.
LOOP AT it_log ASSIGNING <ls_log>.
MESSAGE ID <ls_log>-ag TYPE <ls_log>-severity NUMBER <ls_log>-msgnr
WITH <ls_log>-var1 <ls_log>-var2 <ls_log>-var3 <ls_log>-var4
INTO lv_message.
li_log->add(
iv_msg = lv_message
iv_type = <ls_log>-severity ).
ENDLOOP.
zcl_abapgit_log_viewer=>show_log( li_log ).
ENDMETHOD.
METHOD to_tadir.
DATA: lt_requests TYPE trwbo_requests.
@ -351,32 +378,4 @@ CLASS zcl_abapgit_transport IMPLEMENTATION.
iv_show_log = iv_show_log_popup ).
ENDMETHOD.
METHOD show_log.
DATA: li_log TYPE REF TO zif_abapgit_log,
lv_message TYPE string.
FIELD-SYMBOLS: <ls_log> TYPE sprot_u.
CREATE OBJECT li_log TYPE zcl_abapgit_log
EXPORTING
iv_title = iv_title.
LOOP AT it_log ASSIGNING <ls_log>.
MESSAGE ID <ls_log>-ag TYPE <ls_log>-severity NUMBER <ls_log>-msgnr
WITH <ls_log>-var1 <ls_log>-var2 <ls_log>-var3 <ls_log>-var4
INTO lv_message.
li_log->add(
iv_msg = lv_message
iv_type = <ls_log>-severity ).
ENDLOOP.
zcl_abapgit_log_viewer=>show_log( li_log ).
ENDMETHOD.
ENDCLASS.

View File

@ -5,7 +5,22 @@ CLASS zcl_abapgit_repo DEFINITION
PUBLIC SECTION.
DATA ms_data TYPE zif_abapgit_persistence=>ty_repo READ-ONLY.
INTERFACES zif_abapgit_repo.
ALIASES ms_data FOR zif_abapgit_repo~ms_data.
ALIASES:
get_key FOR zif_abapgit_repo~get_key,
get_name FOR zif_abapgit_repo~get_name,
is_offline FOR zif_abapgit_repo~is_offline,
get_package FOR zif_abapgit_repo~get_package,
get_files_local FOR zif_abapgit_repo~get_files_local,
get_files_remote FOR zif_abapgit_repo~get_files_remote,
get_local_settings FOR zif_abapgit_repo~get_local_settings,
refresh FOR zif_abapgit_repo~refresh.
METHODS constructor
IMPORTING
!is_data TYPE zif_abapgit_persistence=>ty_repo .
METHODS bind_listener
IMPORTING
@ -20,38 +35,9 @@ CLASS zcl_abapgit_repo DEFINITION
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_delete_checks
RAISING
zcx_abapgit_exception .
METHODS constructor
IMPORTING
!is_data TYPE zif_abapgit_persistence=>ty_repo .
METHODS get_key
RETURNING
VALUE(rv_key) TYPE zif_abapgit_persistence=>ty_value .
METHODS get_name
RETURNING
VALUE(rv_name) TYPE string
RAISING
zcx_abapgit_exception .
METHODS get_files_local
IMPORTING
!ii_log TYPE REF TO zif_abapgit_log OPTIONAL
!ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL
RETURNING
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_item_tt
RAISING
zcx_abapgit_exception .
METHODS get_local_checksums_per_file
RETURNING
VALUE(rt_checksums) TYPE zif_abapgit_definitions=>ty_file_signatures_tt .
METHODS get_files_remote
IMPORTING
ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL
RETURNING
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_tt
RAISING
zcx_abapgit_exception .
METHODS get_package
RETURNING
VALUE(rv_package) TYPE zif_abapgit_persistence=>ty_repo-package .
METHODS get_dot_abapgit
RETURNING
VALUE(ro_dot_abapgit) TYPE REF TO zcl_abapgit_dot_abapgit .
@ -74,13 +60,6 @@ CLASS zcl_abapgit_repo DEFINITION
!ii_log TYPE REF TO zif_abapgit_log
RAISING
zcx_abapgit_exception .
METHODS refresh
IMPORTING
!iv_drop_cache TYPE abap_bool DEFAULT abap_false
!iv_drop_log TYPE abap_bool DEFAULT abap_true
PREFERRED PARAMETER iv_drop_cache
RAISING
zcx_abapgit_exception .
METHODS update_local_checksums
IMPORTING
!it_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt
@ -94,15 +73,9 @@ CLASS zcl_abapgit_repo DEFINITION
VALUE(ro_dot) TYPE REF TO zcl_abapgit_dot_abapgit
RAISING
zcx_abapgit_exception .
METHODS is_offline
RETURNING
VALUE(rv_offline) TYPE abap_bool .
METHODS set_files_remote
IMPORTING
!it_files TYPE zif_abapgit_definitions=>ty_files_tt .
METHODS get_local_settings
RETURNING
VALUE(rs_settings) TYPE zif_abapgit_persistence=>ty_repo-local_settings .
METHODS set_local_settings
IMPORTING
!is_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings
@ -218,7 +191,7 @@ ENDCLASS.
CLASS zcl_abapgit_repo IMPLEMENTATION.
CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
METHOD bind_listener.

View File

@ -8,18 +8,16 @@ CLASS zcl_abapgit_repo_srv DEFINITION
INTERFACES zif_abapgit_repo_srv .
INTERFACES zif_abapgit_repo_listener .
ALIASES get_repo_from_package
FOR zif_abapgit_repo_srv~get_repo_from_package .
ALIASES get_repo_from_url
FOR zif_abapgit_repo_srv~get_repo_from_url .
CLASS-METHODS get_instance
RETURNING
VALUE(ri_srv) TYPE REF TO zif_abapgit_repo_srv .
PROTECTED SECTION.
PRIVATE SECTION.
ALIASES get_repo_from_package
FOR zif_abapgit_repo_srv~get_repo_from_package .
ALIASES get_repo_from_url
FOR zif_abapgit_repo_srv~get_repo_from_url .
ALIASES delete
FOR zif_abapgit_repo_srv~delete .
ALIASES get
@ -54,12 +52,12 @@ CLASS zcl_abapgit_repo_srv DEFINITION
IMPORTING
!is_repo_meta TYPE zif_abapgit_persistence=>ty_repo
RETURNING
VALUE(ro_repo) TYPE REF TO zcl_abapgit_repo
VALUE(ri_repo) TYPE REF TO zif_abapgit_repo
RAISING
zcx_abapgit_exception .
METHODS add
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
!ii_repo TYPE REF TO zif_abapgit_repo
RAISING
zcx_abapgit_exception .
METHODS reinstantiate_repo
@ -74,7 +72,7 @@ CLASS zcl_abapgit_repo_srv DEFINITION
!it_repos TYPE zif_abapgit_persistence=>ty_repos
!iv_ign_subpkg TYPE abap_bool DEFAULT abap_false
EXPORTING
VALUE(eo_repo) TYPE REF TO zcl_abapgit_repo
VALUE(ei_repo) TYPE REF TO zif_abapgit_repo
!ev_reason TYPE string
RAISING
zcx_abapgit_exception .
@ -87,20 +85,21 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD add.
DATA: lo_repo LIKE LINE OF mt_list.
DATA li_repo LIKE LINE OF mt_list.
DATA lo_repo TYPE REF TO zcl_abapgit_repo.
LOOP AT mt_list INTO lo_repo.
IF lo_repo->ms_data-key = io_repo->ms_data-key.
IF lo_repo = io_repo.
LOOP AT mt_list INTO li_repo.
IF li_repo->ms_data-key = ii_repo->ms_data-key.
IF li_repo = ii_repo.
RETURN.
ENDIF.
zcx_abapgit_exception=>raise( 'identical keys' ).
ENDIF.
ENDLOOP.
io_repo->bind_listener( me ).
APPEND io_repo TO mt_list.
lo_repo ?= ii_repo. " TODO, refactor later
lo_repo->bind_listener( me ).
APPEND ii_repo TO mt_list.
ENDMETHOD.
@ -135,15 +134,15 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD instantiate_and_add.
IF is_repo_meta-offline = abap_false.
CREATE OBJECT ro_repo TYPE zcl_abapgit_repo_online
CREATE OBJECT ri_repo TYPE zcl_abapgit_repo_online
EXPORTING
is_data = is_repo_meta.
ELSE.
CREATE OBJECT ro_repo TYPE zcl_abapgit_repo_offline
CREATE OBJECT ri_repo TYPE zcl_abapgit_repo_offline
EXPORTING
is_data = is_repo_meta.
ENDIF.
add( ro_repo ).
add( ri_repo ).
ENDMETHOD.
@ -172,7 +171,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
DATA: lt_list TYPE zif_abapgit_persistence=>ty_repos,
lt_user_favorites TYPE zif_abapgit_persist_user=>ty_favorites.
DATA lo_repo TYPE REF TO zcl_abapgit_repo.
DATA li_repo TYPE REF TO zif_abapgit_repo.
DATA lv_repo_index TYPE i.
DATA lo_repo_db TYPE REF TO zif_abapgit_persist_repo.
@ -184,14 +183,14 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
SORT lt_list BY package.
LOOP AT mt_list INTO lo_repo.
LOOP AT mt_list INTO li_repo.
lv_repo_index = sy-tabix.
READ TABLE lt_list TRANSPORTING NO FIELDS WITH KEY package = lo_repo->get_package( ).
READ TABLE lt_list TRANSPORTING NO FIELDS WITH KEY package = li_repo->get_package( ).
IF sy-subrc = 0.
DELETE lt_list INDEX sy-tabix.
CONTINUE. " Leave the repo be
ELSEIF lo_repo_db->exists( lo_repo->get_key( ) ) = abap_false.
ELSEIF lo_repo_db->exists( li_repo->get_key( ) ) = abap_false.
" Not a fav, and also does not exist, probably uninstalled
DELETE mt_list INDEX lv_repo_index.
ENDIF.
@ -211,11 +210,11 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD reinstantiate_repo.
DATA lo_repo TYPE REF TO zcl_abapgit_repo.
DATA li_repo TYPE REF TO zif_abapgit_repo.
DATA ls_full_meta TYPE zif_abapgit_persistence=>ty_repo.
lo_repo = get( iv_key ).
DELETE TABLE mt_list FROM lo_repo.
li_repo = get( iv_key ).
DELETE TABLE mt_list FROM li_repo.
ASSERT sy-subrc IS INITIAL.
MOVE-CORRESPONDING is_meta TO ls_full_meta.
@ -232,10 +231,10 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
ls_repo LIKE LINE OF it_repos,
li_package TYPE REF TO zif_abapgit_sap_package,
lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt,
lo_repo TYPE REF TO zcl_abapgit_repo.
li_repo TYPE REF TO zif_abapgit_repo.
LOOP AT it_repos INTO ls_repo.
lo_repo = get( ls_repo-key ).
li_repo = get( ls_repo-key ).
li_package = zcl_abapgit_factory=>get_sap_package( ls_repo-package ).
IF li_package->exists( ) = abap_false.
@ -244,13 +243,13 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
ENDIF.
CLEAR lt_packages.
IF lo_repo->get_local_settings( )-ignore_subpackages = abap_false.
IF li_repo->get_local_settings( )-ignore_subpackages = abap_false.
APPEND LINES OF li_package->list_subpackages( ) TO lt_packages.
READ TABLE lt_packages TRANSPORTING NO FIELDS
WITH KEY table_line = iv_package.
IF sy-subrc = 0.
eo_repo = lo_repo.
ev_reason = |Repository { lo_repo->get_name( ) } already contains { iv_package } |.
ei_repo = li_repo.
ev_reason = |Repository { li_repo->get_name( ) } already contains { iv_package } |.
RETURN.
ENDIF.
ENDIF.
@ -260,8 +259,8 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
READ TABLE lt_packages TRANSPORTING NO FIELDS
WITH KEY table_line = iv_package.
IF sy-subrc = 0.
eo_repo = lo_repo.
ev_reason = |Repository { lo_repo->get_name( ) } already contains subpackage of { iv_package } |.
ei_repo = li_repo.
ev_reason = |Repository { li_repo->get_name( ) } already contains subpackage of { iv_package } |.
RETURN.
ENDIF.
ENDIF.
@ -298,14 +297,14 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD zif_abapgit_repo_srv~delete.
zcl_abapgit_persist_factory=>get_repo( )->delete( io_repo->get_key( ) ).
zcl_abapgit_persist_factory=>get_repo( )->delete( ii_repo->get_key( ) ).
" If favorite, remove it
IF zcl_abapgit_persistence_user=>get_instance( )->is_favorite_repo( io_repo->get_key( ) ) = abap_true.
zcl_abapgit_persistence_user=>get_instance( )->toggle_favorite( io_repo->get_key( ) ).
IF zcl_abapgit_persistence_user=>get_instance( )->is_favorite_repo( ii_repo->get_key( ) ) = abap_true.
zcl_abapgit_persistence_user=>get_instance( )->toggle_favorite( ii_repo->get_key( ) ).
ENDIF.
DELETE TABLE mt_list FROM io_repo.
DELETE TABLE mt_list FROM ii_repo.
ASSERT sy-subrc = 0.
ENDMETHOD.
@ -313,7 +312,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD zif_abapgit_repo_srv~get.
FIELD-SYMBOLS: <lo_list> LIKE LINE OF mt_list.
FIELD-SYMBOLS: <li_repo> LIKE LINE OF mt_list.
IF mv_init = abap_false.
refresh_all( ).
@ -324,9 +323,9 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
IF sy-index = 2.
refresh_all( ).
ENDIF.
LOOP AT mt_list ASSIGNING <lo_list>.
IF <lo_list>->ms_data-key = iv_key.
ro_repo = <lo_list>.
LOOP AT mt_list ASSIGNING <li_repo>.
IF <li_repo>->ms_data-key = iv_key.
ri_repo = <li_repo>.
RETURN.
ENDIF.
ENDLOOP.
@ -351,8 +350,8 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
lt_repos = zcl_abapgit_persist_factory=>get_repo( )->list( ).
READ TABLE lt_repos WITH KEY package = iv_package ASSIGNING <ls_repo>.
IF sy-subrc = 0.
eo_repo = get_instance( )->get( <ls_repo>-key ).
lv_name = eo_repo->get_name( ).
ei_repo = get_instance( )->get( <ls_repo>-key ).
lv_name = ei_repo->get_name( ).
lv_owner = <ls_repo>-created_by.
ev_reason = |Package { iv_package } already versioned as { lv_name } by { lv_owner }|.
ELSE.
@ -363,7 +362,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
it_repos = lt_repos
iv_ign_subpkg = iv_ign_subpkg
IMPORTING
eo_repo = eo_repo
ei_repo = ei_repo
ev_reason = ev_reason ).
ENDIF.
@ -384,7 +383,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
<ls_repo> LIKE LINE OF lt_repos.
CLEAR:
eo_repo, ev_reason.
ei_repo, ev_reason.
lv_current_repo_address = zcl_abapgit_url=>url_address( iv_url ).
@ -395,9 +394,9 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
lv_check_repo_address = zcl_abapgit_url=>url_address( <ls_repo>-url ).
IF lv_current_repo_address = lv_check_repo_address.
eo_repo = get_instance( )->get( <ls_repo>-key ).
ei_repo = get_instance( )->get( <ls_repo>-key ).
lv_repo_path = zcl_abapgit_url=>path_name( iv_url ).
lv_name = eo_repo->get_name( ).
lv_name = ei_repo->get_name( ).
lv_owner = <ls_repo>-created_by.
ev_reason = |Repository { lv_repo_path } already versioned as { lv_name } by { lv_owner }|.
RETURN.
@ -411,7 +410,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD zif_abapgit_repo_srv~is_repo_installed.
DATA: lt_repo TYPE zif_abapgit_repo_srv=>ty_repo_list,
lo_repo TYPE REF TO zcl_abapgit_repo,
li_repo TYPE REF TO zif_abapgit_repo,
lv_url TYPE string,
lv_package TYPE devclass,
lo_repo_online TYPE REF TO zcl_abapgit_repo_online,
@ -419,9 +418,9 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
lt_repo = list( ).
LOOP AT lt_repo INTO lo_repo.
CHECK lo_repo->is_offline( ) = abap_false.
lo_repo_online ?= lo_repo.
LOOP AT lt_repo INTO li_repo.
CHECK li_repo->is_offline( ) = abap_false.
lo_repo_online ?= li_repo.
lv_url = lo_repo_online->get_url( ).
lv_package = lo_repo_online->get_package( ).
@ -456,7 +455,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD zif_abapgit_repo_srv~list_favorites.
DATA lt_user_favorites TYPE zif_abapgit_persist_user=>ty_favorites.
DATA lo_repo TYPE REF TO zcl_abapgit_repo.
DATA li_repo TYPE REF TO zif_abapgit_repo.
lt_user_favorites = zcl_abapgit_persistence_user=>get_instance( )->get_favorites( ).
SORT lt_user_favorites BY table_line.
@ -465,12 +464,12 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
refresh_favorites( ).
ENDIF.
LOOP AT mt_list INTO lo_repo.
LOOP AT mt_list INTO li_repo.
READ TABLE lt_user_favorites
TRANSPORTING NO FIELDS
WITH KEY table_line = lo_repo->get_key( ).
WITH KEY table_line = li_repo->get_key( ).
IF sy-subrc = 0.
APPEND lo_repo TO rt_list.
APPEND li_repo TO rt_list.
ENDIF.
ENDLOOP.
@ -481,6 +480,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
DATA: ls_repo TYPE zif_abapgit_persistence=>ty_repo,
lv_key TYPE zif_abapgit_persistence=>ty_repo-key,
lo_repo TYPE REF TO zcl_abapgit_repo_offline,
lo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit.
@ -510,10 +510,11 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'new_offline not found' ).
ENDTRY.
ro_repo ?= instantiate_and_add( ls_repo ).
lo_repo ?= instantiate_and_add( ls_repo ).
ls_repo-local_settings-main_language_only = iv_main_lang_only.
ro_repo->set_local_settings( ls_repo-local_settings ).
lo_repo->set_local_settings( ls_repo-local_settings ).
ri_repo = lo_repo.
ENDMETHOD.
@ -521,6 +522,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD zif_abapgit_repo_srv~new_online.
DATA: ls_repo TYPE zif_abapgit_persistence=>ty_repo,
lo_repo TYPE REF TO zcl_abapgit_repo_online,
lv_branch_name LIKE iv_branch_name,
lv_key TYPE zif_abapgit_persistence=>ty_repo-key,
ls_dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit,
@ -561,17 +563,19 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'new_online not found' ).
ENDTRY.
ro_repo ?= instantiate_and_add( ls_repo ).
lo_repo ?= instantiate_and_add( ls_repo ).
IF ls_repo-local_settings-ignore_subpackages <> iv_ign_subpkg.
ls_repo-local_settings-ignore_subpackages = iv_ign_subpkg.
ENDIF.
ls_repo-local_settings-main_language_only = iv_main_lang_only.
ro_repo->set_local_settings( ls_repo-local_settings ).
lo_repo->set_local_settings( ls_repo-local_settings ).
ro_repo->refresh( ).
ro_repo->find_remote_dot_abapgit( ).
ro_repo->check_and_create_package( iv_package ).
lo_repo->refresh( ).
lo_repo->find_remote_dot_abapgit( ).
lo_repo->check_and_create_package( iv_package ).
ri_repo = lo_repo.
ENDMETHOD.
@ -584,16 +588,18 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt.
DATA: lx_error TYPE REF TO zcx_abapgit_exception.
DATA lo_repo TYPE REF TO zcl_abapgit_repo.
ri_log = io_repo->create_new_log( 'Uninstall Log' ).
lo_repo ?= ii_repo. " TODO, remove later
ri_log = lo_repo->create_new_log( 'Uninstall Log' ).
IF io_repo->get_local_settings( )-write_protected = abap_true.
IF ii_repo->get_local_settings( )-write_protected = abap_true.
zcx_abapgit_exception=>raise( 'Cannot purge. Local code is write-protected by repo config' ).
ELSEIF zcl_abapgit_auth=>is_allowed( zif_abapgit_auth=>c_authorization-uninstall ) = abap_false.
zcx_abapgit_exception=>raise( 'Not authorized' ).
ENDIF.
lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( io_repo->get_package( ) ).
lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( ii_repo->get_package( ) ).
TRY.
zcl_abapgit_objects=>delete( it_tadir = lt_tadir
@ -601,11 +607,11 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
ii_log = ri_log ).
CATCH zcx_abapgit_exception INTO lx_error.
" If uninstall fails, repo needs a refresh to show which objects where deleted and which not
io_repo->refresh( iv_drop_log = abap_false ).
ii_repo->refresh( iv_drop_log = abap_false ).
RAISE EXCEPTION lx_error.
ENDTRY.
delete( io_repo ).
delete( ii_repo ).
ENDMETHOD.
@ -613,7 +619,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD zif_abapgit_repo_srv~validate_package.
DATA: lv_as4user TYPE tdevc-as4user,
lo_repo TYPE REF TO zcl_abapgit_repo,
li_repo TYPE REF TO zif_abapgit_repo,
lv_reason TYPE string.
IF iv_package IS INITIAL.
@ -640,10 +646,10 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
iv_package = iv_package
iv_ign_subpkg = iv_ign_subpkg
IMPORTING
eo_repo = lo_repo
ei_repo = li_repo
ev_reason = lv_reason ).
IF lo_repo IS BOUND.
IF li_repo IS BOUND.
zcx_abapgit_exception=>raise( lv_reason ).
ENDIF.
ENDIF.
@ -654,7 +660,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
METHOD zif_abapgit_repo_srv~validate_url.
DATA:
lo_repo TYPE REF TO zcl_abapgit_repo,
li_repo TYPE REF TO zif_abapgit_repo,
lv_reason TYPE string.
zcl_abapgit_url=>validate( iv_url ).
@ -664,9 +670,9 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
EXPORTING
iv_url = iv_url
IMPORTING
eo_repo = lo_repo
ei_repo = li_repo
ev_reason = lv_reason ).
IF lo_repo IS BOUND.
IF li_repo IS BOUND.
zcx_abapgit_exception=>raise( lv_reason ).
ENDIF.
ENDIF.

View File

@ -0,0 +1,47 @@
INTERFACE zif_abapgit_repo
PUBLIC .
DATA ms_data TYPE zif_abapgit_persistence=>ty_repo READ-ONLY.
METHODS get_key
RETURNING
VALUE(rv_key) TYPE zif_abapgit_persistence=>ty_value .
METHODS get_name
RETURNING
VALUE(rv_name) TYPE string
RAISING
zcx_abapgit_exception .
METHODS is_offline
RETURNING
VALUE(rv_offline) TYPE abap_bool .
METHODS get_package
RETURNING
VALUE(rv_package) TYPE zif_abapgit_persistence=>ty_repo-package .
METHODS get_local_settings
RETURNING
VALUE(rs_settings) TYPE zif_abapgit_persistence=>ty_repo-local_settings .
METHODS get_files_local
IMPORTING
!ii_log TYPE REF TO zif_abapgit_log OPTIONAL
!ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL
RETURNING
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_item_tt
RAISING
zcx_abapgit_exception .
METHODS get_files_remote
IMPORTING
ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL
RETURNING
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_tt
RAISING
zcx_abapgit_exception .
METHODS refresh
IMPORTING
!iv_drop_cache TYPE abap_bool DEFAULT abap_false
!iv_drop_log TYPE abap_bool DEFAULT abap_true
PREFERRED PARAMETER iv_drop_cache
RAISING
zcx_abapgit_exception .
ENDINTERFACE.

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_REPO</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit repository</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -3,18 +3,18 @@ INTERFACE zif_abapgit_repo_srv
TYPES:
ty_repo_list TYPE STANDARD TABLE OF REF TO zcl_abapgit_repo WITH DEFAULT KEY .
ty_repo_list TYPE STANDARD TABLE OF REF TO zif_abapgit_repo WITH DEFAULT KEY .
METHODS delete
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
!ii_repo TYPE REF TO zif_abapgit_repo
RAISING
zcx_abapgit_exception .
METHODS get
IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_value
RETURNING
VALUE(ro_repo) TYPE REF TO zcl_abapgit_repo
VALUE(ri_repo) TYPE REF TO zif_abapgit_repo
RAISING
zcx_abapgit_exception .
METHODS is_repo_installed
@ -26,11 +26,15 @@ INTERFACE zif_abapgit_repo_srv
RAISING
zcx_abapgit_exception .
METHODS list
RETURNING VALUE(rt_list) TYPE ty_repo_list
RAISING zcx_abapgit_exception .
RETURNING
VALUE(rt_list) TYPE ty_repo_list
RAISING
zcx_abapgit_exception .
METHODS list_favorites
RETURNING VALUE(rt_list) TYPE ty_repo_list
RAISING zcx_abapgit_exception .
RETURNING
VALUE(rt_list) TYPE ty_repo_list
RAISING
zcx_abapgit_exception .
METHODS new_offline
IMPORTING
!iv_url TYPE string
@ -38,7 +42,7 @@ INTERFACE zif_abapgit_repo_srv
!iv_folder_logic TYPE string DEFAULT zif_abapgit_dot_abapgit=>c_folder_logic-full
!iv_main_lang_only TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(ro_repo) TYPE REF TO zcl_abapgit_repo_offline
VALUE(ri_repo) TYPE REF TO zif_abapgit_repo
RAISING
zcx_abapgit_exception .
METHODS new_online
@ -51,12 +55,12 @@ INTERFACE zif_abapgit_repo_srv
!iv_ign_subpkg TYPE abap_bool DEFAULT abap_false
!iv_main_lang_only TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(ro_repo) TYPE REF TO zcl_abapgit_repo_online
VALUE(ri_repo) TYPE REF TO zif_abapgit_repo
RAISING
zcx_abapgit_exception .
METHODS purge
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo
!ii_repo TYPE REF TO zif_abapgit_repo
!is_checks TYPE zif_abapgit_definitions=>ty_delete_checks
RETURNING
VALUE(ri_log) TYPE REF TO zif_abapgit_log
@ -80,7 +84,7 @@ INTERFACE zif_abapgit_repo_srv
!iv_package TYPE devclass
!iv_ign_subpkg TYPE abap_bool DEFAULT abap_false
EXPORTING
VALUE(eo_repo) TYPE REF TO zcl_abapgit_repo
VALUE(ei_repo) TYPE REF TO zif_abapgit_repo
!ev_reason TYPE string
RAISING
zcx_abapgit_exception .
@ -88,7 +92,7 @@ INTERFACE zif_abapgit_repo_srv
IMPORTING
!iv_url TYPE string
EXPORTING
!eo_repo TYPE REF TO zcl_abapgit_repo
!ei_repo TYPE REF TO zif_abapgit_repo
!ev_reason TYPE string
RAISING
zcx_abapgit_exception .

View File

@ -71,7 +71,7 @@ ENDCLASS.
CLASS zcl_abapgit_gui_page_data IMPLEMENTATION.
CLASS ZCL_ABAPGIT_GUI_PAGE_DATA IMPLEMENTATION.
METHOD build_where.
@ -97,7 +97,7 @@ CLASS zcl_abapgit_gui_page_data IMPLEMENTATION.
ms_control-page_title = 'Data'.
mo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
mo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
mi_config = mo_repo->get_data_config( ).
ENDMETHOD.

View File

@ -188,7 +188,7 @@ ENDCLASS.
CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION.
CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_VIEW IMPLEMENTATION.
METHOD apply_order_by.
@ -609,7 +609,7 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION.
lo_persistence_user = zcl_abapgit_persistence_user=>get_instance( ).
mv_key = iv_key.
mo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
mo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
mv_cur_dir = '/'. " Root
mv_hide_files = lo_persistence_user->get_hide_files( ).
@ -812,7 +812,7 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION.
TRY.
" Reinit, for the case of type change
mo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( mo_repo->get_key( ) ).
mo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( mo_repo->get_key( ) ).
mv_are_changes_recorded_in_tr = zcl_abapgit_factory=>get_sap_package( mo_repo->get_package( )
)->are_changes_recorded_in_tr_req( ).

View File

@ -170,7 +170,7 @@ ENDCLASS.
CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_REMO IMPLEMENTATION.
METHOD checkout_commit_build_list.
@ -651,7 +651,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
" Remember key, switch, retrieve new instance (todo, refactor #2244)
lv_key = ms_repo_current-key.
mo_repo->switch_repo_type( ms_repo_new-offline ).
mo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
mo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
ENDIF.
IF mo_repo->is_offline( ) = abap_true.

View File

@ -11,7 +11,7 @@ CLASS zcl_abapgit_gui_page_tag DEFINITION PUBLIC FINAL
METHODS:
constructor
IMPORTING io_repo TYPE REF TO zcl_abapgit_repo
IMPORTING ii_repo TYPE REF TO zif_abapgit_repo
RAISING zcx_abapgit_exception,
zif_abapgit_gui_event_handler~on_event REDEFINITION.
@ -76,7 +76,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_TAG IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
mo_repo_online ?= io_repo.
mo_repo_online ?= ii_repo.
ms_control-page_title = 'Tag'.
mv_selected_type = c_tag_type-lightweight.

View File

@ -131,7 +131,7 @@ ENDCLASS.
CLASS zcl_abapgit_gui_router IMPLEMENTATION.
CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
METHOD abapgit_services_actions.
@ -252,7 +252,7 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
lt_r_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_select_wb_tc_tr_and_tsk( ).
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
CREATE OBJECT lo_obj_filter_trans.
lo_obj_filter_trans->set_filter_values( iv_package = lo_repo->get_package( )
@ -281,29 +281,6 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
ENDMETHOD.
METHOD main_page.
DATA lt_repo_fav_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
DATA lt_repo_all_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
" for performance reasons, only load favorites
lt_repo_fav_list = zcl_abapgit_repo_srv=>get_instance( )->list_favorites( ).
IF lt_repo_fav_list IS INITIAL.
" if there are no favorites, check if there are any repositories at all
" if not, go to tutorial where the user can create the first repository
lt_repo_all_list = zcl_abapgit_repo_srv=>get_instance( )->list( ).
IF lt_repo_all_list IS NOT INITIAL.
CREATE OBJECT ri_page TYPE zcl_abapgit_gui_page_main EXPORTING iv_only_favorites = abap_false.
ELSE.
ri_page = zcl_abapgit_gui_page_tutorial=>create( ).
ENDIF.
ELSE.
CREATE OBJECT ri_page TYPE zcl_abapgit_gui_page_main EXPORTING iv_only_favorites = abap_true.
ENDIF.
ENDMETHOD.
METHOD get_page_branch_overview.
@ -509,7 +486,7 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
WHEN zif_abapgit_definitions=>c_action-git_tag_create. " GIT Tag create
CREATE OBJECT rs_handled-page TYPE zcl_abapgit_gui_page_tag
EXPORTING
io_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
ii_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
WHEN zif_abapgit_definitions=>c_action-git_tag_delete. " GIT Tag create
zcl_abapgit_services_git=>delete_tag( lv_key ).
@ -567,6 +544,30 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
ENDMETHOD.
METHOD main_page.
DATA lt_repo_fav_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
DATA lt_repo_all_list TYPE zif_abapgit_repo_srv=>ty_repo_list.
" for performance reasons, only load favorites
lt_repo_fav_list = zcl_abapgit_repo_srv=>get_instance( )->list_favorites( ).
IF lt_repo_fav_list IS INITIAL.
" if there are no favorites, check if there are any repositories at all
" if not, go to tutorial where the user can create the first repository
lt_repo_all_list = zcl_abapgit_repo_srv=>get_instance( )->list( ).
IF lt_repo_all_list IS NOT INITIAL.
CREATE OBJECT ri_page TYPE zcl_abapgit_gui_page_main EXPORTING iv_only_favorites = abap_false.
ELSE.
ri_page = zcl_abapgit_gui_page_tutorial=>create( ).
ENDIF.
ELSE.
CREATE OBJECT ri_page TYPE zcl_abapgit_gui_page_main EXPORTING iv_only_favorites = abap_true.
ENDIF.
ENDMETHOD.
METHOD other_utilities.
TYPES ty_char600 TYPE c LENGTH 600.
DATA lv_clip_content TYPE string.
@ -596,7 +597,7 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
lv_key = ii_event->query( )->get( 'KEY' ).
IF lv_key IS NOT INITIAL.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
ENDIF.
CASE ii_event->mv_action.
@ -768,7 +769,7 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
WHEN zif_abapgit_definitions=>c_action-zip_import " Import repo from ZIP
OR zif_abapgit_definitions=>c_action-rfc_compare. " Compare repo via RFC
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
IF ii_event->mv_action = zif_abapgit_definitions=>c_action-zip_import.
lv_path = zcl_abapgit_ui_factory=>get_frontend_services( )->show_file_open_dialog(
@ -820,7 +821,7 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
ENDCASE.
WHEN zif_abapgit_definitions=>c_action-zip_export. " Export repo as ZIP
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
lv_xstr = zcl_abapgit_zip=>encode_files( lo_repo->get_files_local( ) ).
file_download( iv_package = lo_repo->get_package( )
iv_xstr = lv_xstr ).
@ -828,7 +829,7 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION.
WHEN zif_abapgit_definitions=>c_action-zip_export_transport. " Export repo as ZIP
lt_r_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_select_wb_tc_tr_and_tsk( ).
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ).
lo_repo->refresh( ).
CREATE OBJECT lo_obj_filter_trans.
lo_obj_filter_trans->set_filter_values( iv_package = lo_repo->get_package( )

View File

@ -53,7 +53,7 @@ ENDCLASS.
CLASS zcl_abapgit_services_abapgit IMPLEMENTATION.
CLASS ZCL_ABAPGIT_SERVICES_ABAPGIT IMPLEMENTATION.
METHOD check_sapgui.
@ -273,7 +273,7 @@ CLASS zcl_abapgit_services_abapgit IMPLEMENTATION.
LOOP AT lt_repo_list ASSIGNING <lo_repo>.
IF <lo_repo>->get_package( ) IN lt_r_package.
lo_repo = <lo_repo>.
lo_repo ?= <lo_repo>.
EXIT.
ENDIF.

View File

@ -59,7 +59,7 @@ ENDCLASS.
CLASS zcl_abapgit_services_git IMPLEMENTATION.
CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
METHOD commit.
@ -192,7 +192,7 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION.
DATA: lo_repo TYPE REF TO zcl_abapgit_repo.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lo_repo->refresh( ).
@ -205,7 +205,7 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION.
DATA lo_repo TYPE REF TO zcl_abapgit_repo.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
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 in repo settings' ).

View File

@ -101,7 +101,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
METHOD check_package.
DATA:
lo_repo TYPE REF TO zcl_abapgit_repo,
li_repo TYPE REF TO zif_abapgit_repo,
li_repo_srv TYPE REF TO zif_abapgit_repo_srv,
lv_reason TYPE string.
@ -113,10 +113,10 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
iv_package = is_repo_params-package
iv_ign_subpkg = is_repo_params-ignore_subpackages
IMPORTING
eo_repo = lo_repo
ei_repo = li_repo
ev_reason = lv_reason ).
IF lo_repo IS BOUND.
IF li_repo IS BOUND.
zcx_abapgit_exception=>raise( lv_reason ).
ENDIF.
@ -209,7 +209,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
check_package( is_repo_params ).
" create new repo and add to favorites
ro_repo = zcl_abapgit_repo_srv=>get_instance( )->new_offline(
ro_repo ?= zcl_abapgit_repo_srv=>get_instance( )->new_offline(
iv_url = is_repo_params-url
iv_package = is_repo_params-package
iv_folder_logic = is_repo_params-folder_logic
@ -233,7 +233,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
check_package( is_repo_params ).
ro_repo = zcl_abapgit_repo_srv=>get_instance( )->new_online(
ro_repo ?= zcl_abapgit_repo_srv=>get_instance( )->new_online(
iv_url = is_repo_params-url
iv_branch_name = is_repo_params-branch_name
iv_package = is_repo_params-package
@ -433,7 +433,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
lv_message TYPE string.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_repo_name = lo_repo->get_name( ).
lv_package = lo_repo->get_package( ).
@ -467,7 +467,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
ENDIF.
ri_log = zcl_abapgit_repo_srv=>get_instance( )->purge(
io_repo = lo_repo
ii_repo = lo_repo
is_checks = ls_checks ).
COMMIT WORK.
@ -501,7 +501,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'Not authorized' ).
ENDIF.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_question = 'This will rebuild and overwrite local repo checksums.'.
@ -538,16 +538,16 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
METHOD remove.
DATA: lv_answer TYPE c LENGTH 1,
lo_repo TYPE REF TO zcl_abapgit_repo,
li_repo TYPE REF TO zif_abapgit_repo,
lv_package TYPE devclass,
lv_question TYPE c LENGTH 200,
lv_repo_name TYPE string,
lv_message TYPE string.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_repo_name = lo_repo->get_name( ).
lv_package = lo_repo->get_package( ).
li_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_repo_name = li_repo->get_name( ).
lv_package = li_repo->get_package( ).
lv_question = |This will remove the repository reference to the package { lv_package
}. All objects will safely remain in the system.|.
@ -565,7 +565,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
ENDIF.
zcl_abapgit_repo_srv=>get_instance( )->delete( lo_repo ).
zcl_abapgit_repo_srv=>get_instance( )->delete( li_repo ).
COMMIT WORK.