mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
file sha1 at local checksums #407
This commit is contained in:
parent
fb371ae903
commit
15619130cd
|
@ -8,13 +8,18 @@ TYPES: ty_type TYPE c LENGTH 6,
|
||||||
ty_bitbyte TYPE c LENGTH 8,
|
ty_bitbyte TYPE c LENGTH 8,
|
||||||
ty_sha1 TYPE c LENGTH 40.
|
ty_sha1 TYPE c LENGTH 40.
|
||||||
|
|
||||||
TYPES: BEGIN OF ty_file,
|
TYPES: BEGIN OF ty_file_signature,
|
||||||
path TYPE string,
|
path TYPE string,
|
||||||
filename TYPE string,
|
filename TYPE string,
|
||||||
data TYPE xstring,
|
|
||||||
sha1 TYPE ty_sha1,
|
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.
|
END OF ty_file.
|
||||||
TYPES: ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY.
|
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: ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY.
|
||||||
TYPES: tt_w3urls TYPE STANDARD TABLE OF w3url WITH DEFAULT KEY.
|
TYPES: tt_w3urls TYPE STANDARD TABLE OF w3url WITH DEFAULT KEY.
|
||||||
|
|
|
@ -93,6 +93,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL.
|
||||||
TYPES: BEGIN OF ty_local_checksum,
|
TYPES: BEGIN OF ty_local_checksum,
|
||||||
item TYPE ty_item,
|
item TYPE ty_item,
|
||||||
sha1 TYPE ty_sha1,
|
sha1 TYPE ty_sha1,
|
||||||
|
files TYPE ty_file_signatures_tt,
|
||||||
END OF ty_local_checksum.
|
END OF ty_local_checksum.
|
||||||
|
|
||||||
TYPES: ty_local_checksum_tt TYPE STANDARD TABLE OF ty_local_checksum WITH DEFAULT KEY.
|
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
|
build_local_checksums
|
||||||
RETURNING VALUE(rt_checksums) TYPE lcl_persistence_repo=>ty_local_checksum_tt
|
RETURNING VALUE(rt_checksums) TYPE lcl_persistence_repo=>ty_local_checksum_tt
|
||||||
RAISING lcx_exception,
|
RAISING lcx_exception,
|
||||||
|
refresh_local_checksums
|
||||||
|
RAISING lcx_exception,
|
||||||
is_offline
|
is_offline
|
||||||
RETURNING VALUE(rv_offline) TYPE abap_bool
|
RETURNING VALUE(rv_offline) TYPE abap_bool
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
|
@ -332,26 +332,30 @@ CLASS lcl_repo IMPLEMENTATION.
|
||||||
METHOD build_local_checksums.
|
METHOD build_local_checksums.
|
||||||
|
|
||||||
DATA: lv_xstring TYPE xstring,
|
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,
|
FIELD-SYMBOLS: <ls_item> LIKE LINE OF lt_local,
|
||||||
<ls_checksum> LIKE LINE OF rt_checksums,
|
<ls_checksum> LIKE LINE OF rt_checksums,
|
||||||
|
<ls_file_sig> LIKE LINE OF <ls_checksum>-files,
|
||||||
<ls_local> LIKE LINE OF lt_local.
|
<ls_local> LIKE LINE OF lt_local.
|
||||||
|
|
||||||
|
|
||||||
lt_local = get_files_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.
|
CLEAR lv_xstring.
|
||||||
|
APPEND INITIAL LINE TO rt_checksums ASSIGNING <ls_checksum>.
|
||||||
|
|
||||||
LOOP AT lt_local ASSIGNING <ls_local> WHERE item = <ls_item>-item.
|
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.
|
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.
|
ENDLOOP.
|
||||||
|
|
||||||
APPEND INITIAL LINE TO rt_checksums ASSIGNING <ls_checksum>.
|
|
||||||
<ls_checksum>-item = <ls_item>-item.
|
|
||||||
ASSERT NOT lv_xstring IS INITIAL.
|
ASSERT NOT lv_xstring IS INITIAL.
|
||||||
|
|
||||||
|
<ls_checksum>-item = <ls_item>-item.
|
||||||
<ls_checksum>-sha1 = lcl_hash=>sha1_raw( lv_xstring ).
|
<ls_checksum>-sha1 = lcl_hash=>sha1_raw( lv_xstring ).
|
||||||
|
|
||||||
DELETE lt_local WHERE item = <ls_item>-item.
|
DELETE lt_local WHERE item = <ls_item>-item.
|
||||||
|
@ -360,6 +364,10 @@ CLASS lcl_repo IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD refresh_local_checksums.
|
||||||
|
set( it_checksums = build_local_checksums( ) ).
|
||||||
|
ENDMETHOD. "refresh_local_checksums
|
||||||
|
|
||||||
METHOD deserialize.
|
METHOD deserialize.
|
||||||
|
|
||||||
IF mo_dot_abapgit IS INITIAL.
|
IF mo_dot_abapgit IS INITIAL.
|
||||||
|
|
|
@ -312,6 +312,9 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
||||||
WHEN c_actions-toggle_changes. " Toggle changes only view
|
WHEN c_actions-toggle_changes. " Toggle changes only view
|
||||||
mv_changes_only = lcl_app=>user( )->toggle_changes_only( ).
|
mv_changes_only = lcl_app=>user( )->toggle_changes_only( ).
|
||||||
ev_state = gc_event_state-re_render.
|
ev_state = gc_event_state-re_render.
|
||||||
|
WHEN 'update_checksums'.
|
||||||
|
mo_repo->refresh_local_checksums( ).
|
||||||
|
ev_state = gc_event_state-re_render.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD. "lif_gui_page~on_event
|
ENDMETHOD. "lif_gui_page~on_event
|
||||||
|
@ -460,6 +463,8 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
|
||||||
iv_act = |{ gc_action-repo_remote_change }?{ lv_key }| ).
|
iv_act = |{ gc_action-repo_remote_change }?{ lv_key }| ).
|
||||||
lo_tb_advanced->add( iv_txt = 'Make off-line'
|
lo_tb_advanced->add( iv_txt = 'Make off-line'
|
||||||
iv_act = |{ gc_action-repo_remote_detach }?{ lv_key }| ).
|
iv_act = |{ gc_action-repo_remote_detach }?{ lv_key }| ).
|
||||||
|
lo_tb_advanced->add( iv_txt = 'Update local checksums'
|
||||||
|
iv_act = |update_checksums| ).
|
||||||
ELSE.
|
ELSE.
|
||||||
lo_tb_advanced->add( iv_txt = 'Make on-line'
|
lo_tb_advanced->add( iv_txt = 'Make on-line'
|
||||||
iv_act = |{ gc_action-repo_remote_attach }?{ lv_key }| ).
|
iv_act = |{ gc_action-repo_remote_attach }?{ lv_key }| ).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user