From d431f2d9d0fda9ac6a148bd6c0c8334ba4f10b35 Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 5 Aug 2018 09:58:32 +0000 Subject: [PATCH] separate repo from CREATE_BRANCH --- src/git/zcl_abapgit_git_porcelain.clas.abap | 70 ++++++++++---------- src/ui/zcl_abapgit_services_git.clas.abap | 7 +- src/zcl_abapgit_transport_2_branch.clas.abap | 4 +- 3 files changed, 42 insertions(+), 39 deletions(-) diff --git a/src/git/zcl_abapgit_git_porcelain.clas.abap b/src/git/zcl_abapgit_git_porcelain.clas.abap index 0ce5edc52..f6fe86c70 100644 --- a/src/git/zcl_abapgit_git_porcelain.clas.abap +++ b/src/git/zcl_abapgit_git_porcelain.clas.abap @@ -4,6 +4,7 @@ CLASS zcl_abapgit_git_porcelain DEFINITION CREATE PUBLIC . PUBLIC SECTION. + CLASS-METHODS pull IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online @@ -26,15 +27,15 @@ CLASS zcl_abapgit_git_porcelain DEFINITION zcx_abapgit_exception . CLASS-METHODS create_branch IMPORTING - !io_repo TYPE REF TO zcl_abapgit_repo_online + !iv_url TYPE string !iv_name TYPE string - iv_from TYPE zif_abapgit_definitions=>ty_sha1 + !iv_from TYPE zif_abapgit_definitions=>ty_sha1 RAISING zcx_abapgit_exception . CLASS-METHODS create_tag IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo_online - is_tag TYPE zif_abapgit_definitions=>ty_git_tag + !is_tag TYPE zif_abapgit_definitions=>ty_git_tag RAISING zcx_abapgit_exception . CLASS-METHODS delete_branch @@ -56,8 +57,7 @@ CLASS zcl_abapgit_git_porcelain DEFINITION RETURNING VALUE(rt_expanded) TYPE zif_abapgit_definitions=>ty_expanded_tt RAISING - zcx_abapgit_exception. - + zcx_abapgit_exception . PRIVATE SECTION. TYPES: BEGIN OF ty_tree, path TYPE string, @@ -132,7 +132,7 @@ ENDCLASS. -CLASS zcl_abapgit_git_porcelain IMPLEMENTATION. +CLASS ZCL_ABAPGIT_GIT_PORCELAIN IMPLEMENTATION. METHOD build_trees. @@ -192,6 +192,15 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION. ENDMETHOD. + METHOD create_annotated_tag. + + receive_pack_create_tag( + is_tag = is_tag + io_repo = io_repo ). + + ENDMETHOD. + + METHOD create_branch. DATA: lt_objects TYPE zif_abapgit_definitions=>ty_objects_tt, @@ -206,7 +215,7 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION. lv_pack = zcl_abapgit_git_pack=>encode( lt_objects ). zcl_abapgit_git_transport=>receive_pack( - iv_url = io_repo->get_url( ) + iv_url = iv_url iv_old = c_zero iv_new = iv_from iv_branch_name = iv_name @@ -215,6 +224,25 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION. ENDMETHOD. + METHOD create_lightweight_tag. + + DATA: lt_objects TYPE zif_abapgit_definitions=>ty_objects_tt, + lv_pack TYPE xstring. + +* "client MUST send an empty packfile" +* https://github.com/git/git/blob/master/Documentation/technical/pack-protocol.txt#L514 + lv_pack = zcl_abapgit_git_pack=>encode( lt_objects ). + + zcl_abapgit_git_transport=>receive_pack( + iv_url = io_repo->get_url( ) + iv_old = c_zero + iv_new = is_tag-sha1 + iv_branch_name = is_tag-name + iv_pack = lv_pack ). + + ENDMETHOD. + + METHOD create_tag. IF is_tag-name CS ` `. @@ -699,32 +727,4 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION. ENDLOOP. ENDMETHOD. - - METHOD create_annotated_tag. - - receive_pack_create_tag( - is_tag = is_tag - io_repo = io_repo ). - - ENDMETHOD. - - - METHOD create_lightweight_tag. - - DATA: lt_objects TYPE zif_abapgit_definitions=>ty_objects_tt, - lv_pack TYPE xstring. - -* "client MUST send an empty packfile" -* https://github.com/git/git/blob/master/Documentation/technical/pack-protocol.txt#L514 - lv_pack = zcl_abapgit_git_pack=>encode( lt_objects ). - - zcl_abapgit_git_transport=>receive_pack( - iv_url = io_repo->get_url( ) - iv_old = c_zero - iv_new = is_tag-sha1 - iv_branch_name = is_tag-name - iv_pack = lv_pack ). - - ENDMETHOD. - ENDCLASS. diff --git a/src/ui/zcl_abapgit_services_git.clas.abap b/src/ui/zcl_abapgit_services_git.clas.abap index 45d00d17b..8c6d75879 100644 --- a/src/ui/zcl_abapgit_services_git.clas.abap +++ b/src/ui/zcl_abapgit_services_git.clas.abap @@ -80,7 +80,7 @@ ENDCLASS. -CLASS zcl_abapgit_services_git IMPLEMENTATION. +CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION. METHOD commit. @@ -140,15 +140,18 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION. RAISE EXCEPTION TYPE zcx_abapgit_cancel. ENDIF. +**************** +* TODO: move this part to ONLINE repo class ASSERT lv_name CP 'refs/heads/+*'. zcl_abapgit_git_porcelain=>create_branch( - io_repo = lo_repo + iv_url = lo_repo->get_url( ) iv_name = lv_name iv_from = lo_repo->get_sha1_remote( ) ). " automatically switch to new branch lo_repo->set_branch_name( lv_name ). +***************** MESSAGE 'Switched to new branch' TYPE 'S' ##NO_TEXT. diff --git a/src/zcl_abapgit_transport_2_branch.clas.abap b/src/zcl_abapgit_transport_2_branch.clas.abap index ca7939d71..3b0438f67 100644 --- a/src/zcl_abapgit_transport_2_branch.clas.abap +++ b/src/zcl_abapgit_transport_2_branch.clas.abap @@ -33,7 +33,7 @@ ENDCLASS. -CLASS zcl_abapgit_transport_2_branch IMPLEMENTATION. +CLASS ZCL_ABAPGIT_TRANSPORT_2_BRANCH IMPLEMENTATION. METHOD create. @@ -77,7 +77,7 @@ CLASS zcl_abapgit_transport_2_branch IMPLEMENTATION. ASSERT iv_branch_name CP 'refs/heads/+*'. TRY. zcl_abapgit_git_porcelain=>create_branch( - io_repo = io_repository + iv_url = io_repository->get_url( ) iv_name = iv_branch_name iv_from = io_repository->get_sha1_remote( ) ).