mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Offline improvements (#2156)
* local reset in zip-based * rebuild_local_checksums on new offline
This commit is contained in:
parent
48bb8be737
commit
c465a6b2e8
|
@ -25,6 +25,7 @@ CLASS zcl_abapgit_gui_view_repo DEFINITION
|
|||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
DATA: mo_repo TYPE REF TO zcl_abapgit_repo,
|
||||
|
@ -183,10 +184,12 @@ CLASS ZCL_ABAPGIT_GUI_VIEW_REPO IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
" Build advanced drop-down ========================
|
||||
IF mo_repo->is_offline( ) = abap_false. " Online ?
|
||||
IF iv_rstate IS NOT INITIAL OR iv_lstate IS NOT INITIAL. " In case of asyncronicities
|
||||
lo_tb_advanced->add( iv_txt = 'Reset local'
|
||||
iv_act = |{ zif_abapgit_definitions=>c_action-git_reset }?{ lv_key }|
|
||||
iv_opt = lv_wp_opt ).
|
||||
ENDIF.
|
||||
IF mo_repo->is_offline( ) = abap_false. " Online ?
|
||||
lo_tb_advanced->add( iv_txt = 'Background mode'
|
||||
iv_act = |{ zif_abapgit_definitions=>c_action-go_background }?{ lv_key }| ).
|
||||
lo_tb_advanced->add( iv_txt = 'Change remote'
|
||||
|
|
|
@ -216,7 +216,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
|
|||
|
||||
METHOD reset.
|
||||
|
||||
DATA: lo_repo TYPE REF TO zcl_abapgit_repo_online,
|
||||
DATA: lo_repo TYPE REF TO zcl_abapgit_repo,
|
||||
lv_answer TYPE c LENGTH 1,
|
||||
lt_unnecessary_local_objs TYPE zif_abapgit_definitions=>ty_tadir_tt,
|
||||
lt_selected LIKE lt_unnecessary_local_objs,
|
||||
|
@ -224,7 +224,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
|
|||
ls_checks TYPE zif_abapgit_definitions=>ty_delete_checks,
|
||||
li_popups TYPE REF TO zif_abapgit_popups.
|
||||
|
||||
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 reset. Local code is write-protected by repo config' ).
|
||||
|
|
|
@ -148,6 +148,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->new_offline(
|
||||
iv_url = ls_popup-url
|
||||
iv_package = ls_popup-package ).
|
||||
lo_repo->rebuild_local_checksums( ).
|
||||
|
||||
zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( lo_repo->get_key( ) ). " Set default repo for user
|
||||
toggle_favorite( lo_repo->get_key( ) ).
|
||||
|
|
|
@ -117,6 +117,12 @@ CLASS zcl_abapgit_repo DEFINITION
|
|||
VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS get_unnecessary_local_objs
|
||||
RETURNING
|
||||
VALUE(rt_unnecessary_local_objects) TYPE zif_abapgit_definitions=>ty_tadir_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
DATA mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt .
|
||||
|
@ -443,6 +449,52 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_unnecessary_local_objs.
|
||||
|
||||
DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt,
|
||||
lt_tadir_unique TYPE HASHED TABLE OF zif_abapgit_definitions=>ty_tadir
|
||||
WITH UNIQUE KEY pgmid object obj_name,
|
||||
lt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
||||
lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
lt_status TYPE zif_abapgit_definitions=>ty_results_tt,
|
||||
lv_package TYPE zif_abapgit_persistence=>ty_repo-package.
|
||||
|
||||
FIELD-SYMBOLS: <ls_status> TYPE zif_abapgit_definitions=>ty_result,
|
||||
<ls_tadir> TYPE zif_abapgit_definitions=>ty_tadir.
|
||||
|
||||
|
||||
" delete objects which are added locally but are not in remote repo
|
||||
lt_local = get_files_local( ).
|
||||
lt_remote = get_files_remote( ).
|
||||
lt_status = status( ).
|
||||
|
||||
lv_package = get_package( ).
|
||||
lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( lv_package ).
|
||||
SORT lt_tadir BY pgmid ASCENDING object ASCENDING obj_name ASCENDING devclass ASCENDING.
|
||||
|
||||
LOOP AT lt_status ASSIGNING <ls_status>
|
||||
WHERE lstate = zif_abapgit_definitions=>c_state-added.
|
||||
|
||||
READ TABLE lt_tadir ASSIGNING <ls_tadir>
|
||||
WITH KEY pgmid = 'R3TR'
|
||||
object = <ls_status>-obj_type
|
||||
obj_name = <ls_status>-obj_name
|
||||
devclass = <ls_status>-package
|
||||
BINARY SEARCH.
|
||||
IF sy-subrc <> 0.
|
||||
* skip objects that does not exist locally
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
INSERT <ls_tadir> INTO TABLE lt_tadir_unique.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
rt_unnecessary_local_objects = lt_tadir_unique.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_offline.
|
||||
rv_offline = ms_data-offline.
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -39,12 +39,6 @@ CLASS zcl_abapgit_repo_online DEFINITION
|
|||
VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS get_unnecessary_local_objs
|
||||
RETURNING
|
||||
VALUE(rt_unnecessary_local_objects) TYPE zif_abapgit_definitions=>ty_tadir_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
METHODS get_files_remote
|
||||
REDEFINITION .
|
||||
METHODS get_name
|
||||
|
@ -136,52 +130,6 @@ CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_unnecessary_local_objs.
|
||||
|
||||
DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt,
|
||||
lt_tadir_unique TYPE HASHED TABLE OF zif_abapgit_definitions=>ty_tadir
|
||||
WITH UNIQUE KEY pgmid object obj_name,
|
||||
lt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
||||
lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
lt_status TYPE zif_abapgit_definitions=>ty_results_tt,
|
||||
lv_package TYPE zif_abapgit_persistence=>ty_repo-package.
|
||||
|
||||
FIELD-SYMBOLS: <ls_status> TYPE zif_abapgit_definitions=>ty_result,
|
||||
<ls_tadir> TYPE zif_abapgit_definitions=>ty_tadir.
|
||||
|
||||
|
||||
" delete objects which are added locally but are not in remote repo
|
||||
lt_local = get_files_local( ).
|
||||
lt_remote = get_files_remote( ).
|
||||
lt_status = status( ).
|
||||
|
||||
lv_package = get_package( ).
|
||||
lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( lv_package ).
|
||||
SORT lt_tadir BY pgmid ASCENDING object ASCENDING obj_name ASCENDING devclass ASCENDING.
|
||||
|
||||
LOOP AT lt_status ASSIGNING <ls_status>
|
||||
WHERE lstate = zif_abapgit_definitions=>c_state-added.
|
||||
|
||||
READ TABLE lt_tadir ASSIGNING <ls_tadir>
|
||||
WITH KEY pgmid = 'R3TR'
|
||||
object = <ls_status>-obj_type
|
||||
obj_name = <ls_status>-obj_name
|
||||
devclass = <ls_status>-package
|
||||
BINARY SEARCH.
|
||||
IF sy-subrc <> 0.
|
||||
* skip objects that does not exist locally
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
INSERT <ls_tadir> INTO TABLE lt_tadir_unique.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
rt_unnecessary_local_objects = lt_tadir_unique.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_url.
|
||||
rv_url = ms_data-url.
|
||||
ENDMETHOD.
|
||||
|
|
Loading…
Reference in New Issue
Block a user