mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
file sha1 at local checksums #407
This commit is contained in:
parent
85ecc3936a
commit
02a0014967
|
@ -8,13 +8,18 @@ TYPES: ty_type TYPE c LENGTH 6,
|
|||
ty_bitbyte TYPE c LENGTH 8,
|
||||
ty_sha1 TYPE c LENGTH 40.
|
||||
|
||||
TYPES: BEGIN OF ty_file,
|
||||
TYPES: BEGIN OF ty_file_signature,
|
||||
path TYPE string,
|
||||
filename TYPE string,
|
||||
data TYPE xstring,
|
||||
sha1 TYPE ty_sha1,
|
||||
END OF ty_file_signature.
|
||||
|
||||
TYPES: BEGIN OF ty_file.
|
||||
INCLUDE TYPE ty_file_signature.
|
||||
TYPES: data TYPE xstring,
|
||||
END OF ty_file.
|
||||
TYPES: ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY.
|
||||
TYPES: ty_file_signatures_tt TYPE STANDARD TABLE OF ty_file_signature WITH DEFAULT KEY.
|
||||
|
||||
TYPES: ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY.
|
||||
TYPES: tt_w3urls TYPE STANDARD TABLE OF w3url WITH DEFAULT KEY.
|
||||
|
|
|
@ -22,7 +22,7 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
<ls_result> LIKE LINE OF ct_results.
|
||||
|
||||
|
||||
lt_before = io_repo->get_local_checksums( ).
|
||||
lt_before = io_repo->get_local_checksums( ).
|
||||
lt_current = io_repo->build_local_checksums( ).
|
||||
|
||||
LOOP AT ct_results ASSIGNING <ls_result>.
|
||||
|
|
|
@ -91,8 +91,9 @@ CLASS lcl_persistence_repo DEFINITION FINAL.
|
|||
|
||||
PUBLIC SECTION.
|
||||
TYPES: BEGIN OF ty_local_checksum,
|
||||
item TYPE ty_item,
|
||||
sha1 TYPE ty_sha1,
|
||||
item TYPE ty_item,
|
||||
sha1 TYPE ty_sha1,
|
||||
files TYPE ty_file_signatures_tt,
|
||||
END OF ty_local_checksum.
|
||||
|
||||
TYPES: ty_local_checksum_tt TYPE STANDARD TABLE OF ty_local_checksum WITH DEFAULT KEY.
|
||||
|
|
|
@ -44,6 +44,8 @@ CLASS lcl_repo DEFINITION ABSTRACT FRIENDS lcl_repo_srv.
|
|||
build_local_checksums
|
||||
RETURNING VALUE(rt_checksums) TYPE lcl_persistence_repo=>ty_local_checksum_tt
|
||||
RAISING lcx_exception,
|
||||
refresh_local_checksums
|
||||
RAISING lcx_exception,
|
||||
is_offline
|
||||
RETURNING VALUE(rv_offline) TYPE abap_bool
|
||||
RAISING lcx_exception.
|
||||
|
|
|
@ -332,26 +332,30 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
METHOD build_local_checksums.
|
||||
|
||||
DATA: lv_xstring TYPE xstring,
|
||||
lt_local TYPE ty_files_item_tt.
|
||||
lt_local TYPE SORTED TABLE OF ty_file_item WITH NON-UNIQUE KEY item.
|
||||
|
||||
FIELD-SYMBOLS: <ls_item> LIKE LINE OF lt_local,
|
||||
<ls_checksum> LIKE LINE OF rt_checksums,
|
||||
<ls_file_sig> LIKE LINE OF <ls_checksum>-files,
|
||||
<ls_local> LIKE LINE OF lt_local.
|
||||
|
||||
|
||||
lt_local = get_files_local( ).
|
||||
DELETE lt_local WHERE item IS INITIAL.
|
||||
|
||||
LOOP AT lt_local ASSIGNING <ls_item> WHERE NOT item IS INITIAL.
|
||||
LOOP AT lt_local ASSIGNING <ls_item>.
|
||||
|
||||
CLEAR lv_xstring.
|
||||
APPEND INITIAL LINE TO rt_checksums ASSIGNING <ls_checksum>.
|
||||
|
||||
LOOP AT lt_local ASSIGNING <ls_local> WHERE item = <ls_item>-item.
|
||||
CONCATENATE lv_xstring <ls_local>-file-data INTO lv_xstring IN BYTE MODE.
|
||||
APPEND INITIAL LINE TO <ls_checksum>-files ASSIGNING <ls_file_sig>.
|
||||
MOVE-CORRESPONDING <ls_local>-file TO <ls_file_sig>.
|
||||
ENDLOOP.
|
||||
|
||||
APPEND INITIAL LINE TO rt_checksums ASSIGNING <ls_checksum>.
|
||||
<ls_checksum>-item = <ls_item>-item.
|
||||
ASSERT NOT lv_xstring IS INITIAL.
|
||||
|
||||
<ls_checksum>-item = <ls_item>-item.
|
||||
<ls_checksum>-sha1 = lcl_hash=>sha1_raw( lv_xstring ).
|
||||
|
||||
DELETE lt_local WHERE item = <ls_item>-item.
|
||||
|
@ -360,6 +364,10 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD refresh_local_checksums.
|
||||
set( it_checksums = build_local_checksums( ) ).
|
||||
ENDMETHOD. "refresh_local_checksums
|
||||
|
||||
METHOD deserialize.
|
||||
|
||||
IF mo_dot_abapgit IS INITIAL.
|
||||
|
|
|
@ -320,6 +320,9 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
WHEN c_actions-toggle_changes. " Toggle changes only view
|
||||
mv_changes_only = lcl_app=>user( )->toggle_changes_only( ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
WHEN 'update_checksums'.
|
||||
mo_repo->refresh_local_checksums( ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD. "lif_gui_page~on_event
|
||||
|
@ -468,6 +471,8 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
|||
iv_act = |{ gc_action-repo_remote_change }?{ lv_key }| ).
|
||||
lo_tb_advanced->add( iv_txt = 'Make off-line'
|
||||
iv_act = |{ gc_action-repo_remote_detach }?{ lv_key }| ).
|
||||
lo_tb_advanced->add( iv_txt = 'Update local checksums'
|
||||
iv_act = |update_checksums| ).
|
||||
ELSE.
|
||||
lo_tb_advanced->add( iv_txt = 'Make on-line'
|
||||
iv_act = |{ gc_action-repo_remote_attach }?{ lv_key }| ).
|
||||
|
|
Loading…
Reference in New Issue
Block a user