From b5b3df5d75c5b4b1a8f8bacf9519e2cffa2ae935 Mon Sep 17 00:00:00 2001 From: atsy Date: Sun, 12 Jun 2016 14:32:07 +0300 Subject: [PATCH] #238, lcl_stage and dot_abapgit fixes --- zabapgit.prog.abap | 61 ++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/zabapgit.prog.abap b/zabapgit.prog.abap index e996db2eb..cd7f847ba 100644 --- a/zabapgit.prog.abap +++ b/zabapgit.prog.abap @@ -123,6 +123,9 @@ CONSTANTS: gc_english TYPE spras VALUE 'E'. CONSTANTS: gc_abapgit_homepage TYPE string VALUE 'http://www.abapgit.org'. +CONSTANTS: c_root_dir TYPE string VALUE '/', + c_dot_abapgit TYPE string VALUE '.abapgit.xml'. + DEFINE _raise. RAISE EXCEPTION TYPE lcx_exception EXPORTING @@ -13498,8 +13501,6 @@ CLASS lcl_repo DEFINITION ABSTRACT. RAISING lcx_exception. PROTECTED SECTION. - CONSTANTS: c_root TYPE string VALUE '/', - c_dot_abapgit TYPE string VALUE '.abapgit.xml'. DATA: mt_local TYPE ty_files_item_tt, mt_remote TYPE ty_files_tt, @@ -16048,6 +16049,10 @@ CLASS lcl_stage DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_repo_srv. IMPORTING iv_repo_key TYPE lcl_persistence_db=>ty_value RAISING lcx_exception. + METHODS update_and_add_dot_abapgit + IMPORTING iv_data TYPE ty_file-data + RAISING lcx_exception. + METHODS: add IMPORTING iv_path TYPE ty_file-path @@ -16934,8 +16939,7 @@ CLASS lcl_repo_online IMPLEMENTATION. METHOD handle_stage_ignore. - DATA: lt_stage TYPE lcl_stage=>ty_stage_tt, - ls_file TYPE ty_file. + DATA: lt_stage TYPE lcl_stage=>ty_stage_tt. FIELD-SYMBOLS: LIKE LINE OF lt_stage. @@ -16948,17 +16952,12 @@ CLASS lcl_repo_online IMPLEMENTATION. iv_path = -file-path iv_filename = -file-filename ). -* remove it from the staging object, as the action is handled here -* CLEAR ls_file. -* ls_file-path = -file-path. -* ls_file-filename = -file-filename. -* io_stage->reset( ls_file ). -* -* CLEAR ls_file. -* ls_file-path = c_root. -* ls_file-filename = c_dot_abapgit. -* ls_file-data = mo_dot_abapgit->serialize( ). -* io_stage->add( ls_file ). + " remove it from the staging object, as the action is handled here + io_stage->reset( iv_path = -file-path + iv_filename = -file-filename ). + + io_stage->update_and_add_dot_abapgit( mo_dot_abapgit->serialize( ) ). + ENDLOOP. ENDMETHOD. @@ -16986,7 +16985,7 @@ CLASS lcl_repo IMPLEMENTATION. READ TABLE mt_remote ASSIGNING - WITH KEY path = c_root + WITH KEY path = c_root_dir filename = c_dot_abapgit. IF sy-subrc = 0. mo_dot_abapgit = lcl_dot_abapgit=>deserialize( -data ). @@ -17091,7 +17090,7 @@ CLASS lcl_repo IMPLEMENTATION. mo_dot_abapgit = lcl_dot_abapgit=>build_default( ms_data-master_language ). ENDIF. APPEND INITIAL LINE TO rt_files ASSIGNING . - -file-path = c_root. + -file-path = c_root_dir. -file-filename = c_dot_abapgit. -file-data = mo_dot_abapgit->serialize( ). @@ -19930,6 +19929,26 @@ CLASS lcl_stage IMPLEMENTATION. ENDMETHOD. "check_work_file_exists + METHOD update_and_add_dot_abapgit. + + FIELD-SYMBOLS LIKE LINE OF mt_workarea. + + READ TABLE mt_workarea ASSIGNING + WITH KEY file-path = c_root_dir + file-filename = c_dot_abapgit. + IF sy-subrc <> 0. + APPEND INITIAL LINE TO mt_workarea ASSIGNING . + -type = c_wftype-local. + -file-path = c_root_dir. + -file-filename = c_dot_abapgit. + ENDIF. + + -file-data = iv_data. + + add( iv_path = c_root_dir iv_filename = c_dot_abapgit ). + + ENDMETHOD. "update_and_add_dot_abapgit + ENDCLASS. CLASS lcl_gui_page_background DEFINITION FINAL INHERITING FROM lcl_gui_page_super. @@ -21213,8 +21232,9 @@ CLASS lcl_background IMPLEMENTATION. lo_stage = lcl_app=>repo_srv( )->get_stage( io_repo->get_key( ) ). LOOP AT ls_files-local ASSIGNING . - WRITE: / 'stage', -file-filename. -* lo_stage->add( -file ). + WRITE: / 'stage', -file-path, -file-filename. + lo_stage->add( iv_path = -file-path + iv_filename = -file-filename ). ENDLOOP. io_repo->push( is_comment = ls_comment @@ -23784,8 +23804,7 @@ CLASS lcl_gui_router IMPLEMENTATION. " Commit WHEN 'commit_post'. - MESSAGE 'POST' TYPE 'S'. -* commit_push( it_postdata ). + commit_push( it_postdata ). ev_state = gc_event_state-go_back_to_bookmark. WHEN 'commit_cancel'. ev_state = gc_event_state-go_back.