Files: Introduce secondary keys (#5101)

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Christian Günter 2021-11-05 05:32:39 +01:00 committed by GitHub
parent 57879a87ed
commit 53343a98d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 48 additions and 24 deletions

View File

@ -153,6 +153,7 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
APPEND <ls_local> TO ls_user_files-local. APPEND <ls_local> TO ls_user_files-local.
LOOP AT ls_files-remote ASSIGNING <ls_remote> LOOP AT ls_files-remote ASSIGNING <ls_remote>
USING KEY file
WHERE filename = <ls_local>-file-filename WHERE filename = <ls_local>-file-filename
AND path <> <ls_local>-file-path AND path <> <ls_local>-file-path
AND filename <> 'package.devc.xml'. AND filename <> 'package.devc.xml'.

View File

@ -65,7 +65,9 @@ CLASS ZCL_ABAPGIT_DATA_CONFIG IMPLEMENTATION.
DATA lx_ajson TYPE REF TO zcx_abapgit_ajson_error. DATA lx_ajson TYPE REF TO zcx_abapgit_ajson_error.
CLEAR mt_config. CLEAR mt_config.
LOOP AT it_files INTO ls_file WHERE path = zif_abapgit_data_config=>c_default_path LOOP AT it_files INTO ls_file
USING KEY file_path
WHERE path = zif_abapgit_data_config=>c_default_path
AND filename CP |*.{ zif_abapgit_data_config=>c_config }.{ zif_abapgit_data_config=>c_default_format }|. AND filename CP |*.{ zif_abapgit_data_config=>c_config }.{ zif_abapgit_data_config=>c_default_format }|.
TRY. TRY.
lo_ajson = zcl_abapgit_ajson=>parse( zcl_abapgit_convert=>xstring_to_string_utf8( ls_file-data ) ). lo_ajson = zcl_abapgit_ajson=>parse( zcl_abapgit_convert=>xstring_to_string_utf8( ls_file-data ) ).

View File

@ -185,9 +185,10 @@ CLASS ZCL_ABAPGIT_DATA_DESERIALIZER IMPLEMENTATION.
lr_data = zcl_abapgit_data_utils=>build_table_itab( ls_config-name ). lr_data = zcl_abapgit_data_utils=>build_table_itab( ls_config-name ).
READ TABLE it_files INTO ls_file WITH KEY READ TABLE it_files INTO ls_file
path = zif_abapgit_data_config=>c_default_path WITH KEY file_path
filename = zcl_abapgit_data_utils=>build_filename( ls_config ). COMPONENTS path = zif_abapgit_data_config=>c_default_path
filename = zcl_abapgit_data_utils=>build_filename( ls_config ).
IF sy-subrc = 0. IF sy-subrc = 0.
convert_json_to_itab( convert_json_to_itab(
ir_data = lr_data ir_data = lr_data

View File

@ -656,7 +656,8 @@ CLASS zcl_abapgit_file_status IMPLEMENTATION.
<ls_result> = build_new_local( <ls_local> ). <ls_result> = build_new_local( <ls_local> ).
" Check if same file exists in different location " Check if same file exists in different location
READ TABLE ct_remote ASSIGNING <ls_remote> READ TABLE ct_remote ASSIGNING <ls_remote>
WITH KEY filename = <ls_local>-file-filename. WITH KEY file
COMPONENTS filename = <ls_local>-file-filename.
IF sy-subrc = 0 AND <ls_local>-file-sha1 = <ls_remote>-sha1. IF sy-subrc = 0 AND <ls_local>-file-sha1 = <ls_remote>-sha1.
<ls_result>-packmove = abap_true. <ls_result>-packmove = abap_true.
ELSEIF sy-subrc = 4. ELSEIF sy-subrc = 4.

View File

@ -212,10 +212,14 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
iv_ext = iv_ext ). iv_ext = iv_ext ).
IF mv_path IS NOT INITIAL. IF mv_path IS NOT INITIAL.
READ TABLE mt_files TRANSPORTING NO FIELDS WITH KEY path = mv_path READ TABLE mt_files TRANSPORTING NO FIELDS
filename = lv_filename. WITH KEY file_path
COMPONENTS path = mv_path
filename = lv_filename.
ELSE. ELSE.
READ TABLE mt_files TRANSPORTING NO FIELDS WITH KEY filename = lv_filename. READ TABLE mt_files TRANSPORTING NO FIELDS
WITH KEY file
COMPONENTS filename = lv_filename.
ENDIF. ENDIF.
IF sy-subrc = 0. IF sy-subrc = 0.
@ -277,10 +281,14 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION.
IF mv_path IS NOT INITIAL. IF mv_path IS NOT INITIAL.
READ TABLE mt_files ASSIGNING <ls_file> WITH KEY path = mv_path READ TABLE mt_files ASSIGNING <ls_file>
filename = iv_filename. WITH KEY file_path
COMPONENTS path = mv_path
filename = iv_filename.
ELSE. ELSE.
READ TABLE mt_files ASSIGNING <ls_file> WITH KEY filename = iv_filename. READ TABLE mt_files ASSIGNING <ls_file>
WITH KEY file
COMPONENTS filename = iv_filename.
ENDIF. ENDIF.
IF sy-subrc <> 0. IF sy-subrc <> 0.

View File

@ -55,7 +55,9 @@ CLASS zcl_abapgit_object_smim IMPLEMENTATION.
lt_files = mo_files->get_files( ). lt_files = mo_files->get_files( ).
READ TABLE lt_files ASSIGNING <ls_file> WITH KEY filename = lv_filename. READ TABLE lt_files ASSIGNING <ls_file>
WITH KEY file
COMPONENTS filename = lv_filename.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'SMIM, file not found' ). zcx_abapgit_exception=>raise( 'SMIM, file not found' ).
ENDIF. ENDIF.

View File

@ -341,7 +341,8 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
RETURN. RETURN.
ENDIF. ENDIF.
READ TABLE it_remote WITH KEY filename = is_result-filename INTO ls_remote_file. READ TABLE it_remote WITH KEY file
COMPONENTS filename = is_result-filename INTO ls_remote_file.
IF sy-subrc <> 0. "if file does not exist in remote, we don't need to validate IF sy-subrc <> 0. "if file does not exist in remote, we don't need to validate
RETURN. RETURN.
ENDIF. ENDIF.

View File

@ -414,8 +414,9 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
get_files_remote( ). get_files_remote( ).
READ TABLE mt_remote ASSIGNING <ls_remote> READ TABLE mt_remote ASSIGNING <ls_remote>
WITH KEY path = zif_abapgit_definitions=>c_root_dir WITH KEY file_path
filename = zif_abapgit_definitions=>c_dot_abapgit. COMPONENTS path = zif_abapgit_definitions=>c_root_dir
filename = zif_abapgit_definitions=>c_dot_abapgit.
IF sy-subrc = 0. IF sy-subrc = 0.
ro_dot = zcl_abapgit_dot_abapgit=>deserialize( <ls_remote>-data ). ro_dot = zcl_abapgit_dot_abapgit=>deserialize( <ls_remote>-data ).
set_dot_abapgit( ro_dot ). set_dot_abapgit( ro_dot ).
@ -432,8 +433,9 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
get_files_remote( ). get_files_remote( ).
READ TABLE mt_remote ASSIGNING <ls_remote> READ TABLE mt_remote ASSIGNING <ls_remote>
WITH KEY path = zif_abapgit_definitions=>c_root_dir WITH KEY file_path
filename = zif_abapgit_apack_definitions=>c_dot_apack_manifest. COMPONENTS path = zif_abapgit_definitions=>c_root_dir
filename = zif_abapgit_apack_definitions=>c_dot_apack_manifest.
IF sy-subrc = 0. IF sy-subrc = 0.
ro_dot = zcl_abapgit_apack_reader=>deserialize( iv_package_name = ms_data-package ro_dot = zcl_abapgit_apack_reader=>deserialize( iv_package_name = ms_data-package
iv_xstr = <ls_remote>-data ). iv_xstr = <ls_remote>-data ).
@ -458,7 +460,8 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
mi_data_config = ri_config. mi_data_config = ri_config.
READ TABLE mt_remote ASSIGNING <ls_remote> READ TABLE mt_remote ASSIGNING <ls_remote>
WITH KEY path = zif_abapgit_data_config=>c_default_path. WITH KEY file_path
COMPONENTS path = zif_abapgit_data_config=>c_default_path.
IF sy-subrc = 0. IF sy-subrc = 0.
ri_config->from_json( mt_remote ). ri_config->from_json( mt_remote ).
ENDIF. ENDIF.

View File

@ -226,8 +226,9 @@ CLASS ZCL_ABAPGIT_REPO_CONTENT_LIST IMPLEMENTATION.
IF lines( lt_remote ) > lc_new_repo_size. IF lines( lt_remote ) > lc_new_repo_size.
" Less files means it's a new repo (with just readme and license, for example) which is ok " Less files means it's a new repo (with just readme and license, for example) which is ok
READ TABLE lt_remote TRANSPORTING NO FIELDS READ TABLE lt_remote TRANSPORTING NO FIELDS
WITH KEY path = zif_abapgit_definitions=>c_root_dir WITH KEY file_path
filename = zif_abapgit_definitions=>c_dot_abapgit. COMPONENTS path = zif_abapgit_definitions=>c_root_dir
filename = zif_abapgit_definitions=>c_dot_abapgit.
IF sy-subrc <> 0. IF sy-subrc <> 0.
mi_log->add_warning( |Cannot find .abapgit.xml - Is this an abapGit repository?| ). mi_log->add_warning( |Cannot find .abapgit.xml - Is this an abapGit repository?| ).
ENDIF. ENDIF.

View File

@ -88,7 +88,8 @@ CLASS zcl_abapgit_repo_online IMPLEMENTATION.
IF zcl_abapgit_objects=>exists( ls_item ) = abap_false. IF zcl_abapgit_objects=>exists( ls_item ) = abap_false.
" Check if any package is included in remote " Check if any package is included in remote
READ TABLE mt_remote TRANSPORTING NO FIELDS READ TABLE mt_remote TRANSPORTING NO FIELDS
WITH KEY filename = zcl_abapgit_filename_logic=>c_package_file. WITH KEY file
COMPONENTS filename = zcl_abapgit_filename_logic=>c_package_file.
IF sy-subrc <> 0. IF sy-subrc <> 0.
" If not, prompt to create it " If not, prompt to create it
lv_package = zcl_abapgit_services_basis=>create_package( iv_package ). lv_package = zcl_abapgit_services_basis=>create_package( iv_package ).

View File

@ -381,8 +381,9 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
READ TABLE it_remote ASSIGNING <ls_remote> READ TABLE it_remote ASSIGNING <ls_remote>
WITH KEY filename = is_status-filename WITH KEY file_path
path = is_status-path. COMPONENTS path = is_status-path
filename = is_status-filename.
IF sy-subrc <> 0. IF sy-subrc <> 0.
ASSIGN ls_r_dummy TO <ls_remote>. ASSIGN ls_r_dummy TO <ls_remote>.
ENDIF. ENDIF.

View File

@ -30,7 +30,9 @@ INTERFACE zif_abapgit_definitions
TYPES: data TYPE xstring, TYPES: data TYPE xstring,
END OF ty_file . END OF ty_file .
TYPES: TYPES:
ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY . ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY
WITH UNIQUE SORTED KEY file_path COMPONENTS path filename
WITH NON-UNIQUE SORTED KEY file COMPONENTS filename.
TYPES: TYPES:
ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY . ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY .
TYPES ty_git_branch_type TYPE c LENGTH 2 . TYPES ty_git_branch_type TYPE c LENGTH 2 .