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
|
VALUE(ri_html) TYPE REF TO zif_abapgit_html
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS filter_diff_by_files
|
METHODS is_file_requested
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!it_files TYPE zif_abapgit_definitions=>ty_stage_tt
|
it_files TYPE zif_abapgit_definitions=>ty_stage_tt
|
||||||
CHANGING
|
is_status TYPE zif_abapgit_definitions=>ty_result
|
||||||
!ct_diff_files TYPE ty_file_diffs .
|
RETURNING
|
||||||
|
VALUE(rv_is_file_requested) TYPE abap_bool.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -459,19 +460,20 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
|
||||||
path ASCENDING
|
path ASCENDING
|
||||||
filename ASCENDING.
|
filename ASCENDING.
|
||||||
LOOP AT lt_status ASSIGNING <ls_status> WHERE match IS INITIAL.
|
LOOP AT lt_status ASSIGNING <ls_status> WHERE match IS INITIAL.
|
||||||
append_diff( it_remote = lt_remote
|
|
||||||
it_local = lt_local
|
IF is_file_requested( it_files = it_files
|
||||||
is_status = <ls_status> ).
|
is_status = <ls_status> ) = abap_true.
|
||||||
|
|
||||||
|
append_diff( it_remote = lt_remote
|
||||||
|
it_local = lt_local
|
||||||
|
is_status = <ls_status> ).
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
filter_diff_by_files(
|
|
||||||
EXPORTING
|
|
||||||
it_files = it_files
|
|
||||||
CHANGING
|
|
||||||
ct_diff_files = mt_diff_files ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -504,28 +506,6 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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.
|
METHOD get_normalized_fname_with_path.
|
||||||
|
|
||||||
rv_filename = normalize_path( is_diff-path )
|
rv_filename = normalize_path( is_diff-path )
|
||||||
|
@ -1030,4 +1010,20 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user