mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Diff calculation: improve performance (#4603)
* Diff calculation improve performance * optimize table access Co-authored-by: Christian Günter <Christian.Guenter@zuerich.ch> Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
72f08d64b1
commit
d7e43fc0b9
|
@ -195,11 +195,12 @@ CLASS zcl_abapgit_gui_page_diff DEFINITION
|
|||
VALUE(ri_html) TYPE REF TO zif_abapgit_html
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS filter_diff_by_files
|
||||
METHODS is_file_requested
|
||||
IMPORTING
|
||||
!it_files TYPE zif_abapgit_definitions=>ty_stage_tt
|
||||
CHANGING
|
||||
!ct_diff_files TYPE ty_file_diffs .
|
||||
it_files TYPE zif_abapgit_definitions=>ty_stage_tt
|
||||
is_status TYPE zif_abapgit_definitions=>ty_result
|
||||
RETURNING
|
||||
VALUE(rv_is_file_requested) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -459,18 +460,19 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
|
|||
path ASCENDING
|
||||
filename ASCENDING.
|
||||
LOOP AT lt_status ASSIGNING <ls_status> WHERE match IS INITIAL.
|
||||
|
||||
IF is_file_requested( it_files = it_files
|
||||
is_status = <ls_status> ) = abap_true.
|
||||
|
||||
append_diff( it_remote = lt_remote
|
||||
it_local = lt_local
|
||||
is_status = <ls_status> ).
|
||||
ENDLOOP.
|
||||
|
||||
ENDIF.
|
||||
|
||||
filter_diff_by_files(
|
||||
EXPORTING
|
||||
it_files = it_files
|
||||
CHANGING
|
||||
ct_diff_files = mt_diff_files ).
|
||||
ENDLOOP.
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -504,28 +506,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD filter_diff_by_files.
|
||||
|
||||
FIELD-SYMBOLS: <ls_diff_file> TYPE ty_file_diff.
|
||||
|
||||
IF lines( it_files ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
" Diff only for specified files
|
||||
LOOP AT ct_diff_files ASSIGNING <ls_diff_file>.
|
||||
|
||||
READ TABLE it_files TRANSPORTING NO FIELDS
|
||||
WITH KEY file-filename = <ls_diff_file>-filename.
|
||||
IF sy-subrc <> 0.
|
||||
DELETE TABLE ct_diff_files FROM <ls_diff_file>.
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_normalized_fname_with_path.
|
||||
|
||||
rv_filename = normalize_path( is_diff-path )
|
||||
|
@ -1030,4 +1010,20 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
|
|||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_file_requested.
|
||||
|
||||
IF lines( it_files ) = 0.
|
||||
rv_is_file_requested = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE it_files WITH KEY file-path = is_status-path
|
||||
file-filename = is_status-filename
|
||||
TRANSPORTING NO FIELDS.
|
||||
rv_is_file_requested = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
Loading…
Reference in New Issue
Block a user