From a02632edcb7eed5ff1fff27271ebe7a61a04e5a8 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:03:11 -0400 Subject: [PATCH] Add package check when creating repository (#7037) Co-authored-by: Lars Hvam --- src/repo/zcl_abapgit_repo_srv.clas.abap | 42 +++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/repo/zcl_abapgit_repo_srv.clas.abap b/src/repo/zcl_abapgit_repo_srv.clas.abap index 7d8e3191f..d58536cdd 100644 --- a/src/repo/zcl_abapgit_repo_srv.clas.abap +++ b/src/repo/zcl_abapgit_repo_srv.clas.abap @@ -55,6 +55,7 @@ CLASS zcl_abapgit_repo_srv DEFINITION !is_meta TYPE zif_abapgit_persistence=>ty_repo_xml RAISING zcx_abapgit_exception . + METHODS validate_sub_super_packages IMPORTING !iv_package TYPE devclass @@ -65,6 +66,13 @@ CLASS zcl_abapgit_repo_srv DEFINITION !ev_reason TYPE string RAISING zcx_abapgit_exception . + + METHODS validate_package_korrflag + IMPORTING + !iv_package TYPE devclass + !iv_ign_subpkg TYPE abap_bool DEFAULT abap_false + RAISING + zcx_abapgit_exception. ENDCLASS. @@ -219,6 +227,35 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION. ENDMETHOD. + METHOD validate_package_korrflag. + + DATA: + li_package TYPE REF TO zif_abapgit_sap_package, + lv_korrflag TYPE abap_bool, + lv_package TYPE devclass, + lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt. + + li_package = zcl_abapgit_factory=>get_sap_package( iv_package ). + IF li_package->exists( ) = abap_false. + " Skip dangling repository + RETURN. + ENDIF. + + lv_korrflag = li_package->are_changes_recorded_in_tr_req( ). + + IF iv_ign_subpkg = abap_false. + lt_packages = li_package->list_subpackages( ). + LOOP AT lt_packages INTO lv_package. + li_package = zcl_abapgit_factory=>get_sap_package( lv_package ). + IF li_package->exists( ) = abap_true AND li_package->are_changes_recorded_in_tr_req( ) <> lv_korrflag. + zcx_abapgit_exception=>raise( 'Mix of transportable and non-transportable packages is not supported' ). + ENDIF. + ENDLOOP. + ENDIF. + + ENDMETHOD. + + METHOD validate_sub_super_packages. DATA: @@ -709,6 +746,11 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION. ENDIF. ENDIF. + " Check if package hierarchy is a mix of transportable and local packages + validate_package_korrflag( + iv_package = iv_package + iv_ign_subpkg = iv_ign_subpkg ). + ENDMETHOD.