mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
also return at decode
This commit is contained in:
parent
a9607f90b2
commit
ad6b99ec95
|
@ -25,10 +25,7 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
||||||
BEGIN OF ty_adler32,
|
BEGIN OF ty_adler32,
|
||||||
sha1 TYPE zif_abapgit_definitions=>ty_sha1,
|
sha1 TYPE zif_abapgit_definitions=>ty_sha1,
|
||||||
type TYPE zif_abapgit_definitions=>ty_type,
|
type TYPE zif_abapgit_definitions=>ty_type,
|
||||||
adler32 TYPE zcl_abapgit_hash=>ty_adler32,
|
|
||||||
END OF ty_adler32 .
|
END OF ty_adler32 .
|
||||||
TYPES:
|
|
||||||
ty_adler32_tt TYPE SORTED TABLE OF ty_adler32 WITH UNIQUE KEY sha1 type .
|
|
||||||
|
|
||||||
CLASS-METHODS decode
|
CLASS-METHODS decode
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
@ -54,7 +51,6 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
||||||
CLASS-METHODS encode
|
CLASS-METHODS encode
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!it_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
!it_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
||||||
!it_adler32 TYPE ty_adler32_tt OPTIONAL
|
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_data) TYPE xstring
|
VALUE(rv_data) TYPE xstring
|
||||||
RAISING
|
RAISING
|
||||||
|
@ -233,11 +229,10 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
||||||
cv_decompressed = lv_decompressed ).
|
cv_decompressed = lv_decompressed ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
CLEAR ls_object.
|
||||||
|
ls_object-adler32 = lv_data(4).
|
||||||
lv_data = lv_data+4. " skip adler checksum
|
lv_data = lv_data+4. " skip adler checksum
|
||||||
|
|
||||||
*************************
|
|
||||||
|
|
||||||
CLEAR ls_object.
|
|
||||||
IF lv_type = zif_abapgit_definitions=>gc_type-ref_d.
|
IF lv_type = zif_abapgit_definitions=>gc_type-ref_d.
|
||||||
ls_object-sha1 = lv_ref_delta.
|
ls_object-sha1 = lv_ref_delta.
|
||||||
TRANSLATE ls_object-sha1 TO LOWER CASE.
|
TRANSLATE ls_object-sha1 TO LOWER CASE.
|
||||||
|
@ -541,14 +536,13 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
||||||
METHOD encode.
|
METHOD encode.
|
||||||
|
|
||||||
DATA: lv_sha1 TYPE x LENGTH 20,
|
DATA: lv_sha1 TYPE x LENGTH 20,
|
||||||
lv_adler32 TYPE zcl_abapgit_hash=>ty_adler32,
|
lv_adler32 TYPE zif_abapgit_definitions=>ty_adler32,
|
||||||
lv_compressed TYPE xstring,
|
lv_compressed TYPE xstring,
|
||||||
lv_xstring TYPE xstring,
|
lv_xstring TYPE xstring,
|
||||||
lo_progress TYPE REF TO zcl_abapgit_progress,
|
lo_progress TYPE REF TO zcl_abapgit_progress,
|
||||||
lv_objects_total TYPE i.
|
lv_objects_total TYPE i.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_object> LIKE LINE OF it_objects,
|
FIELD-SYMBOLS: <ls_object> LIKE LINE OF it_objects.
|
||||||
<ls_adler32> LIKE LINE OF it_adler32.
|
|
||||||
|
|
||||||
|
|
||||||
rv_data = c_pack_start.
|
rv_data = c_pack_start.
|
||||||
|
@ -565,7 +559,6 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
||||||
iv_total = lv_objects_total.
|
iv_total = lv_objects_total.
|
||||||
|
|
||||||
LOOP AT it_objects ASSIGNING <ls_object>.
|
LOOP AT it_objects ASSIGNING <ls_object>.
|
||||||
|
|
||||||
lo_progress->show(
|
lo_progress->show(
|
||||||
iv_current = sy-tabix
|
iv_current = sy-tabix
|
||||||
iv_text = |Encoding objects ( { sy-tabix } of { lv_objects_total } )| ).
|
iv_text = |Encoding objects ( { sy-tabix } of { lv_objects_total } )| ).
|
||||||
|
@ -583,12 +576,8 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
||||||
|
|
||||||
CONCATENATE rv_data c_zlib lv_compressed INTO rv_data IN BYTE MODE.
|
CONCATENATE rv_data c_zlib lv_compressed INTO rv_data IN BYTE MODE.
|
||||||
|
|
||||||
READ TABLE it_adler32
|
IF NOT <ls_object>-adler32 IS INITIAL.
|
||||||
ASSIGNING <ls_adler32>
|
lv_adler32 = <ls_object>-adler32.
|
||||||
WITH KEY type = <ls_object>-type
|
|
||||||
sha1 = <ls_object>-sha1.
|
|
||||||
IF sy-subrc = 0 AND NOT <ls_adler32>-adler32 IS INITIAL.
|
|
||||||
lv_adler32 = <ls_adler32>-adler32.
|
|
||||||
ELSE.
|
ELSE.
|
||||||
lv_adler32 = zcl_abapgit_hash=>adler32( <ls_object>-data ).
|
lv_adler32 = zcl_abapgit_hash=>adler32( <ls_object>-data ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -834,7 +823,7 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
||||||
|
|
||||||
DATA: ls_data TYPE zcl_abapgit_zlib=>ty_decompress,
|
DATA: ls_data TYPE zcl_abapgit_zlib=>ty_decompress,
|
||||||
lv_compressed_len TYPE i,
|
lv_compressed_len TYPE i,
|
||||||
lv_adler32 TYPE zcl_abapgit_hash=>ty_adler32.
|
lv_adler32 TYPE zif_abapgit_definitions=>ty_adler32.
|
||||||
|
|
||||||
|
|
||||||
ls_data = zcl_abapgit_zlib=>decompress( cv_data ).
|
ls_data = zcl_abapgit_zlib=>decompress( cv_data ).
|
||||||
|
|
|
@ -142,6 +142,7 @@ CLASS ltcl_pack IMPLEMENTATION.
|
||||||
ls_object-sha1 = zcl_abapgit_hash=>sha1( iv_type = zif_abapgit_definitions=>gc_type-blob iv_data = lv_data ).
|
ls_object-sha1 = zcl_abapgit_hash=>sha1( iv_type = zif_abapgit_definitions=>gc_type-blob iv_data = lv_data ).
|
||||||
ls_object-type = zif_abapgit_definitions=>gc_type-blob.
|
ls_object-type = zif_abapgit_definitions=>gc_type-blob.
|
||||||
ls_object-data = lv_data.
|
ls_object-data = lv_data.
|
||||||
|
ls_object-adler32 = zcl_abapgit_hash=>adler32( lv_data ).
|
||||||
APPEND ls_object TO lt_objects.
|
APPEND ls_object TO lt_objects.
|
||||||
|
|
||||||
* commit
|
* commit
|
||||||
|
@ -156,6 +157,7 @@ CLASS ltcl_pack IMPLEMENTATION.
|
||||||
ls_object-sha1 = zcl_abapgit_hash=>sha1( iv_type = zif_abapgit_definitions=>gc_type-commit iv_data = lv_data ).
|
ls_object-sha1 = zcl_abapgit_hash=>sha1( iv_type = zif_abapgit_definitions=>gc_type-commit iv_data = lv_data ).
|
||||||
ls_object-type = zif_abapgit_definitions=>gc_type-commit.
|
ls_object-type = zif_abapgit_definitions=>gc_type-commit.
|
||||||
ls_object-data = lv_data.
|
ls_object-data = lv_data.
|
||||||
|
ls_object-adler32 = zcl_abapgit_hash=>adler32( lv_data ).
|
||||||
APPEND ls_object TO lt_objects.
|
APPEND ls_object TO lt_objects.
|
||||||
|
|
||||||
* tree
|
* tree
|
||||||
|
@ -169,6 +171,7 @@ CLASS ltcl_pack IMPLEMENTATION.
|
||||||
ls_object-sha1 = zcl_abapgit_hash=>sha1( iv_type = zif_abapgit_definitions=>gc_type-tree iv_data = lv_data ).
|
ls_object-sha1 = zcl_abapgit_hash=>sha1( iv_type = zif_abapgit_definitions=>gc_type-tree iv_data = lv_data ).
|
||||||
ls_object-type = zif_abapgit_definitions=>gc_type-tree.
|
ls_object-type = zif_abapgit_definitions=>gc_type-tree.
|
||||||
ls_object-data = lv_data.
|
ls_object-data = lv_data.
|
||||||
|
ls_object-adler32 = zcl_abapgit_hash=>adler32( lv_data ).
|
||||||
APPEND ls_object TO lt_objects.
|
APPEND ls_object TO lt_objects.
|
||||||
|
|
||||||
|
|
||||||
|
@ -188,6 +191,7 @@ CLASS ltcl_pack IMPLEMENTATION.
|
||||||
iv_data = iv_data ).
|
iv_data = iv_data ).
|
||||||
rs_object-type = zif_abapgit_definitions=>gc_type-blob.
|
rs_object-type = zif_abapgit_definitions=>gc_type-blob.
|
||||||
rs_object-data = iv_data.
|
rs_object-data = iv_data.
|
||||||
|
rs_object-adler32 = zcl_abapgit_hash=>adler32( iv_data ).
|
||||||
|
|
||||||
ENDMETHOD. "object_blob
|
ENDMETHOD. "object_blob
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,9 @@ CLASS zcl_abapgit_hash DEFINITION
|
||||||
CREATE PUBLIC .
|
CREATE PUBLIC .
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
TYPES: ty_adler32 TYPE x LENGTH 4.
|
|
||||||
|
|
||||||
CLASS-METHODS adler32
|
CLASS-METHODS adler32
|
||||||
IMPORTING iv_xstring TYPE xstring
|
IMPORTING iv_xstring TYPE xstring
|
||||||
RETURNING VALUE(rv_checksum) TYPE ty_adler32.
|
RETURNING VALUE(rv_checksum) TYPE zif_abapgit_definitions=>ty_adler32.
|
||||||
|
|
||||||
CLASS-METHODS sha1
|
CLASS-METHODS sha1
|
||||||
IMPORTING iv_type TYPE zif_abapgit_definitions=>ty_type
|
IMPORTING iv_type TYPE zif_abapgit_definitions=>ty_type
|
||||||
|
|
|
@ -6,6 +6,7 @@ INTERFACE zif_abapgit_definitions PUBLIC.
|
||||||
ty_bitbyte TYPE c LENGTH 8 .
|
ty_bitbyte TYPE c LENGTH 8 .
|
||||||
TYPES:
|
TYPES:
|
||||||
ty_sha1 TYPE c LENGTH 40 .
|
ty_sha1 TYPE c LENGTH 40 .
|
||||||
|
TYPES: ty_adler32 TYPE x LENGTH 4.
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_file_signature,
|
BEGIN OF ty_file_signature,
|
||||||
path TYPE string,
|
path TYPE string,
|
||||||
|
@ -92,9 +93,10 @@ INTERFACE zif_abapgit_definitions PUBLIC.
|
||||||
ty_chmod TYPE c LENGTH 6 .
|
ty_chmod TYPE c LENGTH 6 .
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_object,
|
BEGIN OF ty_object,
|
||||||
sha1 TYPE zif_abapgit_definitions=>ty_sha1,
|
sha1 TYPE zif_abapgit_definitions=>ty_sha1,
|
||||||
type TYPE zif_abapgit_definitions=>ty_type,
|
type TYPE zif_abapgit_definitions=>ty_type,
|
||||||
data TYPE xstring,
|
data TYPE xstring,
|
||||||
|
adler32 TYPE ty_adler32,
|
||||||
END OF ty_object .
|
END OF ty_object .
|
||||||
TYPES:
|
TYPES:
|
||||||
ty_objects_tt TYPE STANDARD TABLE OF ty_object WITH DEFAULT KEY .
|
ty_objects_tt TYPE STANDARD TABLE OF ty_object WITH DEFAULT KEY .
|
||||||
|
|
Loading…
Reference in New Issue
Block a user