Improve performance of push for large repos (#6390)

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Marc Bernard 2023-08-28 10:48:40 -04:00 committed by GitHub
parent 095a04834a
commit b1582db9b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 6 deletions

View File

@ -216,7 +216,7 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION.
CLEAR lt_nodes.
* files
LOOP AT it_expanded ASSIGNING <ls_exp> WHERE path = <ls_folder>-path.
LOOP AT it_expanded ASSIGNING <ls_exp> USING KEY path WHERE path = <ls_folder>-path.
APPEND INITIAL LINE TO lt_nodes ASSIGNING <ls_node>.
<ls_node>-chmod = <ls_exp>-chmod.
<ls_node>-name = <ls_exp>-name.
@ -577,7 +577,7 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION.
APPEND <ls_stage>-file TO lt_blobs.
READ TABLE lt_expanded ASSIGNING <ls_exp> WITH KEY
READ TABLE lt_expanded ASSIGNING <ls_exp> WITH TABLE KEY path_name COMPONENTS
name = <ls_stage>-file-filename
path = <ls_stage>-file-path.
IF sy-subrc <> 0. " new files
@ -595,11 +595,12 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION.
<ls_updated>-sha1 = lv_sha1. "New sha1
WHEN zif_abapgit_definitions=>c_method-rm.
DELETE lt_expanded
WHERE name = <ls_stage>-file-filename
AND path = <ls_stage>-file-path.
READ TABLE lt_expanded ASSIGNING <ls_exp> WITH TABLE KEY path_name COMPONENTS
name = <ls_stage>-file-filename
path = <ls_stage>-file-path.
ASSERT sy-subrc = 0.
CLEAR <ls_exp>-sha1. " Mark as deleted
CLEAR <ls_updated>-sha1. " Mark as deleted
WHEN OTHERS.
@ -607,6 +608,8 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION.
ENDCASE.
ENDLOOP.
DELETE lt_expanded WHERE sha1 IS INITIAL.
lt_trees = build_trees( lt_expanded ).
receive_pack_push(

View File

@ -92,7 +92,9 @@ INTERFACE zif_abapgit_git_definitions
chmod TYPE ty_chmod,
END OF ty_expanded .
TYPES:
ty_expanded_tt TYPE STANDARD TABLE OF ty_expanded WITH DEFAULT KEY .
ty_expanded_tt TYPE STANDARD TABLE OF ty_expanded WITH DEFAULT KEY
WITH NON-UNIQUE SORTED KEY path_name COMPONENTS path name
WITH NON-UNIQUE SORTED KEY path COMPONENTS path.
TYPES:
BEGIN OF ty_create,