From a3a441bb5fa63dd9644a85ac71eec2c7f282372b Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 26 May 2016 09:16:08 +0000 Subject: [PATCH] warning uncommited change, close #173 if objects are modified locally and a pull is performed, abapGit will ask if the object should be overwritten --- zabapgit.prog.abap | 82 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 76 insertions(+), 6 deletions(-) diff --git a/zabapgit.prog.abap b/zabapgit.prog.abap index 7605a3fd3..56681a6d6 100644 --- a/zabapgit.prog.abap +++ b/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.9.7'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.9.8'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) @@ -13072,7 +13072,12 @@ CLASS lcl_objects DEFINITION FINAL. CHANGING ct_tadir TYPE lcl_tadir=>ty_tadir_tt RAISING lcx_exception. - CLASS-METHODS check_warning + CLASS-METHODS warning_overwrite + IMPORTING io_repo TYPE REF TO lcl_repo + CHANGING ct_results TYPE lcl_file_status=>ty_results_tt + RAISING lcx_exception. + + CLASS-METHODS warning_package IMPORTING is_item TYPE ty_item iv_package TYPE devclass RETURNING VALUE(rv_cancel) TYPE abap_bool @@ -13603,7 +13608,69 @@ ENDCLASS. "lcl_package IMPLEMENTATION *----------------------------------------------------------------------* CLASS lcl_objects IMPLEMENTATION. - METHOD check_warning. + METHOD warning_overwrite. + + DATA: lv_index TYPE i, + lv_answer TYPE c, + lv_question TYPE string, + lt_before TYPE lcl_persistence_repo=>ty_local_checksum_tt, + lt_current TYPE lcl_persistence_repo=>ty_local_checksum_tt. + + FIELD-SYMBOLS: LIKE LINE OF lt_before, + LIKE LINE OF lt_current, + LIKE LINE OF ct_results. + + + lt_before = io_repo->get_local_checksums( ). + lt_current = io_repo->build_local_checksums( ). + + LOOP AT ct_results ASSIGNING . + lv_index = sy-tabix. + + READ TABLE lt_before ASSIGNING + WITH KEY item-obj_type = -obj_type + item-obj_name = -obj_name. + IF sy-subrc <> 0. + CONTINUE. + ENDIF. + + READ TABLE lt_current ASSIGNING + WITH KEY item-obj_type = -obj_type + item-obj_name = -obj_name. + IF sy-subrc <> 0. + CONTINUE. + ENDIF. + + IF -sha1 <> -sha1. + lv_question = |It looks like object { -obj_type + } { -obj_name + } has been modified locally, overwrite object?|. + + CALL FUNCTION 'POPUP_TO_CONFIRM' + EXPORTING + titlebar = 'Warning' + text_question = lv_question + display_cancel_button = abap_false + IMPORTING + answer = lv_answer + EXCEPTIONS + text_not_found = 1 + OTHERS = 2. + IF sy-subrc <> 0. + _raise 'error from POPUP_TO_CONFIRM'. + ENDIF. + + IF lv_answer = '2'. + DELETE ct_results INDEX lv_index. + ENDIF. + + ENDIF. + + ENDLOOP. + + ENDMETHOD. + + METHOD warning_package. DATA: lv_question TYPE c LENGTH 200, lv_answer TYPE c, @@ -14055,6 +14122,9 @@ CLASS lcl_objects IMPLEMENTATION. lt_results = prioritize_deser( lt_results ). + warning_overwrite( EXPORTING io_repo = io_repo + CHANGING ct_results = lt_results ). + LOOP AT lt_results ASSIGNING . lcl_progress=>show( iv_key = 'Deserialize' iv_current = sy-tabix @@ -14067,10 +14137,10 @@ CLASS lcl_objects IMPLEMENTATION. * handle namespaces REPLACE ALL OCCURRENCES OF '#' IN ls_item-obj_name WITH '/'. - lv_cancel = check_warning( is_item = ls_item - iv_package = io_repo->get_package( ) ). + lv_cancel = warning_package( is_item = ls_item + iv_package = io_repo->get_package( ) ). IF lv_cancel = abap_true. - RETURN. + _raise 'cancelled'. ENDIF. CREATE OBJECT lo_files