mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Fix "Unexpected package naming" error (#5805)
* Fix "Unexpected package naming" error Previously, when an object existed in the repo and locally but was *not* included in the package hierarchy of the repository, you would get the following error (when opening the repo): ... With this PR, log messages will list all objects that are not included in the package hierarchy. When pulling, the popup will show these objects and ask for confirmation to overwrite. I added an icon and description to the "package overwrite" popup similar to the "object selection" popup. Closes #5728 * Update unit tests Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
ff573fd4d6
commit
f8ac419f29
|
@ -440,6 +440,7 @@ CLASS zcl_abapgit_file_status IMPLEMENTATION.
|
|||
|
||||
DATA:
|
||||
lv_path TYPE string,
|
||||
lv_object TYPE string,
|
||||
lo_folder_logic TYPE REF TO zcl_abapgit_folder_logic.
|
||||
|
||||
FIELD-SYMBOLS <ls_result> LIKE LINE OF it_results.
|
||||
|
@ -454,12 +455,12 @@ CLASS zcl_abapgit_file_status IMPLEMENTATION.
|
|||
io_dot = io_dot
|
||||
iv_package = <ls_result>-package ).
|
||||
|
||||
IF lv_path <> <ls_result>-path.
|
||||
ii_log->add( iv_msg = |Package and path do not match for object {
|
||||
<ls_result>-obj_type } { <ls_result>-obj_name }|
|
||||
iv_type = 'W' ).
|
||||
ELSEIF lv_path IS INITIAL.
|
||||
zcx_abapgit_exception=>raise( |Error determining parent package of package { <ls_result>-package }| ).
|
||||
lv_object = |{ <ls_result>-obj_type } { <ls_result>-obj_name }|.
|
||||
|
||||
IF lv_path IS INITIAL.
|
||||
ii_log->add_error( |{ lv_object } already exists outside of { iv_top } package hierarchy| ).
|
||||
ELSEIF lv_path <> <ls_result>-path.
|
||||
ii_log->add_warning( |Package and path do not match for object { lv_object }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
|
|
@ -30,6 +30,7 @@ CLASS zcl_abapgit_folder_logic DEFINITION
|
|||
|
||||
METHODS get_parent
|
||||
IMPORTING
|
||||
!iv_top TYPE devclass
|
||||
!iv_package TYPE devclass
|
||||
RETURNING
|
||||
VALUE(rv_parent) TYPE devclass
|
||||
|
@ -45,6 +46,7 @@ CLASS zcl_abapgit_folder_logic DEFINITION
|
|||
TYPES:
|
||||
ty_devclass_info_tt TYPE SORTED TABLE OF ty_devclass_info
|
||||
WITH UNIQUE KEY devclass .
|
||||
DATA mt_top_subpackages TYPE ty_devclass_info_tt .
|
||||
DATA mt_parent TYPE ty_devclass_info_tt .
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -61,6 +63,16 @@ CLASS zcl_abapgit_folder_logic IMPLEMENTATION.
|
|||
METHOD get_parent.
|
||||
DATA: ls_parent LIKE LINE OF mt_parent.
|
||||
|
||||
" Check that package is included in the TOP package hierarchy
|
||||
IF mt_top_subpackages IS INITIAL.
|
||||
mt_top_subpackages = zcl_abapgit_factory=>get_sap_package( iv_top )->list_subpackages( ).
|
||||
ENDIF.
|
||||
|
||||
READ TABLE mt_top_subpackages TRANSPORTING NO FIELDS WITH KEY devclass = iv_package.
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"Determine Parent Package
|
||||
READ TABLE mt_parent INTO ls_parent
|
||||
WITH TABLE KEY devclass = iv_package.
|
||||
|
@ -86,7 +98,9 @@ CLASS zcl_abapgit_folder_logic IMPLEMENTATION.
|
|||
IF iv_top = iv_package.
|
||||
rv_path = io_dot->get_starting_folder( ).
|
||||
ELSE.
|
||||
lv_parentcl = get_parent( iv_package ).
|
||||
lv_parentcl = get_parent(
|
||||
iv_top = iv_top
|
||||
iv_package = iv_package ).
|
||||
|
||||
" If the parent package can not be determined, we return an initial path and handle
|
||||
" it outside of this class (in zcl_abapgit_file_status)
|
||||
|
|
|
@ -35,6 +35,10 @@ CLASS ltcl_folder_logic_helper IMPLEMENTATION.
|
|||
io_dot = lo_dot
|
||||
iv_package = iv_package ).
|
||||
|
||||
IF lv_path IS INITIAL.
|
||||
zcx_abapgit_exception=>raise( 'Unable to determine path' ).
|
||||
ENDIF.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_package
|
||||
exp = iv_package ).
|
||||
|
@ -57,7 +61,11 @@ ENDCLASS.
|
|||
CLASS ltcl_folder_logic_package IMPLEMENTATION.
|
||||
|
||||
METHOD zif_abapgit_sap_package~list_subpackages.
|
||||
RETURN.
|
||||
DATA lv_devclass TYPE devclass.
|
||||
lv_devclass = '$TOP_BAR'.
|
||||
INSERT lv_devclass INTO TABLE rt_list.
|
||||
lv_devclass = '$TOP_FOO_BAR'.
|
||||
INSERT lv_devclass INTO TABLE rt_list.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_sap_package~list_superpackages.
|
||||
|
@ -125,8 +133,22 @@ ENDCLASS.
|
|||
|
||||
CLASS ltcl_folder_logic IMPLEMENTATION.
|
||||
|
||||
" Test packages:
|
||||
"
|
||||
" $TOP
|
||||
" > $TOP_FOO
|
||||
" > > $TOP_BAR
|
||||
" > > $TOP_FOO_BAR
|
||||
"
|
||||
" $FOOBAR (outside of $TOP)
|
||||
METHOD zif_abapgit_sap_package~list_subpackages.
|
||||
RETURN.
|
||||
DATA lv_devclass TYPE devclass.
|
||||
lv_devclass = '$TOP_BAR'.
|
||||
INSERT lv_devclass INTO TABLE rt_list.
|
||||
lv_devclass = '$TOP_FOO'.
|
||||
INSERT lv_devclass INTO TABLE rt_list.
|
||||
lv_devclass = '$TOP_FOO_BAR'.
|
||||
INSERT lv_devclass INTO TABLE rt_list.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_sap_package~list_superpackages.
|
||||
|
@ -322,8 +344,17 @@ ENDCLASS.
|
|||
|
||||
CLASS ltcl_folder_logic_namespaces IMPLEMENTATION.
|
||||
|
||||
" Test packages:
|
||||
"
|
||||
" /TEST/TOOLS
|
||||
" > /TEST/T1
|
||||
" > /TEST/TOOLS_T1
|
||||
METHOD zif_abapgit_sap_package~list_subpackages.
|
||||
RETURN.
|
||||
DATA lv_devclass TYPE devclass.
|
||||
lv_devclass = '/TEST/T1'.
|
||||
INSERT lv_devclass INTO TABLE rt_list.
|
||||
lv_devclass = '/TEST/TOOLS_T1'.
|
||||
INSERT lv_devclass INTO TABLE rt_list.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_sap_package~list_superpackages.
|
||||
|
|
|
@ -284,6 +284,9 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
|
|||
ls_overwrite-obj_type = <ls_result>-obj_type.
|
||||
ls_overwrite-obj_name = <ls_result>-obj_name.
|
||||
ls_overwrite-devclass = ls_tadir-devclass.
|
||||
ls_overwrite-action = zif_abapgit_objects=>c_deserialize_action-overwrite.
|
||||
ls_overwrite-icon = icon_change.
|
||||
ls_overwrite-text = 'Overwrite local object'.
|
||||
INSERT ls_overwrite INTO TABLE lt_overwrite_unique.
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_services_repo IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD check_package.
|
||||
|
@ -395,6 +395,14 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
<ls_column>-name = 'OBJ_NAME'.
|
||||
APPEND INITIAL LINE TO lt_columns ASSIGNING <ls_column>.
|
||||
<ls_column>-name = 'DEVCLASS'.
|
||||
APPEND INITIAL LINE TO lt_columns ASSIGNING <ls_column>.
|
||||
<ls_column>-name = 'ICON'.
|
||||
<ls_column>-text = 'Action'.
|
||||
<ls_column>-show_icon = abap_true.
|
||||
<ls_column>-length = 5.
|
||||
APPEND INITIAL LINE TO lt_columns ASSIGNING <ls_column>.
|
||||
<ls_column>-name = 'TEXT'.
|
||||
<ls_column>-text = 'Description'.
|
||||
|
||||
li_popups = zcl_abapgit_ui_factory=>get_popups( ).
|
||||
li_popups->popup_to_select_from_list(
|
||||
|
|
Loading…
Reference in New Issue
Block a user