mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
git pack: add adler32 table as optional input
git pack: add adler32 table as optional input #1165
This commit is contained in:
parent
aaba2a0db8
commit
a9607f90b2
|
@ -21,6 +21,14 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
||||||
committer TYPE string,
|
committer TYPE string,
|
||||||
body TYPE string,
|
body TYPE string,
|
||||||
END OF ty_commit .
|
END OF ty_commit .
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_adler32,
|
||||||
|
sha1 TYPE zif_abapgit_definitions=>ty_sha1,
|
||||||
|
type TYPE zif_abapgit_definitions=>ty_type,
|
||||||
|
adler32 TYPE zcl_abapgit_hash=>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
|
||||||
|
@ -46,6 +54,7 @@ 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
|
||||||
|
@ -60,6 +69,51 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
||||||
!is_commit TYPE ty_commit
|
!is_commit TYPE ty_commit
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_data) TYPE xstring .
|
VALUE(rv_data) TYPE xstring .
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
CONSTANTS:
|
||||||
|
c_pack_start TYPE x LENGTH 4 VALUE '5041434B' ##NO_TEXT.
|
||||||
|
CONSTANTS:
|
||||||
|
c_zlib TYPE x LENGTH 2 VALUE '789C' ##NO_TEXT.
|
||||||
|
CONSTANTS:
|
||||||
|
c_zlib_hmm TYPE x LENGTH 2 VALUE '7801' ##NO_TEXT.
|
||||||
|
CONSTANTS: " PACK
|
||||||
|
c_version TYPE x LENGTH 4 VALUE '00000002' ##NO_TEXT.
|
||||||
|
|
||||||
|
CLASS-METHODS decode_deltas
|
||||||
|
CHANGING
|
||||||
|
!ct_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
CLASS-METHODS delta
|
||||||
|
IMPORTING
|
||||||
|
!is_object TYPE zif_abapgit_definitions=>ty_object
|
||||||
|
CHANGING
|
||||||
|
!ct_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
CLASS-METHODS delta_header
|
||||||
|
EXPORTING
|
||||||
|
!ev_header TYPE i
|
||||||
|
CHANGING
|
||||||
|
!cv_delta TYPE xstring .
|
||||||
|
CLASS-METHODS sort_tree
|
||||||
|
IMPORTING
|
||||||
|
!it_nodes TYPE ty_nodes_tt
|
||||||
|
RETURNING
|
||||||
|
VALUE(rt_nodes) TYPE ty_nodes_tt .
|
||||||
|
CLASS-METHODS get_type
|
||||||
|
IMPORTING
|
||||||
|
!iv_x TYPE x
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_type) TYPE zif_abapgit_definitions=>ty_type
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
CLASS-METHODS get_length
|
||||||
|
EXPORTING
|
||||||
|
!ev_length TYPE i
|
||||||
|
CHANGING
|
||||||
|
!cv_data TYPE xstring .
|
||||||
CLASS-METHODS type_and_length
|
CLASS-METHODS type_and_length
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_type TYPE zif_abapgit_definitions=>ty_type
|
!iv_type TYPE zif_abapgit_definitions=>ty_type
|
||||||
|
@ -68,43 +122,12 @@ CLASS zcl_abapgit_git_pack DEFINITION
|
||||||
VALUE(rv_xstring) TYPE xstring
|
VALUE(rv_xstring) TYPE xstring
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
PRIVATE SECTION.
|
|
||||||
CONSTANTS: c_pack_start TYPE x LENGTH 4 VALUE '5041434B', " PACK
|
|
||||||
c_zlib TYPE x LENGTH 2 VALUE '789C',
|
|
||||||
c_zlib_hmm TYPE x LENGTH 2 VALUE '7801',
|
|
||||||
c_version TYPE x LENGTH 4 VALUE '00000002'.
|
|
||||||
|
|
||||||
CLASS-METHODS decode_deltas
|
|
||||||
CHANGING ct_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
|
||||||
RAISING zcx_abapgit_exception.
|
|
||||||
|
|
||||||
CLASS-METHODS delta
|
|
||||||
IMPORTING is_object TYPE zif_abapgit_definitions=>ty_object
|
|
||||||
CHANGING ct_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
|
||||||
RAISING zcx_abapgit_exception.
|
|
||||||
|
|
||||||
CLASS-METHODS delta_header
|
|
||||||
EXPORTING ev_header TYPE i
|
|
||||||
CHANGING cv_delta TYPE xstring.
|
|
||||||
|
|
||||||
CLASS-METHODS sort_tree
|
|
||||||
IMPORTING it_nodes TYPE ty_nodes_tt
|
|
||||||
RETURNING VALUE(rt_nodes) TYPE ty_nodes_tt.
|
|
||||||
|
|
||||||
CLASS-METHODS get_type
|
|
||||||
IMPORTING iv_x TYPE x
|
|
||||||
RETURNING VALUE(rv_type) TYPE zif_abapgit_definitions=>ty_type
|
|
||||||
RAISING zcx_abapgit_exception.
|
|
||||||
|
|
||||||
CLASS-METHODS get_length
|
|
||||||
EXPORTING ev_length TYPE i
|
|
||||||
CHANGING cv_data TYPE xstring.
|
|
||||||
|
|
||||||
CLASS-METHODS zlib_decompress
|
CLASS-METHODS zlib_decompress
|
||||||
CHANGING cv_data TYPE xstring
|
CHANGING
|
||||||
cv_decompressed TYPE xstring
|
!cv_data TYPE xstring
|
||||||
RAISING zcx_abapgit_exception.
|
!cv_decompressed TYPE xstring
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -524,7 +547,9 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
||||||
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.
|
||||||
|
|
||||||
|
@ -558,7 +583,15 @@ 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
|
||||||
|
ASSIGNING <ls_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.
|
||||||
lv_adler32 = zcl_abapgit_hash=>adler32( <ls_object>-data ).
|
lv_adler32 = zcl_abapgit_hash=>adler32( <ls_object>-data ).
|
||||||
|
ENDIF.
|
||||||
CONCATENATE rv_data lv_adler32 INTO rv_data IN BYTE MODE.
|
CONCATENATE rv_data lv_adler32 INTO rv_data IN BYTE MODE.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user