mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Refactor repo class, part1 (#2096)
* repo refactoring * repo refactoring - part 2 * review fixes * more review fixes
This commit is contained in:
parent
af2ac36253
commit
af86d5b969
|
@ -422,7 +422,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
|
||||||
DATA: lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
DATA: lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||||
lt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
lt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
||||||
lt_status TYPE zif_abapgit_definitions=>ty_results_tt,
|
lt_status TYPE zif_abapgit_definitions=>ty_results_tt,
|
||||||
lo_repo TYPE REF TO zcl_abapgit_repo_online,
|
lo_repo TYPE REF TO zcl_abapgit_repo,
|
||||||
lv_ts TYPE timestamp.
|
lv_ts TYPE timestamp.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_status> LIKE LINE OF lt_status.
|
FIELD-SYMBOLS: <ls_status> LIKE LINE OF lt_status.
|
||||||
|
@ -444,7 +444,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
|
||||||
|
|
||||||
ASSERT is_file IS INITIAL OR is_object IS INITIAL. " just one passed
|
ASSERT is_file IS INITIAL OR is_object IS INITIAL. " just one passed
|
||||||
|
|
||||||
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
|
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
|
||||||
lt_remote = lo_repo->get_files_remote( ).
|
lt_remote = lo_repo->get_files_remote( ).
|
||||||
lt_local = lo_repo->get_files_local( ).
|
lt_local = lo_repo->get_files_local( ).
|
||||||
lt_status = lo_repo->status( ).
|
lt_status = lo_repo->status( ).
|
||||||
|
|
|
@ -201,9 +201,9 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD pull.
|
METHOD pull.
|
||||||
|
|
||||||
DATA: lo_repo TYPE REF TO zcl_abapgit_repo_online.
|
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( ).
|
lo_repo->refresh( ).
|
||||||
|
|
||||||
|
|
|
@ -24,14 +24,15 @@ CLASS zcl_abapgit_repo DEFINITION
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_key) TYPE zif_abapgit_persistence=>ty_value .
|
VALUE(rv_key) TYPE zif_abapgit_persistence=>ty_value .
|
||||||
METHODS get_name
|
METHODS get_name
|
||||||
|
ABSTRACT
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_name) TYPE string
|
VALUE(rv_name) TYPE string
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS get_files_local
|
METHODS get_files_local
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!io_log TYPE REF TO zcl_abapgit_log OPTIONAL
|
!io_log TYPE REF TO zcl_abapgit_log OPTIONAL
|
||||||
!it_filter TYPE zif_abapgit_definitions=>ty_tadir_tt OPTIONAL
|
!it_filter TYPE zif_abapgit_definitions=>ty_tadir_tt OPTIONAL
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_item_tt
|
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_item_tt
|
||||||
RAISING
|
RAISING
|
||||||
|
@ -91,9 +92,7 @@ CLASS zcl_abapgit_repo DEFINITION
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS set_files_remote
|
METHODS set_files_remote
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!it_files TYPE zif_abapgit_definitions=>ty_files_tt
|
!it_files TYPE zif_abapgit_definitions=>ty_files_tt .
|
||||||
RAISING
|
|
||||||
zcx_abapgit_exception .
|
|
||||||
METHODS get_local_settings
|
METHODS get_local_settings
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rs_settings) TYPE zif_abapgit_persistence=>ty_repo-local_settings .
|
VALUE(rs_settings) TYPE zif_abapgit_persistence=>ty_repo-local_settings .
|
||||||
|
@ -107,15 +106,27 @@ CLASS zcl_abapgit_repo DEFINITION
|
||||||
VALUE(rt_list) TYPE scit_alvlist
|
VALUE(rt_list) TYPE scit_alvlist
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
METHODS has_remote_source
|
||||||
|
ABSTRACT
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_yes) TYPE abap_bool .
|
||||||
|
METHODS status
|
||||||
|
IMPORTING
|
||||||
|
!io_log TYPE REF TO zcl_abapgit_log OPTIONAL
|
||||||
|
RETURNING
|
||||||
|
VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
|
|
||||||
DATA mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt .
|
DATA mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt .
|
||||||
DATA mt_remote TYPE zif_abapgit_definitions=>ty_files_tt .
|
DATA mt_remote TYPE zif_abapgit_definitions=>ty_files_tt .
|
||||||
DATA mv_do_local_refresh TYPE abap_bool .
|
DATA mv_request_local_refresh TYPE abap_bool .
|
||||||
DATA mv_last_serialization TYPE timestamp .
|
DATA mv_last_serialization TYPE timestamp .
|
||||||
DATA ms_data TYPE zif_abapgit_persistence=>ty_repo .
|
DATA ms_data TYPE zif_abapgit_persistence=>ty_repo .
|
||||||
DATA mv_code_inspector_successful TYPE abap_bool .
|
DATA mv_code_inspector_successful TYPE abap_bool .
|
||||||
|
DATA mv_request_remote_refresh TYPE abap_bool .
|
||||||
|
DATA mt_status TYPE zif_abapgit_definitions=>ty_results_tt .
|
||||||
|
|
||||||
METHODS set
|
METHODS set
|
||||||
IMPORTING it_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt OPTIONAL
|
IMPORTING it_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt OPTIONAL
|
||||||
|
@ -127,17 +138,20 @@ CLASS zcl_abapgit_repo DEFINITION
|
||||||
is_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings OPTIONAL
|
is_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings OPTIONAL
|
||||||
iv_deserialized_at TYPE zif_abapgit_persistence=>ty_repo-deserialized_at OPTIONAL
|
iv_deserialized_at TYPE zif_abapgit_persistence=>ty_repo-deserialized_at OPTIONAL
|
||||||
iv_deserialized_by TYPE zif_abapgit_persistence=>ty_repo-deserialized_by OPTIONAL
|
iv_deserialized_by TYPE zif_abapgit_persistence=>ty_repo-deserialized_by OPTIONAL
|
||||||
RAISING zcx_abapgit_exception .
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
METHODS reset_status .
|
||||||
|
METHODS reset_remote .
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
METHODS: update_last_deserialize RAISING zcx_abapgit_exception.
|
METHODS update_last_deserialize
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_repo IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
@ -198,6 +212,9 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
|
||||||
|
|
||||||
update_local_checksums( lt_updated_files ).
|
update_local_checksums( lt_updated_files ).
|
||||||
update_last_deserialize( ).
|
update_last_deserialize( ).
|
||||||
|
reset_status( ).
|
||||||
|
|
||||||
|
COMMIT WORK AND WAIT.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -266,7 +283,7 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
" Serialization happened before and no refresh request
|
" Serialization happened before and no refresh request
|
||||||
IF mv_last_serialization IS NOT INITIAL AND mv_do_local_refresh = abap_false.
|
IF mv_last_serialization IS NOT INITIAL AND mv_request_local_refresh = abap_false.
|
||||||
rt_files = mt_local.
|
rt_files = mt_local.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -342,8 +359,8 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
GET TIME STAMP FIELD mv_last_serialization.
|
GET TIME STAMP FIELD mv_last_serialization.
|
||||||
mt_local = rt_files.
|
mt_local = rt_files.
|
||||||
mv_do_local_refresh = abap_false. " Fulfill refresh
|
mv_request_local_refresh = abap_false. " Fulfill refresh
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -381,18 +398,6 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_name.
|
|
||||||
|
|
||||||
IF ms_data-offline = abap_true.
|
|
||||||
rv_name = ms_data-url.
|
|
||||||
ELSE.
|
|
||||||
rv_name = zcl_abapgit_url=>name( ms_data-url ).
|
|
||||||
rv_name = cl_http_utility=>if_http_utility~unescape_url( rv_name ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD get_package.
|
METHOD get_package.
|
||||||
rv_package = ms_data-package.
|
rv_package = ms_data-package.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -403,24 +408,24 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD rebuild_local_checksums. "LOCAL (BASE)
|
METHOD rebuild_local_checksums.
|
||||||
|
|
||||||
DATA: lt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
DATA:
|
||||||
|
lt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
||||||
ls_last_item TYPE zif_abapgit_definitions=>ty_item,
|
ls_last_item TYPE zif_abapgit_definitions=>ty_item,
|
||||||
lt_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt.
|
lt_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_checksum> LIKE LINE OF lt_checksums,
|
FIELD-SYMBOLS:
|
||||||
|
<ls_checksum> LIKE LINE OF lt_checksums,
|
||||||
<ls_file_sig> LIKE LINE OF <ls_checksum>-files,
|
<ls_file_sig> LIKE LINE OF <ls_checksum>-files,
|
||||||
<ls_local> LIKE LINE OF lt_local.
|
<ls_local> LIKE LINE OF lt_local.
|
||||||
|
|
||||||
|
|
||||||
lt_local = get_files_local( ).
|
lt_local = get_files_local( ).
|
||||||
|
|
||||||
DELETE lt_local " Remove non-code related files except .abapgit
|
DELETE lt_local " Remove non-code related files except .abapgit
|
||||||
WHERE item IS INITIAL
|
WHERE item IS INITIAL
|
||||||
AND NOT ( file-path = zif_abapgit_definitions=>c_root_dir
|
AND NOT ( file-path = zif_abapgit_definitions=>c_root_dir
|
||||||
AND file-filename = zif_abapgit_definitions=>c_dot_abapgit ).
|
AND file-filename = zif_abapgit_definitions=>c_dot_abapgit ).
|
||||||
|
|
||||||
SORT lt_local BY item.
|
SORT lt_local BY item.
|
||||||
|
|
||||||
LOOP AT lt_local ASSIGNING <ls_local>.
|
LOOP AT lt_local ASSIGNING <ls_local>.
|
||||||
|
@ -436,13 +441,15 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
set( it_checksums = lt_checksums ).
|
set( it_checksums = lt_checksums ).
|
||||||
|
reset_status( ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD refresh.
|
METHOD refresh.
|
||||||
|
|
||||||
mv_do_local_refresh = abap_true.
|
mv_request_local_refresh = abap_true.
|
||||||
|
reset_remote( ).
|
||||||
|
|
||||||
IF iv_drop_cache = abap_true.
|
IF iv_drop_cache = abap_true.
|
||||||
CLEAR: mv_last_serialization, mt_local.
|
CLEAR: mv_last_serialization, mt_local.
|
||||||
|
@ -451,6 +458,18 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD reset_remote.
|
||||||
|
CLEAR mt_remote.
|
||||||
|
mv_request_remote_refresh = abap_true.
|
||||||
|
reset_status( ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD reset_status.
|
||||||
|
CLEAR mt_status.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD run_code_inspector.
|
METHOD run_code_inspector.
|
||||||
|
|
||||||
DATA: li_code_inspector TYPE REF TO zif_abapgit_code_inspector,
|
DATA: li_code_inspector TYPE REF TO zif_abapgit_code_inspector,
|
||||||
|
@ -565,6 +584,7 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
|
||||||
METHOD set_files_remote.
|
METHOD set_files_remote.
|
||||||
|
|
||||||
mt_remote = it_files.
|
mt_remote = it_files.
|
||||||
|
mv_request_remote_refresh = abap_false.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -576,6 +596,19 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD status.
|
||||||
|
|
||||||
|
IF lines( mt_status ) = 0.
|
||||||
|
mt_status = zcl_abapgit_file_status=>status(
|
||||||
|
io_repo = me
|
||||||
|
io_log = io_log ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
rt_results = mt_status.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD update_last_deserialize.
|
METHOD update_last_deserialize.
|
||||||
|
|
||||||
DATA: lv_deserialized_at TYPE zif_abapgit_persistence=>ty_repo-deserialized_at,
|
DATA: lv_deserialized_at TYPE zif_abapgit_persistence=>ty_repo-deserialized_at,
|
||||||
|
|
|
@ -133,7 +133,7 @@ CLASS ZCL_ABAPGIT_REPO_CONTENT_LIST IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD build_repo_items_online.
|
METHOD build_repo_items_online.
|
||||||
|
|
||||||
DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online,
|
DATA:
|
||||||
ls_file TYPE zif_abapgit_definitions=>ty_repo_file,
|
ls_file TYPE zif_abapgit_definitions=>ty_repo_file,
|
||||||
lt_status TYPE zif_abapgit_definitions=>ty_results_tt.
|
lt_status TYPE zif_abapgit_definitions=>ty_results_tt.
|
||||||
|
|
||||||
|
@ -141,8 +141,7 @@ CLASS ZCL_ABAPGIT_REPO_CONTENT_LIST IMPLEMENTATION.
|
||||||
<ls_repo_item> LIKE LINE OF rt_repo_items.
|
<ls_repo_item> LIKE LINE OF rt_repo_items.
|
||||||
|
|
||||||
|
|
||||||
lo_repo_online ?= mo_repo.
|
lt_status = mo_repo->status( mo_log ).
|
||||||
lt_status = lo_repo_online->status( mo_log ).
|
|
||||||
|
|
||||||
LOOP AT lt_status ASSIGNING <ls_status>.
|
LOOP AT lt_status ASSIGNING <ls_status>.
|
||||||
AT NEW obj_name. "obj_type + obj_name
|
AT NEW obj_name. "obj_type + obj_name
|
||||||
|
|
|
@ -5,11 +5,47 @@ CLASS zcl_abapgit_repo_offline DEFINITION
|
||||||
CREATE PUBLIC .
|
CREATE PUBLIC .
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
METHODS get_name
|
||||||
|
REDEFINITION .
|
||||||
|
METHODS has_remote_source
|
||||||
|
REDEFINITION .
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
|
|
||||||
|
METHODS reset_remote
|
||||||
|
REDEFINITION .
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_REPO_OFFLINE IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_REPO_OFFLINE IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD get_name.
|
||||||
|
rv_name = ms_data-url.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD has_remote_source.
|
||||||
|
rv_yes = boolc( lines( mt_remote ) > 0 ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD reset_remote.
|
||||||
|
|
||||||
|
DATA lt_backup LIKE mt_remote.
|
||||||
|
|
||||||
|
" online repo has online source to renew data from, offline does not
|
||||||
|
" so offline repo preserves the remote
|
||||||
|
" in case of partial pull failure the user will immediately see the new difference
|
||||||
|
" UI will detect "pullable" content based on mt_status
|
||||||
|
" in the uniform way both for online and offline repos
|
||||||
|
" for more details see discussion in 2096 and 1953
|
||||||
|
|
||||||
|
lt_backup = mt_remote.
|
||||||
|
super->reset_remote( ).
|
||||||
|
set_files_remote( lt_backup ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -13,11 +13,6 @@ CLASS zcl_abapgit_repo_online DEFINITION
|
||||||
ALIASES push
|
ALIASES push
|
||||||
FOR zif_abapgit_git_operations~push .
|
FOR zif_abapgit_git_operations~push .
|
||||||
|
|
||||||
METHODS constructor
|
|
||||||
IMPORTING
|
|
||||||
!is_data TYPE zif_abapgit_persistence=>ty_repo
|
|
||||||
RAISING
|
|
||||||
zcx_abapgit_exception .
|
|
||||||
METHODS get_url
|
METHODS get_url
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_url) TYPE zif_abapgit_persistence=>ty_repo-url .
|
VALUE(rv_url) TYPE zif_abapgit_persistence=>ty_repo-url .
|
||||||
|
@ -44,38 +39,26 @@ CLASS zcl_abapgit_repo_online DEFINITION
|
||||||
VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt
|
VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_objects_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS status
|
|
||||||
IMPORTING
|
|
||||||
!io_log TYPE REF TO zcl_abapgit_log OPTIONAL
|
|
||||||
RETURNING
|
|
||||||
VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt
|
|
||||||
RAISING
|
|
||||||
zcx_abapgit_exception .
|
|
||||||
METHODS get_unnecessary_local_objs
|
METHODS get_unnecessary_local_objs
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_unnecessary_local_objects) TYPE zif_abapgit_definitions=>ty_tadir_tt
|
VALUE(rt_unnecessary_local_objects) TYPE zif_abapgit_definitions=>ty_tadir_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
|
||||||
METHODS deserialize
|
|
||||||
REDEFINITION .
|
|
||||||
METHODS get_files_remote
|
METHODS get_files_remote
|
||||||
REDEFINITION .
|
REDEFINITION .
|
||||||
|
METHODS get_name
|
||||||
|
REDEFINITION .
|
||||||
METHODS rebuild_local_checksums
|
METHODS rebuild_local_checksums
|
||||||
REDEFINITION .
|
REDEFINITION .
|
||||||
METHODS refresh
|
METHODS has_remote_source
|
||||||
REDEFINITION .
|
REDEFINITION .
|
||||||
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
DATA mt_objects TYPE zif_abapgit_definitions=>ty_objects_tt .
|
DATA mt_objects TYPE zif_abapgit_definitions=>ty_objects_tt .
|
||||||
DATA mv_branch TYPE zif_abapgit_definitions=>ty_sha1 .
|
DATA mv_branch TYPE zif_abapgit_definitions=>ty_sha1 .
|
||||||
DATA mv_initialized TYPE abap_bool .
|
|
||||||
DATA mt_status TYPE zif_abapgit_definitions=>ty_results_tt .
|
|
||||||
|
|
||||||
METHODS reset_status .
|
|
||||||
METHODS initialize
|
|
||||||
RAISING
|
|
||||||
zcx_abapgit_exception .
|
|
||||||
METHODS handle_stage_ignore
|
METHODS handle_stage_ignore
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!io_stage TYPE REF TO zcl_abapgit_stage
|
!io_stage TYPE REF TO zcl_abapgit_stage
|
||||||
|
@ -86,6 +69,9 @@ CLASS zcl_abapgit_repo_online DEFINITION
|
||||||
!it_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
!it_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
METHODS fetch_remote
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -93,24 +79,30 @@ ENDCLASS.
|
||||||
CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD fetch_remote.
|
||||||
|
|
||||||
super->constructor( is_data ).
|
DATA: lo_progress TYPE REF TO zcl_abapgit_progress,
|
||||||
|
ls_pull TYPE zcl_abapgit_git_porcelain=>ty_pull_result.
|
||||||
|
|
||||||
mv_initialized = abap_false.
|
IF mv_request_remote_refresh = abap_false.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
CREATE OBJECT lo_progress
|
||||||
|
EXPORTING
|
||||||
|
iv_total = 1.
|
||||||
|
|
||||||
|
|
||||||
METHOD deserialize.
|
lo_progress->show( iv_current = 1
|
||||||
|
iv_text = 'Fetch remote files' ) ##NO_TEXT.
|
||||||
|
|
||||||
initialize( ).
|
ls_pull = zcl_abapgit_git_porcelain=>pull(
|
||||||
|
iv_url = get_url( )
|
||||||
|
iv_branch_name = get_branch_name( ) ).
|
||||||
|
|
||||||
super->deserialize( is_checks ).
|
set_files_remote( ls_pull-files ).
|
||||||
|
set_objects( ls_pull-objects ).
|
||||||
reset_status( ).
|
mv_branch = ls_pull-branch.
|
||||||
|
|
||||||
COMMIT WORK AND WAIT.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -121,22 +113,25 @@ CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_files_remote.
|
METHOD get_files_remote.
|
||||||
initialize( ).
|
fetch_remote( ).
|
||||||
|
rt_files = super->get_files_remote( ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
rt_files = mt_remote.
|
|
||||||
|
METHOD get_name.
|
||||||
|
rv_name = zcl_abapgit_url=>name( ms_data-url ).
|
||||||
|
rv_name = cl_http_utility=>if_http_utility~unescape_url( rv_name ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_objects.
|
METHOD get_objects.
|
||||||
initialize( ).
|
fetch_remote( ).
|
||||||
|
|
||||||
rt_objects = mt_objects.
|
rt_objects = mt_objects.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_sha1_remote.
|
METHOD get_sha1_remote.
|
||||||
initialize( ).
|
fetch_remote( ).
|
||||||
|
|
||||||
rv_sha1 = mv_branch.
|
rv_sha1 = mv_branch.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -229,34 +224,36 @@ CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD initialize.
|
METHOD has_remote_source.
|
||||||
IF mv_initialized = abap_false.
|
rv_yes = abap_true.
|
||||||
refresh( ).
|
|
||||||
ENDIF.
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD rebuild_local_checksums. "REMOTE
|
METHOD rebuild_local_checksums.
|
||||||
|
|
||||||
DATA: lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
" TODO: method unify to base class !
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||||
lt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
lt_local TYPE zif_abapgit_definitions=>ty_files_item_tt,
|
||||||
ls_last_item TYPE zif_abapgit_definitions=>ty_item,
|
ls_last_item TYPE zif_abapgit_definitions=>ty_item,
|
||||||
lt_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt.
|
lt_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_checksum> LIKE LINE OF lt_checksums,
|
FIELD-SYMBOLS:
|
||||||
|
<ls_checksum> LIKE LINE OF lt_checksums,
|
||||||
<ls_file_sig> LIKE LINE OF <ls_checksum>-files,
|
<ls_file_sig> LIKE LINE OF <ls_checksum>-files,
|
||||||
<ls_remote> LIKE LINE OF lt_remote,
|
<ls_remote> LIKE LINE OF lt_remote,
|
||||||
<ls_local> LIKE LINE OF lt_local.
|
<ls_local> LIKE LINE OF lt_local.
|
||||||
|
|
||||||
lt_remote = get_files_remote( ).
|
|
||||||
lt_local = get_files_local( ).
|
lt_local = get_files_local( ).
|
||||||
|
|
||||||
DELETE lt_local " Remove non-code related files except .abapgit
|
DELETE lt_local " Remove non-code related files except .abapgit
|
||||||
WHERE item IS INITIAL
|
WHERE item IS INITIAL
|
||||||
AND NOT ( file-path = zif_abapgit_definitions=>c_root_dir
|
AND NOT ( file-path = zif_abapgit_definitions=>c_root_dir
|
||||||
AND file-filename = zif_abapgit_definitions=>c_dot_abapgit ).
|
AND file-filename = zif_abapgit_definitions=>c_dot_abapgit ).
|
||||||
|
|
||||||
SORT lt_local BY item.
|
SORT lt_local BY item.
|
||||||
|
|
||||||
|
lt_remote = get_files_remote( ).
|
||||||
SORT lt_remote BY path filename.
|
SORT lt_remote BY path filename.
|
||||||
|
|
||||||
LOOP AT lt_local ASSIGNING <ls_local>.
|
LOOP AT lt_local ASSIGNING <ls_local>.
|
||||||
|
@ -269,7 +266,7 @@ CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
|
||||||
READ TABLE lt_remote ASSIGNING <ls_remote>
|
READ TABLE lt_remote ASSIGNING <ls_remote>
|
||||||
WITH KEY path = <ls_local>-file-path filename = <ls_local>-file-filename
|
WITH KEY path = <ls_local>-file-path filename = <ls_local>-file-filename
|
||||||
BINARY SEARCH.
|
BINARY SEARCH.
|
||||||
CHECK sy-subrc = 0. " Ignore new ones
|
CHECK sy-subrc = 0. " Ignore new local ones
|
||||||
|
|
||||||
APPEND INITIAL LINE TO <ls_checksum>-files ASSIGNING <ls_file_sig>.
|
APPEND INITIAL LINE TO <ls_checksum>-files ASSIGNING <ls_file_sig>.
|
||||||
MOVE-CORRESPONDING <ls_local>-file TO <ls_file_sig>.
|
MOVE-CORRESPONDING <ls_local>-file TO <ls_file_sig>.
|
||||||
|
@ -288,46 +285,13 @@ CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD refresh.
|
|
||||||
|
|
||||||
DATA: lo_progress TYPE REF TO zcl_abapgit_progress,
|
|
||||||
ls_pull TYPE zcl_abapgit_git_porcelain=>ty_pull_result.
|
|
||||||
|
|
||||||
super->refresh( iv_drop_cache ).
|
|
||||||
reset_status( ).
|
|
||||||
|
|
||||||
CREATE OBJECT lo_progress
|
|
||||||
EXPORTING
|
|
||||||
iv_total = 1.
|
|
||||||
|
|
||||||
lo_progress->show( iv_current = 1
|
|
||||||
iv_text = 'Fetch remote files' ) ##NO_TEXT.
|
|
||||||
|
|
||||||
ls_pull = zcl_abapgit_git_porcelain=>pull(
|
|
||||||
iv_url = get_url( )
|
|
||||||
iv_branch_name = get_branch_name( ) ).
|
|
||||||
|
|
||||||
mt_remote = ls_pull-files.
|
|
||||||
mt_objects = ls_pull-objects.
|
|
||||||
mv_branch = ls_pull-branch.
|
|
||||||
|
|
||||||
mv_initialized = abap_true.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD reset_status.
|
|
||||||
CLEAR mt_status.
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD set_branch_name.
|
METHOD set_branch_name.
|
||||||
|
|
||||||
IF ms_data-local_settings-write_protected = abap_true.
|
IF ms_data-local_settings-write_protected = abap_true.
|
||||||
zcx_abapgit_exception=>raise( 'Cannot switch branch. Local code is write-protected by repo config' ).
|
zcx_abapgit_exception=>raise( 'Cannot switch branch. Local code is write-protected by repo config' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
mv_initialized = abap_false.
|
reset_remote( ).
|
||||||
set( iv_branch_name = iv_branch_name ).
|
set( iv_branch_name = iv_branch_name ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -344,25 +308,12 @@ CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( 'Cannot change URL. Local code is write-protected by repo config' ).
|
zcx_abapgit_exception=>raise( 'Cannot change URL. Local code is write-protected by repo config' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
mv_initialized = abap_false.
|
reset_remote( ).
|
||||||
set( iv_url = iv_url ).
|
set( iv_url = iv_url ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD status.
|
|
||||||
|
|
||||||
initialize( ).
|
|
||||||
|
|
||||||
IF lines( mt_status ) = 0.
|
|
||||||
mt_status = zcl_abapgit_file_status=>status( io_repo = me
|
|
||||||
io_log = io_log ).
|
|
||||||
ENDIF.
|
|
||||||
rt_results = mt_status.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_git_operations~create_branch.
|
METHOD zif_abapgit_git_operations~create_branch.
|
||||||
|
|
||||||
DATA: lv_sha1 TYPE zif_abapgit_definitions=>ty_sha1.
|
DATA: lv_sha1 TYPE zif_abapgit_definitions=>ty_sha1.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user