diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 9861d3d46..2f56f6e19 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -30,7 +30,7 @@ TYPES: ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY. TYPES: BEGIN OF ty_git_user, - name TYPE string, + name TYPE string, email TYPE string, END OF ty_git_user. @@ -140,6 +140,12 @@ TYPES: BEGIN OF ty_sotr, TYPES: ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY. +TYPES: + BEGIN OF ty_transport_to_branch, + branch_name TYPE string, + commit_text TYPE string, + END OF ty_transport_to_branch. + CONSTANTS: BEGIN OF gc_state, " https://git-scm.com/docs/git-status unchanged TYPE char1 VALUE '', added TYPE char1 VALUE 'A', @@ -183,60 +189,61 @@ CONSTANTS: gc_newline TYPE abap_char1 VALUE cl_abap_char_utilities=>newline. CONSTANTS: gc_english TYPE spras VALUE 'E'. -CONSTANTS: gc_root_dir TYPE string VALUE '/', - gc_dot_abapgit TYPE string VALUE '.abapgit.xml' ##NO_TEXT, +CONSTANTS: gc_root_dir TYPE string VALUE '/', + gc_dot_abapgit TYPE string VALUE '.abapgit.xml' ##NO_TEXT, gc_author_regex TYPE string VALUE '^([\w\s\.@\-_1-9]+) <(.*)> (\d{10}) .\d{4}$' ##NO_TEXT. CONSTANTS: BEGIN OF gc_action, - repo_clone TYPE string VALUE 'repo_clone', - repo_refresh TYPE string VALUE 'repo_refresh', - repo_remove TYPE string VALUE 'repo_remove', - repo_purge TYPE string VALUE 'repo_purge', - repo_newoffline TYPE string VALUE 'repo_newoffline', - repo_remote_attach TYPE string VALUE 'repo_remote_attach', - repo_remote_detach TYPE string VALUE 'repo_remote_detach', - repo_remote_change TYPE string VALUE 'repo_remote_change', - repo_refresh_checksums TYPE string VALUE 'repo_refresh_checksums', - repo_toggle_fav TYPE string VALUE 'repo_toggle_fav', + repo_clone TYPE string VALUE 'repo_clone', + repo_refresh TYPE string VALUE 'repo_refresh', + repo_remove TYPE string VALUE 'repo_remove', + repo_purge TYPE string VALUE 'repo_purge', + repo_newoffline TYPE string VALUE 'repo_newoffline', + repo_remote_attach TYPE string VALUE 'repo_remote_attach', + repo_remote_detach TYPE string VALUE 'repo_remote_detach', + repo_remote_change TYPE string VALUE 'repo_remote_change', + repo_refresh_checksums TYPE string VALUE 'repo_refresh_checksums', + repo_toggle_fav TYPE string VALUE 'repo_toggle_fav', + repo_transport_to_branch TYPE string VALUE 'repo_transport_to_branch', - abapgit_home TYPE string VALUE 'abapgit_home', - abapgit_wiki TYPE string VALUE 'abapgit_wiki', - abapgit_install TYPE string VALUE 'abapgit_install', - abapgit_install_pi TYPE string VALUE 'abapgit_install_pi', + abapgit_home TYPE string VALUE 'abapgit_home', + abapgit_wiki TYPE string VALUE 'abapgit_wiki', + abapgit_install TYPE string VALUE 'abapgit_install', + abapgit_install_pi TYPE string VALUE 'abapgit_install_pi', - zip_import TYPE string VALUE 'zip_import', - zip_export TYPE string VALUE 'zip_export', - zip_package TYPE string VALUE 'zip_package', - zip_transport TYPE string VALUE 'zip_transport', - zip_object TYPE string VALUE 'zip_object', + zip_import TYPE string VALUE 'zip_import', + zip_export TYPE string VALUE 'zip_export', + zip_package TYPE string VALUE 'zip_package', + zip_transport TYPE string VALUE 'zip_transport', + zip_object TYPE string VALUE 'zip_object', - git_pull TYPE string VALUE 'git_pull', - git_reset TYPE string VALUE 'git_reset', - git_branch_create TYPE string VALUE 'git_branch_create', - git_branch_switch TYPE string VALUE 'git_branch_switch', - git_branch_delete TYPE string VALUE 'git_branch_delete', - git_commit TYPE string VALUE 'git_commit', + git_pull TYPE string VALUE 'git_pull', + git_reset TYPE string VALUE 'git_reset', + git_branch_create TYPE string VALUE 'git_branch_create', + git_branch_switch TYPE string VALUE 'git_branch_switch', + git_branch_delete TYPE string VALUE 'git_branch_delete', + git_commit TYPE string VALUE 'git_commit', - db_delete TYPE string VALUE 'db_delete', - db_update TYPE string VALUE 'db_update', - db_display TYPE string VALUE 'db_display', - db_edit TYPE string VALUE 'db_edit', - bg_update TYPE string VALUE 'bg_update', + db_delete TYPE string VALUE 'db_delete', + db_update TYPE string VALUE 'db_update', + db_display TYPE string VALUE 'db_display', + db_edit TYPE string VALUE 'db_edit', + bg_update TYPE string VALUE 'bg_update', - go_main TYPE string VALUE 'go_main', - go_explore TYPE string VALUE 'go_explore', - go_db TYPE string VALUE 'go_db', - go_background TYPE string VALUE 'go_background', - go_background_run TYPE string VALUE 'go_background_run', - go_diff TYPE string VALUE 'go_diff', - go_stage TYPE string VALUE 'go_stage', - go_commit TYPE string VALUE 'go_commit', - go_branch_overview TYPE string VALUE 'go_branch_overview', - go_playground TYPE string VALUE 'go_playground', - go_debuginfo TYPE string VALUE 'go_debuginfo', - go_settings TYPE string VALUE 'go_settings', - go_tutorial TYPE string VALUE 'go_tutorial', + go_main TYPE string VALUE 'go_main', + go_explore TYPE string VALUE 'go_explore', + go_db TYPE string VALUE 'go_db', + go_background TYPE string VALUE 'go_background', + go_background_run TYPE string VALUE 'go_background_run', + go_diff TYPE string VALUE 'go_diff', + go_stage TYPE string VALUE 'go_stage', + go_commit TYPE string VALUE 'go_commit', + go_branch_overview TYPE string VALUE 'go_branch_overview', + go_playground TYPE string VALUE 'go_playground', + go_debuginfo TYPE string VALUE 'go_debuginfo', + go_settings TYPE string VALUE 'go_settings', + go_tutorial TYPE string VALUE 'go_tutorial', - jump TYPE string VALUE 'jump', - jump_pkg TYPE string VALUE 'jump_pkg', + jump TYPE string VALUE 'jump', + jump_pkg TYPE string VALUE 'jump_pkg', END OF gc_action. diff --git a/src/zabapgit_gui_router.prog.abap b/src/zabapgit_gui_router.prog.abap index 222cf4b2d..b716aae7e 100644 --- a/src/zabapgit_gui_router.prog.abap +++ b/src/zabapgit_gui_router.prog.abap @@ -64,10 +64,10 @@ CLASS lcl_gui_router IMPLEMENTATION. METHOD on_event. - DATA: lv_url TYPE string, - lv_key TYPE lcl_persistence_repo=>ty_repo-key, - ls_db TYPE lcl_persistence_db=>ty_content, - ls_item TYPE ty_item. + DATA: lv_url TYPE string, + lv_key TYPE lcl_persistence_repo=>ty_repo-key, + ls_db TYPE lcl_persistence_db=>ty_content, + ls_item TYPE ty_item. lv_key = iv_getdata. " TODO refactor lv_url = iv_getdata. " TODO refactor @@ -171,6 +171,9 @@ CLASS lcl_gui_router IMPLEMENTATION. WHEN gc_action-repo_toggle_fav. " Toggle repo as favorite lcl_services_repo=>toggle_favorite( lv_key ). ev_state = gc_event_state-re_render. + WHEN gc_action-repo_transport_to_branch. + lcl_services_repo=>transport_to_branch( iv_repository_key = lv_key ). + ev_state = gc_event_state-re_render. " ZIP services actions WHEN gc_action-zip_import. " Import repo from ZIP diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 6aef8f77c..b2908e606 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -557,7 +557,10 @@ CLASS lcl_object_oriented_class IMPLEMENTATION. APPEND cl_oo_classname_service=>get_prisec_name( lv_class_name ) TO rt_includes. APPEND cl_oo_classname_service=>get_classpool_name( lv_class_name ) TO rt_includes. APPEND cl_oo_classname_service=>get_ct_name( lv_class_name ) TO rt_includes. - APPEND cl_oo_classname_service=>get_cs_name( lv_class_name ) TO rt_includes. + +* skip the CS include, as it is sometimes generated on the fly instead of +* when the methods are changed +* APPEND cl_oo_classname_service=>get_cs_name( lv_class_name ) TO rt_includes. lt_methods = cl_oo_classname_service=>get_all_method_includes( lv_class_name ). LOOP AT lt_methods ASSIGNING . diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index 01df95df0..5f19b86ee 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -62,13 +62,24 @@ CLASS lcl_popups DEFINITION FINAL. RAISING lcx_exception, popup_to_inform IMPORTING - titlebar TYPE clike - text_message TYPE clike + titlebar TYPE clike + text_message TYPE clike RAISING lcx_exception, popup_to_create_package - EXPORTING es_package_data TYPE scompkdtln - ev_create TYPE boolean - RAISING lcx_exception. + EXPORTING es_package_data TYPE scompkdtln + ev_create TYPE boolean + RAISING lcx_exception, + popup_to_create_transp_branch + IMPORTING it_transport_headers TYPE trwbo_request_headers + it_transport_objects TYPE scts_tadir + RETURNING VALUE(rs_transport_branch) TYPE ty_transport_to_branch + RAISING lcx_exception + lcx_cancel, + popup_to_select_transports + RETURNING VALUE(rt_trkorr) TYPE trwbo_request_headers. + PRIVATE SECTION. + + ENDCLASS. CLASS lcl_popups IMPLEMENTATION. @@ -544,4 +555,92 @@ CLASS lcl_popups IMPLEMENTATION. ENDIF. ENDMETHOD. " popup_to_create_package + METHOD popup_to_select_transports. + DATA: lrs_trfunction TYPE trsel_trs_function, + lv_types TYPE string, + ls_ranges TYPE trsel_ts_ranges. + + " Fill all request types + lv_types = 'KWTCOEMPDRSXQFG'. + lrs_trfunction-sign = 'I'. + lrs_trfunction-option = 'EQ'. + WHILE lv_types NE space. + lrs_trfunction-low = lv_types(1). + APPEND lrs_trfunction TO ls_ranges-request_funcs. + SHIFT lv_types. + ENDWHILE. + + CALL FUNCTION 'TRINT_SELECT_REQUESTS' + EXPORTING + iv_username_pattern = sy-uname + iv_via_selscreen = 'X' + iv_complete_projects = '' + "is_popup = '' + iv_title = 'abapGit: Transport Request Selection' + IMPORTING + et_requests = rt_trkorr + CHANGING + cs_ranges = ls_ranges + EXCEPTIONS + action_aborted_by_user = 1 + OTHERS = 2. + IF sy-subrc <> 0. + RETURN. + ENDIF. + ENDMETHOD. + + METHOD popup_to_create_transp_branch. + DATA: lv_returncode TYPE c, + lt_fields TYPE TABLE OF sval, + lv_icon_ok TYPE icon-name, + lv_button_transport TYPE svalbutton-buttontext, + lv_icon_transport TYPE icon-name, + lv_transports_as_text TYPE string, + ls_transport_header LIKE LINE OF it_transport_headers. + + FIELD-SYMBOLS: LIKE LINE OF lt_fields. + + lv_transports_as_text = 'Transport(s)'. + LOOP AT it_transport_headers INTO ls_transport_header. + CONCATENATE lv_transports_as_text '_' ls_transport_header-trkorr INTO lv_transports_as_text. + ENDLOOP. + + " TAB FLD LABEL DEF ATTR + _add_dialog_fld 'TEXTL' 'LINE' 'Branch name' lv_transports_as_text ''. + _add_dialog_fld 'ABAPTXT255' 'LINE' 'Commit text' lv_transports_as_text ''. + + lv_icon_ok = icon_okay. + lv_button_transport = 'Transport(s)->Branch' ##NO_TEXT. + lv_icon_transport = icon_import_all_requests. + + CALL FUNCTION 'POPUP_GET_VALUES' + EXPORTING +* no_value_check = SPACE " Deactivates data type check + popup_title = 'Transport to new Branch' +* start_column = '5' " Start column of the dialog box +* start_row = '5' " Start line of the dialog box + IMPORTING + returncode = lv_returncode + TABLES + fields = lt_fields " Table fields, values and attributes + EXCEPTIONS + error_in_fields = 1 + OTHERS = 2. + IF sy-subrc <> 0. + lcx_exception=>raise( 'Error from POPUP_GET_VALUES' ). + ENDIF. + + IF lv_returncode = 'A'. + RAISE EXCEPTION TYPE lcx_cancel. + ENDIF. + + READ TABLE lt_fields INDEX 1 ASSIGNING . + ASSERT sy-subrc = 0. + rs_transport_branch-branch_name = -value. + + READ TABLE lt_fields INDEX 2 ASSIGNING . + ASSERT sy-subrc = 0. + rs_transport_branch-commit_text = -value. + ENDMETHOD. + ENDCLASS. diff --git a/src/zabapgit_services.prog.abap b/src/zabapgit_services.prog.abap index 801ffd6d7..257e84d62 100644 --- a/src/zabapgit_services.prog.abap +++ b/src/zabapgit_services.prog.abap @@ -2,8 +2,8 @@ *& Include ZABAPGIT_SERVICES *&---------------------------------------------------------------------* +INCLUDE zabapgit_services_git. INCLUDE zabapgit_services_repo. INCLUDE zabapgit_services_abapgit. -INCLUDE zabapgit_services_git. INCLUDE zabapgit_services_db. INCLUDE zabapgit_services_background. diff --git a/src/zabapgit_services_repo.prog.abap b/src/zabapgit_services_repo.prog.abap index 90f052424..0df11ba5e 100644 --- a/src/zabapgit_services_repo.prog.abap +++ b/src/zabapgit_services_repo.prog.abap @@ -47,6 +47,10 @@ CLASS lcl_services_repo DEFINITION FINAL. IMPORTING iv_package TYPE devclass RAISING lcx_exception. + CLASS-METHODS transport_to_branch + IMPORTING iv_repository_key TYPE lcl_persistence_db=>ty_value + RAISING lcx_exception lcx_cancel. + ENDCLASS. "lcl_services_repo CLASS lcl_services_repo IMPLEMENTATION. @@ -314,4 +318,31 @@ CLASS lcl_services_repo IMPLEMENTATION. ENDMETHOD. " open_se80. + + METHOD transport_to_branch. + DATA: + lo_repository TYPE REF TO lcl_repo_online, + lo_transport_to_branch TYPE REF TO lcl_transport_to_branch, + lt_transport_headers TYPE trwbo_request_headers, + lt_transport_objects TYPE scts_tadir, + ls_transport_to_branch TYPE ty_transport_to_branch. + + lo_repository ?= lcl_app=>repo_srv( )->get( iv_repository_key ). + + lt_transport_headers = lcl_popups=>popup_to_select_transports( ). + lt_transport_objects = lcl_transport=>to_tadir( lt_transport_headers ). + IF lt_transport_objects IS INITIAL. + lcx_exception=>raise( 'Canceled or List of objects is empty ' ). + ENDIF. + ls_transport_to_branch = lcl_popups=>popup_to_create_transp_branch( + it_transport_headers = lt_transport_headers + it_transport_objects = lt_transport_objects ). + + CREATE OBJECT lo_transport_to_branch. + lo_transport_to_branch->create( + io_repository = lo_repository + is_transport_to_branch = ls_transport_to_branch + it_transport_objects = lt_transport_objects ). + ENDMETHOD. + ENDCLASS. "lcl_services_repo diff --git a/src/zabapgit_transport.prog.abap b/src/zabapgit_transport.prog.abap index ba5c96d29..d8110175e 100644 --- a/src/zabapgit_transport.prog.abap +++ b/src/zabapgit_transport.prog.abap @@ -1,17 +1,17 @@ *&---------------------------------------------------------------------* *& Include ZABAPGIT_TRANSPORT *&---------------------------------------------------------------------* - CLASS lcl_transport DEFINITION FINAL. PUBLIC SECTION. CLASS-METHODS: - zip RAISING lcx_exception. + zip RAISING lcx_exception, + to_tadir IMPORTING it_transport_headers TYPE trwbo_request_headers + RETURNING VALUE(rt_tadir) TYPE scts_tadir + RAISING lcx_exception. PRIVATE SECTION. CLASS-METHODS: - popup - RETURNING VALUE(rt_trkorr) TYPE trwbo_request_headers, read_requests IMPORTING it_trkorr TYPE trwbo_request_headers RETURNING VALUE(rt_requests) TYPE trwbo_requests @@ -38,7 +38,7 @@ CLASS lcl_transport IMPLEMENTATION. lt_trkorr TYPE trwbo_request_headers. - lt_trkorr = popup( ). + lt_trkorr = lcl_popups=>popup_to_select_transports( ). IF lines( lt_trkorr ) = 0. RETURN. ENDIF. @@ -67,6 +67,21 @@ CLASS lcl_transport IMPLEMENTATION. ENDMETHOD. + METHOD to_tadir. + DATA: lt_requests TYPE trwbo_requests, + lt_tadir TYPE scts_tadir, + lv_package TYPE devclass, + lt_trkorr TYPE trwbo_request_headers. + + + IF lines( it_transport_headers ) = 0. + RETURN. + ENDIF. + + lt_requests = read_requests( it_transport_headers ). + rt_tadir = resolve( lt_requests ). + ENDMETHOD. + METHOD find_top_package. * assumption: all objects in transport share a common super package @@ -100,41 +115,6 @@ CLASS lcl_transport IMPLEMENTATION. ENDMETHOD. - METHOD popup. - DATA: lrs_trfunction TYPE trsel_trs_function, - lv_types TYPE string, - ls_ranges TYPE trsel_ts_ranges. - - " Fill all request types - lv_types = 'KWTCOEMPDRSXQFG'. - lrs_trfunction-sign = 'I'. - lrs_trfunction-option = 'EQ'. - WHILE lv_types NE space. - lrs_trfunction-low = lv_types(1). - APPEND lrs_trfunction TO ls_ranges-request_funcs. - SHIFT lv_types. - ENDWHILE. - - CALL FUNCTION 'TRINT_SELECT_REQUESTS' - EXPORTING - iv_username_pattern = sy-uname - iv_via_selscreen = 'X' - iv_complete_projects = '' -* is_popup = - iv_title = 'abapGit: Transport Request Selection' - IMPORTING - et_requests = rt_trkorr - CHANGING - cs_ranges = ls_ranges - EXCEPTIONS - action_aborted_by_user = 1 - OTHERS = 2. - IF sy-subrc <> 0. - RETURN. - ENDIF. - - ENDMETHOD. - METHOD read_requests. DATA lt_requests LIKE rt_requests. @@ -203,5 +183,142 @@ CLASS lcl_transport IMPLEMENTATION. DELETE ADJACENT DUPLICATES FROM rt_tadir COMPARING object obj_name. DELETE rt_tadir WHERE table_line IS INITIAL. ENDMETHOD. - +ENDCLASS. + +CLASS lcl_transport_to_branch DEFINITION. + PUBLIC SECTION. + METHODS: + create + IMPORTING io_repository TYPE REF TO lcl_repo_online + is_transport_to_branch TYPE ty_transport_to_branch + it_transport_objects TYPE scts_tadir + RAISING lcx_exception. + PRIVATE SECTION. + + METHODS create_new_branch + IMPORTING + io_repository TYPE REF TO lcl_repo_online + iv_branch_name TYPE string + RAISING + lcx_exception. + METHODS generate_commit_message + IMPORTING + is_transport_to_branch TYPE ty_transport_to_branch + RETURNING + VALUE(rs_comment) TYPE ty_comment. + METHODS stage_transport_objects + IMPORTING + it_transport_objects TYPE scts_tadir + io_stage TYPE REF TO lcl_stage + is_stage_objects TYPE ty_stage_files + it_object_statuses TYPE ty_results_tt + RAISING + lcx_exception. +ENDCLASS. + +CLASS lcl_transport_to_branch IMPLEMENTATION. + + METHOD create. + DATA: + ls_transport_object TYPE LINE OF scts_tadir, + lt_items TYPE ty_files_item_tt, + ls_local_file TYPE LINE OF ty_files_item_tt, + ls_remote_file TYPE LINE OF ty_files_tt, + ls_item TYPE string, + lv_branch_name TYPE string, + ls_comment TYPE ty_comment, + lo_stage TYPE REF TO lcl_stage, + ls_stage_objects TYPE ty_stage_files, + lt_object_statuses TYPE ty_results_tt, + ls_object_status TYPE LINE OF ty_results_tt. + + lv_branch_name = lcl_git_branch_list=>complete_heads_branch_name( + lcl_git_branch_list=>normalize_branch_name( is_transport_to_branch-branch_name ) ). + + create_new_branch( + io_repository = io_repository + iv_branch_name = lv_branch_name ). + + CREATE OBJECT lo_stage + EXPORTING + iv_branch_name = lv_branch_name + iv_branch_sha1 = io_repository->get_sha1_remote( ). + + ls_stage_objects = lcl_stage_logic=>get( io_repository ). + + lt_object_statuses = io_repository->status( ). + + stage_transport_objects( + it_transport_objects = it_transport_objects + io_stage = lo_stage + is_stage_objects = ls_stage_objects + it_object_statuses = lt_object_statuses ). + + ls_comment = generate_commit_message( is_transport_to_branch ). + + io_repository->push( is_comment = ls_comment + io_stage = lo_stage ). + ENDMETHOD. + + METHOD create_new_branch. + ASSERT iv_branch_name CP 'refs/heads/+*'. + TRY. + lcl_git_porcelain=>create_branch( + io_repo = io_repository + iv_name = iv_branch_name + iv_from = io_repository->get_sha1_local( ) ). + + io_repository->set_branch_name( iv_branch_name ). + CATCH lcx_exception. + lcx_exception=>raise( 'Error when creating new branch'). + ENDTRY. + ENDMETHOD. + + METHOD generate_commit_message. + rs_comment-committer-name = sy-uname. + rs_comment-committer-email = |{ rs_comment-committer-name }@localhost|. + rs_comment-comment = is_transport_to_branch-commit_text. + ENDMETHOD. + + + METHOD stage_transport_objects. + + DATA ls_transport_object TYPE tadir. + DATA ls_local_file TYPE ty_file_item. + DATA ls_object_status TYPE ty_result. + + LOOP AT it_transport_objects INTO ls_transport_object. + READ TABLE it_object_statuses INTO ls_object_status + WITH KEY obj_name = ls_transport_object-obj_name + obj_type = ls_transport_object-object. + IF sy-subrc <> 0. + lcx_exception=>raise( |Object { ls_transport_object-obj_name } not found in the local repository files | ). + ENDIF. + + CASE ls_object_status-lstate. + WHEN gc_state-added OR gc_state-modified. + ASSERT ls_transport_object-delflag = abap_false. + + READ TABLE is_stage_objects-local + INTO ls_local_file + WITH KEY item-obj_name = ls_transport_object-obj_name + item-obj_type = ls_transport_object-object. + IF sy-subrc <> 0. + lcx_exception=>raise( |Object { ls_transport_object-obj_name } not found in the local repository files | ). + ENDIF. + + io_stage->add( + iv_path = ls_local_file-file-path + iv_filename = ls_local_file-file-filename + iv_data = ls_local_file-file-data ). + WHEN gc_state-deleted. + ASSERT ls_transport_object-delflag = abap_true. + io_stage->rm( + iv_path = ls_object_status-path + iv_filename = ls_object_status-filename ). + WHEN OTHERS. + ASSERT 0 = 1. "Unexpected state + ENDCASE. + ENDLOOP. + ENDMETHOD. ENDCLASS. diff --git a/src/zabapgit_view_repo.prog.abap b/src/zabapgit_view_repo.prog.abap index f61e2dea4..ba414eb0e 100644 --- a/src/zabapgit_view_repo.prog.abap +++ b/src/zabapgit_view_repo.prog.abap @@ -309,6 +309,8 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. iv_act = |{ gc_action-repo_remote_detach }?{ lv_key }| ). lo_tb_advanced->add( iv_txt = 'Force stage' iv_act = |{ gc_action-go_stage }?{ lv_key }| ). + lo_tb_advanced->add( iv_txt = 'Transport to Branch' + iv_act = |{ gc_action-repo_transport_to_branch }?{ lv_key }| ). ELSE. lo_tb_advanced->add( iv_txt = 'Make on-line' iv_act = |{ gc_action-repo_remote_attach }?{ lv_key }| ).