mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
lcl_http to global (#1199)
* lcl_http to global * remove dependency lcl_git_transport -> repo remove dependency lcl_git_transport -> lcl_repo_online * lcl_git_transport to global * indentation + cleanup includes
This commit is contained in:
parent
540ebe16e1
commit
3722c26019
283
src/git/zcl_abapgit_git_transport.clas.abap
Normal file
283
src/git/zcl_abapgit_git_transport.clas.abap
Normal file
|
@ -0,0 +1,283 @@
|
|||
CLASS zcl_abapgit_git_transport DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
* remote to local
|
||||
CLASS-METHODS upload_pack
|
||||
IMPORTING iv_url TYPE string
|
||||
iv_branch_name TYPE string
|
||||
iv_deepen TYPE abap_bool DEFAULT abap_true
|
||||
it_branches TYPE zcl_abapgit_git_branch_list=>ty_git_branch_list_tt OPTIONAL
|
||||
EXPORTING et_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
||||
ev_branch TYPE zif_abapgit_definitions=>ty_sha1
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
* local to remote
|
||||
CLASS-METHODS receive_pack
|
||||
IMPORTING iv_url TYPE string
|
||||
iv_old TYPE zif_abapgit_definitions=>ty_sha1
|
||||
iv_new TYPE zif_abapgit_definitions=>ty_sha1
|
||||
iv_branch_name TYPE string
|
||||
iv_pack TYPE xstring
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
CLASS-METHODS branches
|
||||
IMPORTING iv_url TYPE string
|
||||
RETURNING VALUE(ro_branch_list) TYPE REF TO zcl_abapgit_git_branch_list
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS: BEGIN OF c_service,
|
||||
receive TYPE string VALUE 'receive', "#EC NOTEXT
|
||||
upload TYPE string VALUE 'upload', "#EC NOTEXT
|
||||
END OF c_service.
|
||||
|
||||
CLASS-METHODS branch_list
|
||||
IMPORTING iv_url TYPE string
|
||||
iv_service TYPE string
|
||||
EXPORTING eo_client TYPE REF TO zcl_abapgit_http_client
|
||||
eo_branch_list TYPE REF TO zcl_abapgit_git_branch_list
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
CLASS-METHODS find_branch
|
||||
IMPORTING iv_url TYPE string
|
||||
iv_service TYPE string
|
||||
iv_branch_name TYPE string
|
||||
EXPORTING eo_client TYPE REF TO zcl_abapgit_http_client
|
||||
ev_branch TYPE zif_abapgit_definitions=>ty_sha1
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
CLASS-METHODS parse
|
||||
EXPORTING ev_pack TYPE xstring
|
||||
CHANGING cv_data TYPE xstring
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GIT_TRANSPORT IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD branches.
|
||||
|
||||
DATA: lo_client TYPE REF TO zcl_abapgit_http_client.
|
||||
|
||||
|
||||
branch_list(
|
||||
EXPORTING
|
||||
iv_url = iv_url
|
||||
iv_service = c_service-upload
|
||||
IMPORTING
|
||||
eo_client = lo_client
|
||||
eo_branch_list = ro_branch_list ).
|
||||
|
||||
lo_client->close( ).
|
||||
|
||||
ENDMETHOD. "branches
|
||||
|
||||
|
||||
METHOD branch_list.
|
||||
|
||||
DATA: lv_data TYPE string.
|
||||
|
||||
|
||||
eo_client = zcl_abapgit_http=>create_by_url(
|
||||
iv_url = iv_url
|
||||
iv_service = iv_service ).
|
||||
|
||||
lv_data = eo_client->get_cdata( ).
|
||||
|
||||
CREATE OBJECT eo_branch_list
|
||||
EXPORTING
|
||||
iv_data = lv_data.
|
||||
|
||||
ENDMETHOD. "branch_list
|
||||
|
||||
|
||||
METHOD find_branch.
|
||||
|
||||
DATA: lo_branch_list TYPE REF TO zcl_abapgit_git_branch_list.
|
||||
|
||||
branch_list(
|
||||
EXPORTING
|
||||
iv_url = iv_url
|
||||
iv_service = iv_service
|
||||
IMPORTING
|
||||
eo_client = eo_client
|
||||
eo_branch_list = lo_branch_list ).
|
||||
|
||||
IF ev_branch IS SUPPLIED.
|
||||
ev_branch = lo_branch_list->find_by_name( iv_branch_name )-sha1.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "find_branch
|
||||
|
||||
|
||||
METHOD parse.
|
||||
|
||||
CONSTANTS: lc_band1 TYPE x VALUE '01'.
|
||||
|
||||
DATA: lv_len TYPE i,
|
||||
lv_contents TYPE xstring,
|
||||
lv_pack TYPE xstring.
|
||||
|
||||
|
||||
WHILE xstrlen( cv_data ) >= 4.
|
||||
lv_len = zcl_abapgit_git_utils=>length_utf8_hex( cv_data ).
|
||||
|
||||
IF lv_len > xstrlen( cv_data ).
|
||||
zcx_abapgit_exception=>raise( 'parse, string length too large' ).
|
||||
ENDIF.
|
||||
|
||||
lv_contents = cv_data(lv_len).
|
||||
IF lv_len = 0.
|
||||
cv_data = cv_data+4.
|
||||
CONTINUE.
|
||||
ELSE.
|
||||
cv_data = cv_data+lv_len.
|
||||
ENDIF.
|
||||
|
||||
lv_contents = lv_contents+4.
|
||||
|
||||
IF xstrlen( lv_contents ) > 1 AND lv_contents(1) = lc_band1.
|
||||
CONCATENATE lv_pack lv_contents+1 INTO lv_pack IN BYTE MODE.
|
||||
ENDIF.
|
||||
|
||||
ENDWHILE.
|
||||
|
||||
ev_pack = lv_pack.
|
||||
|
||||
ENDMETHOD. "parse
|
||||
|
||||
|
||||
METHOD receive_pack.
|
||||
|
||||
DATA: lo_client TYPE REF TO zcl_abapgit_http_client,
|
||||
lv_cmd_pkt TYPE string,
|
||||
lv_line TYPE string,
|
||||
lv_tmp TYPE xstring,
|
||||
lv_xstring TYPE xstring,
|
||||
lv_string TYPE string,
|
||||
lv_cap_list TYPE string,
|
||||
lv_buffer TYPE string.
|
||||
|
||||
|
||||
find_branch(
|
||||
EXPORTING
|
||||
iv_url = iv_url
|
||||
iv_service = c_service-receive
|
||||
iv_branch_name = iv_branch_name
|
||||
IMPORTING
|
||||
eo_client = lo_client ).
|
||||
|
||||
lo_client->set_headers(
|
||||
iv_url = iv_url
|
||||
iv_service = c_service-receive ).
|
||||
|
||||
lv_cap_list = 'report-status agent=' && zcl_abapgit_http=>get_agent( ) ##NO_TEXT.
|
||||
|
||||
lv_line = iv_old &&
|
||||
` ` &&
|
||||
iv_new &&
|
||||
` ` &&
|
||||
iv_branch_name &&
|
||||
zcl_abapgit_git_utils=>get_null( ) &&
|
||||
` ` &&
|
||||
lv_cap_list &&
|
||||
zif_abapgit_definitions=>gc_newline. "#EC NOTEXT
|
||||
lv_cmd_pkt = zcl_abapgit_git_utils=>pkt_string( lv_line ).
|
||||
|
||||
lv_buffer = lv_cmd_pkt && '0000'.
|
||||
lv_tmp = zcl_abapgit_convert=>string_to_xstring_utf8( lv_buffer ).
|
||||
|
||||
CONCATENATE lv_tmp iv_pack INTO lv_xstring IN BYTE MODE.
|
||||
|
||||
lv_xstring = lo_client->send_receive_close( lv_xstring ).
|
||||
|
||||
lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xstring ).
|
||||
IF NOT lv_string CP '*unpack ok*'.
|
||||
zcx_abapgit_exception=>raise( 'unpack not ok' ).
|
||||
ELSEIF lv_string CP '*pre-receive hook declined*'.
|
||||
zcx_abapgit_exception=>raise( 'pre-receive hook declined' ).
|
||||
ELSEIF lv_string CP '*funny refname*'.
|
||||
zcx_abapgit_exception=>raise( 'funny refname' ).
|
||||
ELSEIF lv_string CP '*failed to update ref*'.
|
||||
zcx_abapgit_exception=>raise( 'failed to update ref' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "receive_pack
|
||||
|
||||
|
||||
METHOD upload_pack.
|
||||
|
||||
DATA: lo_client TYPE REF TO zcl_abapgit_http_client,
|
||||
lv_buffer TYPE string,
|
||||
lv_xstring TYPE xstring,
|
||||
lv_line TYPE string,
|
||||
lv_pack TYPE xstring,
|
||||
lt_branches TYPE zcl_abapgit_git_branch_list=>ty_git_branch_list_tt,
|
||||
lv_capa TYPE string.
|
||||
|
||||
FIELD-SYMBOLS: <ls_branch> LIKE LINE OF lt_branches.
|
||||
|
||||
|
||||
CLEAR et_objects.
|
||||
|
||||
find_branch(
|
||||
EXPORTING
|
||||
iv_url = iv_url
|
||||
iv_service = c_service-upload
|
||||
iv_branch_name = iv_branch_name
|
||||
IMPORTING
|
||||
eo_client = lo_client
|
||||
ev_branch = ev_branch ).
|
||||
|
||||
IF it_branches IS INITIAL.
|
||||
APPEND INITIAL LINE TO lt_branches ASSIGNING <ls_branch>.
|
||||
<ls_branch>-sha1 = ev_branch.
|
||||
ELSE.
|
||||
lt_branches = it_branches.
|
||||
ENDIF.
|
||||
|
||||
lo_client->set_headers( iv_url = iv_url
|
||||
iv_service = c_service-upload ).
|
||||
|
||||
LOOP AT lt_branches FROM 1 ASSIGNING <ls_branch>.
|
||||
IF sy-tabix = 1.
|
||||
lv_capa = 'side-band-64k no-progress multi_ack agent='
|
||||
&& zcl_abapgit_http=>get_agent( ) ##NO_TEXT.
|
||||
lv_line = 'want' && ` ` && <ls_branch>-sha1
|
||||
&& ` ` && lv_capa && zif_abapgit_definitions=>gc_newline. "#EC NOTEXT
|
||||
ELSE.
|
||||
lv_line = 'want' && ` ` && <ls_branch>-sha1
|
||||
&& zif_abapgit_definitions=>gc_newline. "#EC NOTEXT
|
||||
ENDIF.
|
||||
lv_buffer = lv_buffer && zcl_abapgit_git_utils=>pkt_string( lv_line ).
|
||||
ENDLOOP.
|
||||
|
||||
IF iv_deepen = abap_true.
|
||||
lv_buffer = lv_buffer && zcl_abapgit_git_utils=>pkt_string( 'deepen 1'
|
||||
&& zif_abapgit_definitions=>gc_newline ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
||||
lv_buffer = lv_buffer
|
||||
&& '0000'
|
||||
&& '0009done' && zif_abapgit_definitions=>gc_newline.
|
||||
|
||||
lv_xstring = lo_client->send_receive_close(
|
||||
zcl_abapgit_convert=>string_to_xstring_utf8( lv_buffer ) ).
|
||||
|
||||
parse( IMPORTING ev_pack = lv_pack
|
||||
CHANGING cv_data = lv_xstring ).
|
||||
|
||||
IF lv_pack IS INITIAL.
|
||||
zcx_abapgit_exception=>raise( 'empty pack' ).
|
||||
ENDIF.
|
||||
|
||||
et_objects = zcl_abapgit_git_pack=>decode( lv_pack ).
|
||||
|
||||
ENDMETHOD. "upload_pack
|
||||
ENDCLASS.
|
19
src/git/zcl_abapgit_git_transport.clas.xml
Normal file
19
src/git/zcl_abapgit_git_transport.clas.xml
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_GIT_TRANSPORT</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Git transport</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSFINAL>X</CLSFINAL>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -1,8 +1,7 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_HTTP
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_http DEFINITION FINAL.
|
||||
CLASS zcl_abapgit_http DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS: BEGIN OF gc_scheme,
|
||||
|
@ -36,14 +35,84 @@ CLASS lcl_http DEFINITION FINAL.
|
|||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_http IMPLEMENTATION.
|
||||
|
||||
METHOD get_agent.
|
||||
|
||||
* bitbucket require agent prefix = "git/"
|
||||
rv_agent = 'git/abapGit-' && zif_abapgit_definitions=>gc_abap_version.
|
||||
CLASS ZCL_ABAPGIT_HTTP IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD acquire_login_details.
|
||||
|
||||
DATA: lv_default_user TYPE string,
|
||||
lv_user TYPE string,
|
||||
lv_pass TYPE string,
|
||||
lo_digest TYPE REF TO zcl_abapgit_http_digest.
|
||||
|
||||
|
||||
lv_default_user = zcl_abapgit_persistence_user=>get_instance( )->get_repo_login( iv_url ).
|
||||
lv_user = lv_default_user.
|
||||
|
||||
zcl_abapgit_password_dialog=>popup(
|
||||
EXPORTING
|
||||
iv_repo_url = iv_url
|
||||
CHANGING
|
||||
cv_user = lv_user
|
||||
cv_pass = lv_pass ).
|
||||
|
||||
IF lv_user IS INITIAL.
|
||||
zcx_abapgit_exception=>raise( 'HTTP 401, unauthorized' ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_user <> lv_default_user.
|
||||
zcl_abapgit_persistence_user=>get_instance( )->set_repo_login(
|
||||
iv_url = iv_url
|
||||
iv_login = lv_user ).
|
||||
ENDIF.
|
||||
|
||||
" Offer two factor authentication if it is available and required
|
||||
zcl_abapgit_2fa_auth_registry=>use_2fa_if_required(
|
||||
EXPORTING
|
||||
iv_url = iv_url
|
||||
CHANGING
|
||||
cv_username = lv_user
|
||||
cv_password = lv_pass ).
|
||||
|
||||
rv_scheme = ii_client->response->get_header_field( 'www-authenticate' ).
|
||||
FIND REGEX '^(\w+)' IN rv_scheme SUBMATCHES rv_scheme.
|
||||
|
||||
CASE rv_scheme.
|
||||
WHEN gc_scheme-digest.
|
||||
* https://en.wikipedia.org/wiki/Digest_access_authentication
|
||||
* e.g. used by https://www.gerritcodereview.com/
|
||||
CREATE OBJECT lo_digest
|
||||
EXPORTING
|
||||
ii_client = ii_client
|
||||
iv_username = lv_user
|
||||
iv_password = lv_pass.
|
||||
lo_digest->run( ii_client ).
|
||||
io_client->set_digest( lo_digest ).
|
||||
WHEN OTHERS.
|
||||
* https://en.wikipedia.org/wiki/Basic_access_authentication
|
||||
ii_client->authenticate(
|
||||
username = lv_user
|
||||
password = lv_pass ).
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD. "acquire_login_details
|
||||
|
||||
|
||||
METHOD check_auth_requested.
|
||||
|
||||
DATA: lv_code TYPE i.
|
||||
|
||||
ii_client->response->get_status(
|
||||
IMPORTING
|
||||
code = lv_code ).
|
||||
IF lv_code = 401.
|
||||
rv_auth_requested = abap_true.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "check_auth_requested
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD create_by_url.
|
||||
|
||||
|
@ -131,6 +200,15 @@ CLASS lcl_http IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_agent.
|
||||
|
||||
* bitbucket require agent prefix = "git/"
|
||||
rv_agent = 'git/abapGit-' && zif_abapgit_definitions=>gc_abap_version.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_local_system.
|
||||
|
||||
DATA: lv_host TYPE string,
|
||||
|
@ -164,77 +242,4 @@ CLASS lcl_http IMPLEMENTATION.
|
|||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_auth_requested.
|
||||
|
||||
DATA: lv_code TYPE i.
|
||||
|
||||
ii_client->response->get_status(
|
||||
IMPORTING
|
||||
code = lv_code ).
|
||||
IF lv_code = 401.
|
||||
rv_auth_requested = abap_true.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "check_auth_requested
|
||||
|
||||
METHOD acquire_login_details.
|
||||
|
||||
DATA: lv_default_user TYPE string,
|
||||
lv_user TYPE string,
|
||||
lv_pass TYPE string,
|
||||
lo_digest TYPE REF TO zcl_abapgit_http_digest.
|
||||
|
||||
|
||||
lv_default_user = zcl_abapgit_persistence_user=>get_instance( )->get_repo_login( iv_url ).
|
||||
lv_user = lv_default_user.
|
||||
|
||||
zcl_abapgit_password_dialog=>popup(
|
||||
EXPORTING
|
||||
iv_repo_url = iv_url
|
||||
CHANGING
|
||||
cv_user = lv_user
|
||||
cv_pass = lv_pass ).
|
||||
|
||||
IF lv_user IS INITIAL.
|
||||
zcx_abapgit_exception=>raise( 'HTTP 401, unauthorized' ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_user <> lv_default_user.
|
||||
zcl_abapgit_persistence_user=>get_instance( )->set_repo_login(
|
||||
iv_url = iv_url
|
||||
iv_login = lv_user ).
|
||||
ENDIF.
|
||||
|
||||
" Offer two factor authentication if it is available and required
|
||||
zcl_abapgit_2fa_auth_registry=>use_2fa_if_required(
|
||||
EXPORTING
|
||||
iv_url = iv_url
|
||||
CHANGING
|
||||
cv_username = lv_user
|
||||
cv_password = lv_pass ).
|
||||
|
||||
rv_scheme = ii_client->response->get_header_field( 'www-authenticate' ).
|
||||
FIND REGEX '^(\w+)' IN rv_scheme SUBMATCHES rv_scheme.
|
||||
|
||||
CASE rv_scheme.
|
||||
WHEN gc_scheme-digest.
|
||||
* https://en.wikipedia.org/wiki/Digest_access_authentication
|
||||
* e.g. used by https://www.gerritcodereview.com/
|
||||
CREATE OBJECT lo_digest
|
||||
EXPORTING
|
||||
ii_client = ii_client
|
||||
iv_username = lv_user
|
||||
iv_password = lv_pass.
|
||||
lo_digest->run( ii_client ).
|
||||
io_client->set_digest( lo_digest ).
|
||||
WHEN OTHERS.
|
||||
* https://en.wikipedia.org/wiki/Basic_access_authentication
|
||||
ii_client->authenticate(
|
||||
username = lv_user
|
||||
password = lv_pass ).
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD. "acquire_login_details
|
||||
|
||||
ENDCLASS.
|
19
src/http/zcl_abapgit_http.clas.xml
Normal file
19
src/http/zcl_abapgit_http.clas.xml
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_HTTP</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>HTTP</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSFINAL>X</CLSFINAL>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -35,13 +35,10 @@ INCLUDE zabapgit_password_dialog. " !!! Contains SELECTION SCREEN
|
|||
INCLUDE zabapgit_app. " Some deferred definitions here
|
||||
INCLUDE zabapgit_authorizations.
|
||||
INCLUDE zabapgit_exit.
|
||||
INCLUDE zabapgit_proxy.
|
||||
|
||||
INCLUDE zabapgit_repo.
|
||||
INCLUDE zabapgit_news.
|
||||
INCLUDE zabapgit_stage_logic.
|
||||
INCLUDE zabapgit_2fa.
|
||||
INCLUDE zabapgit_http.
|
||||
INCLUDE zabapgit_git.
|
||||
INCLUDE zabapgit_objects.
|
||||
INCLUDE zabapgit_tadir.
|
||||
|
@ -50,14 +47,11 @@ INCLUDE zabapgit_popups.
|
|||
INCLUDE zabapgit_zip.
|
||||
INCLUDE zabapgit_objects_impl.
|
||||
|
||||
INCLUDE zabapgit_skip_objects.
|
||||
|
||||
INCLUDE zabapgit_repo_impl.
|
||||
INCLUDE zabapgit_background.
|
||||
INCLUDE zabapgit_transport.
|
||||
|
||||
INCLUDE zabapgit_services. " All services here
|
||||
INCLUDE zabapgit_gui_asset_manager.
|
||||
INCLUDE zabapgit_gui_pages. " All GUI pages here
|
||||
INCLUDE zabapgit_gui_pages_userexit IF FOUND.
|
||||
INCLUDE zabapgit_gui_router.
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_2FA
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
* todo, include to be deleted
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_2FA</NAME>
|
||||
<STATE>A</STATE>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL>S</DBAPL>
|
||||
<DBNA>D$</DBNA>
|
||||
<SUBC>I</SUBC>
|
||||
<FIXPT>X</FIXPT>
|
||||
<LDBNAME>D$S</LDBNAME>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<ENTRY>ZABAPGIT_2FA</ENTRY>
|
||||
<LENGTH>12</LENGTH>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -2,288 +2,6 @@
|
|||
*& Include ZABAPGIT_GIT
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_transport DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_git_transport DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
|
||||
* remote to local
|
||||
CLASS-METHODS upload_pack
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||
iv_deepen TYPE abap_bool DEFAULT abap_true
|
||||
it_branches TYPE zcl_abapgit_git_branch_list=>ty_git_branch_list_tt OPTIONAL
|
||||
EXPORTING et_objects TYPE zif_abapgit_definitions=>ty_objects_tt
|
||||
ev_branch TYPE zif_abapgit_definitions=>ty_sha1
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
* local to remote
|
||||
CLASS-METHODS receive_pack
|
||||
IMPORTING iv_url TYPE string
|
||||
iv_old TYPE zif_abapgit_definitions=>ty_sha1
|
||||
iv_new TYPE zif_abapgit_definitions=>ty_sha1
|
||||
iv_branch_name TYPE string
|
||||
iv_pack TYPE xstring
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
CLASS-METHODS branches
|
||||
IMPORTING iv_url TYPE string
|
||||
RETURNING VALUE(ro_branch_list) TYPE REF TO zcl_abapgit_git_branch_list
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS: BEGIN OF c_service,
|
||||
receive TYPE string VALUE 'receive', "#EC NOTEXT
|
||||
upload TYPE string VALUE 'upload', "#EC NOTEXT
|
||||
END OF c_service.
|
||||
|
||||
CLASS-METHODS branch_list
|
||||
IMPORTING iv_url TYPE string
|
||||
iv_service TYPE string
|
||||
EXPORTING eo_client TYPE REF TO zcl_abapgit_http_client
|
||||
eo_branch_list TYPE REF TO zcl_abapgit_git_branch_list
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
CLASS-METHODS find_branch
|
||||
IMPORTING iv_url TYPE string
|
||||
iv_service TYPE string
|
||||
iv_branch_name TYPE string
|
||||
EXPORTING eo_client TYPE REF TO zcl_abapgit_http_client
|
||||
ev_branch TYPE zif_abapgit_definitions=>ty_sha1
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
CLASS-METHODS parse
|
||||
EXPORTING ev_pack TYPE xstring
|
||||
CHANGING cv_data TYPE xstring
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS. "lcl_transport DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_transport IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_git_transport IMPLEMENTATION.
|
||||
|
||||
METHOD find_branch.
|
||||
|
||||
DATA: lo_branch_list TYPE REF TO zcl_abapgit_git_branch_list.
|
||||
|
||||
branch_list(
|
||||
EXPORTING
|
||||
iv_url = iv_url
|
||||
iv_service = iv_service
|
||||
IMPORTING
|
||||
eo_client = eo_client
|
||||
eo_branch_list = lo_branch_list ).
|
||||
|
||||
IF ev_branch IS SUPPLIED.
|
||||
ev_branch = lo_branch_list->find_by_name( iv_branch_name )-sha1.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "find_branch
|
||||
|
||||
METHOD branches.
|
||||
|
||||
DATA: lo_client TYPE REF TO zcl_abapgit_http_client.
|
||||
|
||||
|
||||
lcl_git_transport=>branch_list(
|
||||
EXPORTING
|
||||
iv_url = iv_url
|
||||
iv_service = c_service-upload
|
||||
IMPORTING
|
||||
eo_client = lo_client
|
||||
eo_branch_list = ro_branch_list ).
|
||||
|
||||
lo_client->close( ).
|
||||
|
||||
ENDMETHOD. "branches
|
||||
|
||||
METHOD branch_list.
|
||||
|
||||
DATA: lv_data TYPE string.
|
||||
|
||||
|
||||
eo_client = lcl_http=>create_by_url(
|
||||
iv_url = iv_url
|
||||
iv_service = iv_service ).
|
||||
|
||||
lv_data = eo_client->get_cdata( ).
|
||||
|
||||
CREATE OBJECT eo_branch_list
|
||||
EXPORTING
|
||||
iv_data = lv_data.
|
||||
|
||||
ENDMETHOD. "branch_list
|
||||
|
||||
METHOD receive_pack.
|
||||
|
||||
DATA: lo_client TYPE REF TO zcl_abapgit_http_client,
|
||||
lv_cmd_pkt TYPE string,
|
||||
lv_line TYPE string,
|
||||
lv_tmp TYPE xstring,
|
||||
lv_xstring TYPE xstring,
|
||||
lv_string TYPE string,
|
||||
lv_cap_list TYPE string,
|
||||
lv_buffer TYPE string.
|
||||
|
||||
|
||||
find_branch(
|
||||
EXPORTING
|
||||
iv_url = iv_url
|
||||
iv_service = c_service-receive
|
||||
iv_branch_name = iv_branch_name
|
||||
IMPORTING
|
||||
eo_client = lo_client ).
|
||||
|
||||
lo_client->set_headers(
|
||||
iv_url = iv_url
|
||||
iv_service = c_service-receive ).
|
||||
|
||||
lv_cap_list = 'report-status agent=' && lcl_http=>get_agent( ) ##NO_TEXT.
|
||||
|
||||
lv_line = iv_old &&
|
||||
` ` &&
|
||||
iv_new &&
|
||||
` ` &&
|
||||
iv_branch_name &&
|
||||
zcl_abapgit_git_utils=>get_null( ) &&
|
||||
` ` &&
|
||||
lv_cap_list &&
|
||||
zif_abapgit_definitions=>gc_newline. "#EC NOTEXT
|
||||
lv_cmd_pkt = zcl_abapgit_git_utils=>pkt_string( lv_line ).
|
||||
|
||||
lv_buffer = lv_cmd_pkt && '0000'.
|
||||
lv_tmp = zcl_abapgit_convert=>string_to_xstring_utf8( lv_buffer ).
|
||||
|
||||
CONCATENATE lv_tmp iv_pack INTO lv_xstring IN BYTE MODE.
|
||||
|
||||
lv_xstring = lo_client->send_receive_close( lv_xstring ).
|
||||
|
||||
lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xstring ).
|
||||
IF NOT lv_string CP '*unpack ok*'.
|
||||
zcx_abapgit_exception=>raise( 'unpack not ok' ).
|
||||
ELSEIF lv_string CP '*pre-receive hook declined*'.
|
||||
zcx_abapgit_exception=>raise( 'pre-receive hook declined' ).
|
||||
ELSEIF lv_string CP '*funny refname*'.
|
||||
zcx_abapgit_exception=>raise( 'funny refname' ).
|
||||
ELSEIF lv_string CP '*failed to update ref*'.
|
||||
zcx_abapgit_exception=>raise( 'failed to update ref' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "receive_pack
|
||||
|
||||
METHOD parse.
|
||||
|
||||
CONSTANTS: lc_band1 TYPE x VALUE '01'.
|
||||
|
||||
DATA: lv_len TYPE i,
|
||||
lv_contents TYPE xstring,
|
||||
lv_pack TYPE xstring.
|
||||
|
||||
|
||||
WHILE xstrlen( cv_data ) >= 4.
|
||||
lv_len = zcl_abapgit_git_utils=>length_utf8_hex( cv_data ).
|
||||
|
||||
IF lv_len > xstrlen( cv_data ).
|
||||
zcx_abapgit_exception=>raise( 'parse, string length too large' ).
|
||||
ENDIF.
|
||||
|
||||
lv_contents = cv_data(lv_len).
|
||||
IF lv_len = 0.
|
||||
cv_data = cv_data+4.
|
||||
CONTINUE.
|
||||
ELSE.
|
||||
cv_data = cv_data+lv_len.
|
||||
ENDIF.
|
||||
|
||||
lv_contents = lv_contents+4.
|
||||
|
||||
IF xstrlen( lv_contents ) > 1 AND lv_contents(1) = lc_band1.
|
||||
CONCATENATE lv_pack lv_contents+1 INTO lv_pack IN BYTE MODE.
|
||||
ENDIF.
|
||||
|
||||
ENDWHILE.
|
||||
|
||||
ev_pack = lv_pack.
|
||||
|
||||
ENDMETHOD. "parse
|
||||
|
||||
METHOD upload_pack.
|
||||
|
||||
DATA: lo_client TYPE REF TO zcl_abapgit_http_client,
|
||||
lv_buffer TYPE string,
|
||||
lv_xstring TYPE xstring,
|
||||
lv_line TYPE string,
|
||||
lv_pack TYPE xstring,
|
||||
lt_branches TYPE zcl_abapgit_git_branch_list=>ty_git_branch_list_tt,
|
||||
lv_capa TYPE string.
|
||||
|
||||
FIELD-SYMBOLS: <ls_branch> LIKE LINE OF lt_branches.
|
||||
|
||||
|
||||
CLEAR et_objects.
|
||||
|
||||
find_branch(
|
||||
EXPORTING
|
||||
iv_url = io_repo->get_url( )
|
||||
iv_service = c_service-upload
|
||||
iv_branch_name = io_repo->get_branch_name( )
|
||||
IMPORTING
|
||||
eo_client = lo_client
|
||||
ev_branch = ev_branch ).
|
||||
|
||||
IF it_branches IS INITIAL.
|
||||
APPEND INITIAL LINE TO lt_branches ASSIGNING <ls_branch>.
|
||||
<ls_branch>-sha1 = ev_branch.
|
||||
ELSE.
|
||||
lt_branches = it_branches.
|
||||
ENDIF.
|
||||
|
||||
lo_client->set_headers( iv_url = io_repo->get_url( )
|
||||
iv_service = c_service-upload ).
|
||||
|
||||
LOOP AT lt_branches FROM 1 ASSIGNING <ls_branch>.
|
||||
IF sy-tabix = 1.
|
||||
lv_capa = 'side-band-64k no-progress multi_ack agent='
|
||||
&& lcl_http=>get_agent( ) ##NO_TEXT.
|
||||
lv_line = 'want' && ` ` && <ls_branch>-sha1
|
||||
&& ` ` && lv_capa && zif_abapgit_definitions=>gc_newline. "#EC NOTEXT
|
||||
ELSE.
|
||||
lv_line = 'want' && ` ` && <ls_branch>-sha1
|
||||
&& zif_abapgit_definitions=>gc_newline. "#EC NOTEXT
|
||||
ENDIF.
|
||||
lv_buffer = lv_buffer && zcl_abapgit_git_utils=>pkt_string( lv_line ).
|
||||
ENDLOOP.
|
||||
|
||||
IF iv_deepen = abap_true.
|
||||
lv_buffer = lv_buffer && zcl_abapgit_git_utils=>pkt_string( 'deepen 1'
|
||||
&& zif_abapgit_definitions=>gc_newline ). "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
||||
lv_buffer = lv_buffer
|
||||
&& '0000'
|
||||
&& '0009done' && zif_abapgit_definitions=>gc_newline.
|
||||
|
||||
lv_xstring = lo_client->send_receive_close(
|
||||
zcl_abapgit_convert=>string_to_xstring_utf8( lv_buffer ) ).
|
||||
|
||||
parse( IMPORTING ev_pack = lv_pack
|
||||
CHANGING cv_data = lv_xstring ).
|
||||
|
||||
IF lv_pack IS INITIAL.
|
||||
zcx_abapgit_exception=>raise( 'empty pack' ).
|
||||
ENDIF.
|
||||
|
||||
et_objects = zcl_abapgit_git_pack=>decode( lv_pack ).
|
||||
|
||||
ENDMETHOD. "upload_pack
|
||||
|
||||
ENDCLASS. "lcl_transport IMPLEMENTATION
|
||||
|
||||
CLASS ltcl_git_porcelain DEFINITION DEFERRED.
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -490,7 +208,7 @@ CLASS lcl_git_porcelain IMPLEMENTATION.
|
|||
iv_type = zif_abapgit_definitions=>gc_type-commit
|
||||
iv_data = lv_commit ).
|
||||
|
||||
lcl_git_transport=>receive_pack(
|
||||
zcl_abapgit_git_transport=>receive_pack(
|
||||
iv_url = io_repo->get_url( )
|
||||
iv_old = io_stage->get_branch_sha1( )
|
||||
iv_new = rv_branch
|
||||
|
@ -518,7 +236,7 @@ CLASS lcl_git_porcelain IMPLEMENTATION.
|
|||
* https://github.com/git/git/blob/master/Documentation/technical/pack-protocol.txt#L514
|
||||
lv_pack = zcl_abapgit_git_pack=>encode( lt_objects ).
|
||||
|
||||
lcl_git_transport=>receive_pack(
|
||||
zcl_abapgit_git_transport=>receive_pack(
|
||||
iv_url = io_repo->get_url( )
|
||||
iv_old = is_branch-sha1
|
||||
iv_new = c_zero
|
||||
|
@ -537,7 +255,7 @@ CLASS lcl_git_porcelain IMPLEMENTATION.
|
|||
* https://github.com/git/git/blob/master/Documentation/technical/pack-protocol.txt#L514
|
||||
lv_pack = zcl_abapgit_git_pack=>encode( lt_objects ).
|
||||
|
||||
lcl_git_transport=>receive_pack(
|
||||
zcl_abapgit_git_transport=>receive_pack(
|
||||
iv_url = io_repo->get_url( )
|
||||
iv_old = is_tag-sha1
|
||||
iv_new = c_zero
|
||||
|
@ -559,7 +277,7 @@ CLASS lcl_git_porcelain IMPLEMENTATION.
|
|||
* https://github.com/git/git/blob/master/Documentation/technical/pack-protocol.txt#L514
|
||||
lv_pack = zcl_abapgit_git_pack=>encode( lt_objects ).
|
||||
|
||||
lcl_git_transport=>receive_pack(
|
||||
zcl_abapgit_git_transport=>receive_pack(
|
||||
iv_url = io_repo->get_url( )
|
||||
iv_old = c_zero
|
||||
iv_new = iv_from
|
||||
|
@ -581,7 +299,7 @@ CLASS lcl_git_porcelain IMPLEMENTATION.
|
|||
* https://github.com/git/git/blob/master/Documentation/technical/pack-protocol.txt#L514
|
||||
lv_pack = zcl_abapgit_git_pack=>encode( lt_objects ).
|
||||
|
||||
lcl_git_transport=>receive_pack(
|
||||
zcl_abapgit_git_transport=>receive_pack(
|
||||
iv_url = io_repo->get_url( )
|
||||
iv_old = c_zero
|
||||
iv_new = iv_from
|
||||
|
@ -616,9 +334,13 @@ CLASS lcl_git_porcelain IMPLEMENTATION.
|
|||
<ls_branch>-name = io_stage->get_branch_name( ).
|
||||
<ls_branch>-sha1 = io_stage->get_branch_sha1( ).
|
||||
|
||||
lcl_git_transport=>upload_pack( EXPORTING io_repo = io_repo
|
||||
it_branches = lt_branches
|
||||
IMPORTING et_objects = lt_objects ).
|
||||
zcl_abapgit_git_transport=>upload_pack(
|
||||
EXPORTING
|
||||
iv_url = io_repo->get_url( )
|
||||
iv_branch_name = io_repo->get_branch_name( )
|
||||
it_branches = lt_branches
|
||||
IMPORTING
|
||||
et_objects = lt_objects ).
|
||||
ENDIF.
|
||||
|
||||
lt_expanded = full_tree( it_objects = lt_objects
|
||||
|
@ -745,9 +467,13 @@ CLASS lcl_git_porcelain IMPLEMENTATION.
|
|||
CLEAR et_objects.
|
||||
CLEAR ev_branch.
|
||||
|
||||
lcl_git_transport=>upload_pack( EXPORTING io_repo = io_repo
|
||||
IMPORTING et_objects = et_objects
|
||||
ev_branch = ev_branch ).
|
||||
zcl_abapgit_git_transport=>upload_pack(
|
||||
EXPORTING
|
||||
iv_url = io_repo->get_url( )
|
||||
iv_branch_name = io_repo->get_branch_name( )
|
||||
IMPORTING
|
||||
et_objects = et_objects
|
||||
ev_branch = ev_branch ).
|
||||
|
||||
READ TABLE et_objects INTO ls_object WITH KEY sha1 = ev_branch type = zif_abapgit_definitions=>gc_type-commit.
|
||||
IF sy-subrc <> 0.
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_GUI_ASSET_MANAGER
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
* todo, include to be deleted
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_GUI_ASSET_MANAGER</NAME>
|
||||
<STATE>A</STATE>
|
||||
<VARCL>X</VARCL>
|
||||
<SUBC>I</SUBC>
|
||||
<RLOAD>E</RLOAD>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<ENTRY>Include ZABAPGIT_GUI_ASSET_MANAGER</ENTRY>
|
||||
<LENGTH>34</LENGTH>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -6,7 +6,6 @@
|
|||
|
||||
* Super class & common html chunks
|
||||
INCLUDE zabapgit_html_chunks.
|
||||
INCLUDE zabapgit_page.
|
||||
|
||||
* Utils and helpers
|
||||
INCLUDE zabapgit_repo_browser_util.
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_HTTP</NAME>
|
||||
<STATE>A</STATE>
|
||||
<VARCL>X</VARCL>
|
||||
<SUBC>I</SUBC>
|
||||
<RLOAD>E</RLOAD>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<ENTRY>Include ZABAPGIT_HTTP</ENTRY>
|
||||
<LENGTH>21</LENGTH>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -1,5 +0,0 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_PAGE
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
* todo, include to be deleted
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_PAGE</NAME>
|
||||
<STATE>A</STATE>
|
||||
<VARCL>X</VARCL>
|
||||
<SUBC>I</SUBC>
|
||||
<RLOAD>E</RLOAD>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<ENTRY>Include ZABAPGIT_PAGE</ENTRY>
|
||||
<LENGTH>21</LENGTH>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -175,15 +175,19 @@ CLASS lcl_branch_overview IMPLEMENTATION.
|
|||
|
||||
"TODO refactor
|
||||
|
||||
lo_branch_list = lcl_git_transport=>branches( io_repo->get_url( ) ).
|
||||
lo_branch_list = zcl_abapgit_git_transport=>branches( io_repo->get_url( ) ).
|
||||
|
||||
gt_branches = lo_branch_list->get_branches_only( ).
|
||||
gt_tags = lo_branch_list->get_tags_only( ).
|
||||
|
||||
lcl_git_transport=>upload_pack( EXPORTING io_repo = io_repo
|
||||
iv_deepen = abap_false
|
||||
it_branches = gt_branches
|
||||
IMPORTING et_objects = rt_objects ).
|
||||
zcl_abapgit_git_transport=>upload_pack(
|
||||
EXPORTING
|
||||
iv_url = io_repo->get_url( )
|
||||
iv_branch_name = io_repo->get_branch_name( )
|
||||
iv_deepen = abap_false
|
||||
it_branches = gt_branches
|
||||
IMPORTING
|
||||
et_objects = rt_objects ).
|
||||
|
||||
DELETE rt_objects WHERE type = zif_abapgit_definitions=>gc_type-blob.
|
||||
|
||||
|
|
|
@ -297,7 +297,7 @@ CLASS lcl_merge IMPLEMENTATION.
|
|||
DATA: lo_branch_list TYPE REF TO zcl_abapgit_git_branch_list,
|
||||
lt_upload TYPE zcl_abapgit_git_branch_list=>ty_git_branch_list_tt.
|
||||
|
||||
lo_branch_list = lcl_git_transport=>branches( gs_merge-repo->get_url( ) ).
|
||||
lo_branch_list = zcl_abapgit_git_transport=>branches( gs_merge-repo->get_url( ) ).
|
||||
gs_merge-source = lo_branch_list->find_by_name(
|
||||
zcl_abapgit_git_branch_list=>complete_heads_branch_name( iv_source ) ).
|
||||
gs_merge-target = lo_branch_list->find_by_name(
|
||||
|
@ -306,10 +306,14 @@ CLASS lcl_merge IMPLEMENTATION.
|
|||
APPEND gs_merge-source TO lt_upload.
|
||||
APPEND gs_merge-target TO lt_upload.
|
||||
|
||||
lcl_git_transport=>upload_pack( EXPORTING io_repo = gs_merge-repo
|
||||
iv_deepen = abap_false
|
||||
it_branches = lt_upload
|
||||
IMPORTING et_objects = gt_objects ).
|
||||
zcl_abapgit_git_transport=>upload_pack(
|
||||
EXPORTING
|
||||
iv_url = gs_merge-repo->get_url( )
|
||||
iv_branch_name = gs_merge-repo->get_branch_name( )
|
||||
iv_deepen = abap_false
|
||||
it_branches = lt_upload
|
||||
IMPORTING
|
||||
et_objects = gt_objects ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -510,7 +510,7 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
<ls_branch> LIKE LINE OF lt_branches.
|
||||
|
||||
|
||||
lo_branches = lcl_git_transport=>branches( iv_url ).
|
||||
lo_branches = zcl_abapgit_git_transport=>branches( iv_url ).
|
||||
lt_branches = lo_branches->get_branches_only( ).
|
||||
lv_head_suffix = | ({ zcl_abapgit_git_branch_list=>c_head_name })|.
|
||||
lv_head_symref = lo_branches->get_head_symref( ).
|
||||
|
@ -616,7 +616,7 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
FIELD-SYMBOLS: <ls_sel> LIKE LINE OF lt_selection,
|
||||
<ls_tag> LIKE LINE OF lt_tags.
|
||||
|
||||
lo_branches = lcl_git_transport=>branches( iv_url ).
|
||||
lo_branches = zcl_abapgit_git_transport=>branches( iv_url ).
|
||||
lt_tags = lo_branches->get_tags_only( ).
|
||||
|
||||
IF lines( lt_tags ) = 0.
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include zabapgit_proxy
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
* todo, include to be deleted
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_PROXY</NAME>
|
||||
<STATE>A</STATE>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL>S</DBAPL>
|
||||
<DBNA>D$</DBNA>
|
||||
<SUBC>I</SUBC>
|
||||
<FIXPT>X</FIXPT>
|
||||
<LDBNAME>D$S</LDBNAME>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<ENTRY>ZABAPGIT_PROXY</ENTRY>
|
||||
<LENGTH>14</LENGTH>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -98,7 +98,7 @@ CLASS lcl_repo_online IMPLEMENTATION.
|
|||
|
||||
ENDTRY.
|
||||
|
||||
mo_branches = lcl_git_transport=>branches( get_url( ) ).
|
||||
mo_branches = zcl_abapgit_git_transport=>branches( get_url( ) ).
|
||||
actualize_head_branch( ).
|
||||
|
||||
mv_initialized = abap_true.
|
||||
|
@ -147,7 +147,7 @@ CLASS lcl_repo_online IMPLEMENTATION.
|
|||
|
||||
METHOD get_branches.
|
||||
IF mo_branches IS NOT BOUND.
|
||||
mo_branches = lcl_git_transport=>branches( get_url( ) ).
|
||||
mo_branches = zcl_abapgit_git_transport=>branches( get_url( ) ).
|
||||
ENDIF.
|
||||
ro_branches = mo_branches.
|
||||
ENDMETHOD. "get_branches
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include zabapgit_skip_objects
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
* todo, include to be deleted
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_SKIP_OBJECTS</NAME>
|
||||
<STATE>A</STATE>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL>S</DBAPL>
|
||||
<DBNA>D$</DBNA>
|
||||
<SUBC>I</SUBC>
|
||||
<FIXPT>X</FIXPT>
|
||||
<LDBNAME>D$S</LDBNAME>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<ENTRY>Include ZABAPGIT_SKIP_OBJECTS</ENTRY>
|
||||
<LENGTH>29</LENGTH>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -1164,4 +1164,3 @@ ENDCLASS.
|
|||
*ENDCLASS.
|
||||
|
||||
INCLUDE zabapgit_unit_test_clas_intf.
|
||||
INCLUDE zabapgit_unit_test_transport.
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_UNIT_TEST_TRANSPORT
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
* todo, include to be deleted
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_UNIT_TEST_TRANSPORT</NAME>
|
||||
<STATE>A</STATE>
|
||||
<VARCL>X</VARCL>
|
||||
<SUBC>I</SUBC>
|
||||
<RLOAD>E</RLOAD>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<ENTRY>Include ZABAPGIT_UNIT_TEST_TRANSPORT</ENTRY>
|
||||
<LENGTH>36</LENGTH>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
Loading…
Reference in New Issue
Block a user