mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00

I finally found some time to tackle #1284 (from 2018). This change removes the popups that ask from confirmation of potential data loss when changing a table (or structure contained in a table) from the deserialize process to the preceeding check phase. The table comparison is now done upfront. If you select a table in the pull dialog and the changes could lead to data loss, for example if a field is removed, then a second popup will be shown. You will have to confirm overwriting the table. If not, the table remains unchanged. Closes #1284 It should fix #6746 as well since the check does not depend on the local/remote state anymore (@larshp). PS: Although this introduces a new popup, the change moves it to the UI layer. This paves the way for refactoring the pull process into a HTML page. This page will show the results of the deserialize check with checkboxes. You select objects to process and confirm to trigger the import.
423 lines
17 KiB
ABAP
423 lines
17 KiB
ABAP
INTERFACE zif_abapgit_definitions
|
|
PUBLIC .
|
|
|
|
TYPES:
|
|
ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY .
|
|
TYPES:
|
|
BEGIN OF ty_item_signature,
|
|
obj_type TYPE tadir-object,
|
|
obj_name TYPE tadir-obj_name,
|
|
devclass TYPE devclass,
|
|
END OF ty_item_signature .
|
|
TYPES:
|
|
BEGIN OF ty_obj_namespace,
|
|
namespace TYPE trnspace-namespace,
|
|
obj_without_namespace TYPE tadir-obj_name,
|
|
END OF ty_obj_namespace.
|
|
TYPES:
|
|
BEGIN OF ty_item.
|
|
INCLUDE TYPE ty_item_signature.
|
|
TYPES:
|
|
srcsystem TYPE tadir-srcsystem,
|
|
origlang TYPE tadir-masterlang,
|
|
inactive TYPE abap_bool,
|
|
abap_language_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version,
|
|
END OF ty_item .
|
|
TYPES:
|
|
ty_items_tt TYPE STANDARD TABLE OF ty_item WITH DEFAULT KEY .
|
|
TYPES:
|
|
ty_items_ts TYPE SORTED TABLE OF ty_item WITH UNIQUE KEY obj_type obj_name .
|
|
TYPES:
|
|
BEGIN OF ty_file_item,
|
|
file TYPE zif_abapgit_git_definitions=>ty_file,
|
|
item TYPE ty_item,
|
|
END OF ty_file_item .
|
|
TYPES:
|
|
ty_files_item_tt TYPE STANDARD TABLE OF ty_file_item WITH DEFAULT KEY .
|
|
TYPES:
|
|
ty_files_item_by_file_tt TYPE SORTED TABLE OF ty_file_item WITH UNIQUE KEY file-path file-filename.
|
|
TYPES:
|
|
ty_yes_no TYPE c LENGTH 1,
|
|
ty_yes_no_partial TYPE c LENGTH 1.
|
|
TYPES:
|
|
BEGIN OF ty_overwrite.
|
|
INCLUDE TYPE ty_item.
|
|
TYPES:
|
|
state TYPE c LENGTH 2,
|
|
action TYPE i,
|
|
icon TYPE icon_d,
|
|
text TYPE string,
|
|
decision TYPE ty_yes_no,
|
|
END OF ty_overwrite .
|
|
TYPES:
|
|
ty_overwrite_tt TYPE STANDARD TABLE OF ty_overwrite WITH DEFAULT KEY
|
|
WITH UNIQUE HASHED KEY object_type_and_name
|
|
COMPONENTS obj_type obj_name .
|
|
TYPES:
|
|
BEGIN OF ty_requirements,
|
|
met TYPE ty_yes_no,
|
|
decision TYPE ty_yes_no,
|
|
END OF ty_requirements .
|
|
TYPES:
|
|
BEGIN OF ty_dependencies,
|
|
met TYPE ty_yes_no,
|
|
decision TYPE ty_yes_no,
|
|
END OF ty_dependencies .
|
|
TYPES:
|
|
BEGIN OF ty_transport_type,
|
|
request TYPE trfunction,
|
|
task TYPE trfunction,
|
|
END OF ty_transport_type .
|
|
TYPES:
|
|
BEGIN OF ty_transport,
|
|
required TYPE abap_bool,
|
|
transport TYPE trkorr,
|
|
type TYPE ty_transport_type,
|
|
END OF ty_transport .
|
|
TYPES:
|
|
BEGIN OF ty_deserialize_checks,
|
|
overwrite TYPE ty_overwrite_tt,
|
|
warning_package TYPE ty_overwrite_tt,
|
|
data_loss TYPE ty_overwrite_tt,
|
|
requirements TYPE ty_requirements,
|
|
dependencies TYPE ty_dependencies,
|
|
transport TYPE ty_transport,
|
|
customizing TYPE ty_transport,
|
|
END OF ty_deserialize_checks .
|
|
TYPES:
|
|
BEGIN OF ty_delete_checks,
|
|
transport TYPE ty_transport,
|
|
END OF ty_delete_checks .
|
|
TYPES:
|
|
BEGIN OF ty_metadata,
|
|
class TYPE string,
|
|
version TYPE string,
|
|
END OF ty_metadata .
|
|
TYPES:
|
|
BEGIN OF ty_repo_file,
|
|
path TYPE string,
|
|
filename TYPE string,
|
|
is_changed TYPE abap_bool,
|
|
rstate TYPE zif_abapgit_git_definitions=>ty_item_state,
|
|
lstate TYPE zif_abapgit_git_definitions=>ty_item_state,
|
|
END OF ty_repo_file .
|
|
TYPES:
|
|
ty_repo_file_tt TYPE STANDARD TABLE OF ty_repo_file WITH DEFAULT KEY .
|
|
TYPES:
|
|
BEGIN OF ty_object,
|
|
sha1 TYPE zif_abapgit_git_definitions=>ty_sha1,
|
|
type TYPE zif_abapgit_git_definitions=>ty_type,
|
|
data TYPE xstring,
|
|
adler32 TYPE zif_abapgit_git_definitions=>ty_adler32,
|
|
index TYPE i,
|
|
END OF ty_object .
|
|
TYPES:
|
|
ty_objects_tt TYPE STANDARD TABLE OF ty_object WITH DEFAULT KEY
|
|
WITH NON-UNIQUE SORTED KEY sha COMPONENTS sha1
|
|
WITH NON-UNIQUE SORTED KEY type COMPONENTS type sha1 .
|
|
TYPES:
|
|
BEGIN OF ty_tadir,
|
|
pgmid TYPE tadir-pgmid,
|
|
object TYPE tadir-object,
|
|
obj_name TYPE tadir-obj_name,
|
|
devclass TYPE tadir-devclass,
|
|
korrnum TYPE tadir-korrnum, " used by ZCL_ABAPGIT_DEPENDENCIES->RESOLVE
|
|
delflag TYPE tadir-delflag,
|
|
genflag TYPE tadir-genflag,
|
|
path TYPE string,
|
|
srcsystem TYPE tadir-srcsystem,
|
|
masterlang TYPE tadir-masterlang,
|
|
END OF ty_tadir .
|
|
TYPES:
|
|
ty_tadir_tt TYPE STANDARD TABLE OF ty_tadir WITH DEFAULT KEY .
|
|
TYPES:
|
|
BEGIN OF ty_result,
|
|
obj_type TYPE tadir-object,
|
|
obj_name TYPE tadir-obj_name,
|
|
inactive TYPE abap_bool,
|
|
path TYPE string,
|
|
filename TYPE string,
|
|
package TYPE devclass,
|
|
match TYPE abap_bool,
|
|
lstate TYPE zif_abapgit_git_definitions=>ty_item_state,
|
|
rstate TYPE zif_abapgit_git_definitions=>ty_item_state,
|
|
packmove TYPE abap_bool,
|
|
srcsystem TYPE tadir-srcsystem,
|
|
origlang TYPE tadir-masterlang,
|
|
END OF ty_result .
|
|
TYPES:
|
|
ty_results_tt TYPE STANDARD TABLE OF ty_result WITH DEFAULT KEY
|
|
WITH NON-UNIQUE SORTED KEY sec_key
|
|
COMPONENTS obj_type obj_name.
|
|
TYPES:
|
|
ty_results_ts_path TYPE HASHED TABLE OF ty_result WITH UNIQUE KEY path filename .
|
|
TYPES:
|
|
BEGIN OF ty_stage_files,
|
|
local TYPE ty_files_item_tt,
|
|
remote TYPE zif_abapgit_git_definitions=>ty_files_tt,
|
|
status TYPE ty_results_ts_path,
|
|
END OF ty_stage_files .
|
|
TYPES:
|
|
BEGIN OF ty_tpool.
|
|
INCLUDE TYPE textpool.
|
|
TYPES: split TYPE c LENGTH 8.
|
|
TYPES: END OF ty_tpool .
|
|
TYPES:
|
|
ty_tpool_tt TYPE STANDARD TABLE OF ty_tpool WITH DEFAULT KEY .
|
|
|
|
TYPES:
|
|
BEGIN OF ty_transport_to_branch,
|
|
branch_name TYPE string,
|
|
commit_text TYPE string,
|
|
END OF ty_transport_to_branch .
|
|
|
|
TYPES:
|
|
BEGIN OF ty_diff,
|
|
patch_flag TYPE abap_bool,
|
|
new_num TYPE c LENGTH 6,
|
|
new TYPE string,
|
|
result TYPE c LENGTH 1,
|
|
old_num TYPE c LENGTH 6,
|
|
old TYPE string,
|
|
short TYPE abap_bool,
|
|
beacon TYPE i,
|
|
END OF ty_diff .
|
|
TYPES:
|
|
ty_diffs_tt TYPE STANDARD TABLE OF ty_diff
|
|
WITH DEFAULT KEY
|
|
WITH NON-UNIQUE SORTED KEY new_num COMPONENTS new_num
|
|
WITH NON-UNIQUE SORTED KEY old_num COMPONENTS old_num.
|
|
TYPES:
|
|
BEGIN OF ty_count,
|
|
insert TYPE i,
|
|
delete TYPE i,
|
|
update TYPE i,
|
|
END OF ty_count .
|
|
TYPES:
|
|
BEGIN OF ty_ancestor,
|
|
commit TYPE zif_abapgit_git_definitions=>ty_sha1,
|
|
tree TYPE zif_abapgit_git_definitions=>ty_sha1,
|
|
time TYPE string,
|
|
body TYPE string,
|
|
END OF ty_ancestor .
|
|
TYPES:
|
|
BEGIN OF ty_repo_item,
|
|
obj_type TYPE tadir-object,
|
|
obj_name TYPE tadir-obj_name,
|
|
inactive TYPE abap_bool,
|
|
sortkey TYPE i,
|
|
path TYPE string,
|
|
is_dir TYPE abap_bool,
|
|
changes TYPE i,
|
|
lstate TYPE zif_abapgit_git_definitions=>ty_item_state,
|
|
rstate TYPE zif_abapgit_git_definitions=>ty_item_state,
|
|
files TYPE ty_repo_file_tt,
|
|
changed_by TYPE syuname,
|
|
transport TYPE trkorr,
|
|
packmove TYPE abap_bool,
|
|
srcsystem TYPE tadir-srcsystem,
|
|
origlang TYPE tadir-masterlang,
|
|
END OF ty_repo_item .
|
|
TYPES:
|
|
ty_repo_item_tt TYPE STANDARD TABLE OF ty_repo_item WITH DEFAULT KEY .
|
|
TYPES:
|
|
BEGIN OF ty_s_user_settings,
|
|
max_lines TYPE i,
|
|
adt_jump_enabled TYPE abap_bool,
|
|
show_default_repo TYPE abap_bool,
|
|
link_hints_enabled TYPE abap_bool,
|
|
link_hint_key TYPE c LENGTH 1,
|
|
parallel_proc_disabled TYPE abap_bool,
|
|
icon_scaling TYPE c LENGTH 1,
|
|
ui_theme TYPE string,
|
|
hide_sapgui_hint TYPE abap_bool,
|
|
activate_wo_popup TYPE abap_bool,
|
|
label_colors TYPE string,
|
|
default_git_uname TYPE string,
|
|
default_git_email TYPE string,
|
|
END OF ty_s_user_settings .
|
|
TYPES:
|
|
BEGIN OF ty_list_settings,
|
|
filter TYPE string,
|
|
only_favorites TYPE abap_bool,
|
|
show_details TYPE abap_bool,
|
|
order_by TYPE string,
|
|
order_descending TYPE abap_bool,
|
|
END OF ty_list_settings.
|
|
TYPES:
|
|
ty_dokil_tt TYPE STANDARD TABLE OF dokil
|
|
WITH NON-UNIQUE DEFAULT KEY .
|
|
TYPES:
|
|
BEGIN OF ty_col_spec,
|
|
tech_name TYPE string,
|
|
display_name TYPE string,
|
|
css_class TYPE string,
|
|
add_tz TYPE abap_bool,
|
|
title TYPE string,
|
|
allow_order_by TYPE abap_bool,
|
|
END OF ty_col_spec,
|
|
ty_col_spec_tt TYPE STANDARD TABLE OF ty_col_spec
|
|
WITH NON-UNIQUE KEY tech_name.
|
|
TYPES:
|
|
ty_proxy_bypass_url TYPE c LENGTH 255,
|
|
ty_range_proxy_bypass_url TYPE RANGE OF ty_proxy_bypass_url.
|
|
TYPES:
|
|
BEGIN OF ty_version,
|
|
major TYPE i,
|
|
minor TYPE i,
|
|
patch TYPE i,
|
|
prerelase TYPE string,
|
|
prerelase_patch TYPE i,
|
|
END OF ty_version.
|
|
TYPES ty_sci_result TYPE c LENGTH 1.
|
|
CONSTANTS:
|
|
BEGIN OF c_sci_result,
|
|
no_run TYPE ty_sci_result VALUE '',
|
|
failed TYPE ty_sci_result VALUE 'F',
|
|
warning TYPE ty_sci_result VALUE 'W',
|
|
passed TYPE ty_sci_result VALUE 'P',
|
|
END OF c_sci_result.
|
|
CONSTANTS:
|
|
BEGIN OF c_diff,
|
|
unchanged TYPE c LENGTH 1 VALUE ' ',
|
|
insert TYPE c LENGTH 1 VALUE 'I',
|
|
delete TYPE c LENGTH 1 VALUE 'D',
|
|
update TYPE c LENGTH 1 VALUE 'U',
|
|
END OF c_diff .
|
|
CONSTANTS:
|
|
BEGIN OF c_state, " https://git-scm.com/docs/git-status
|
|
unchanged TYPE zif_abapgit_git_definitions=>ty_item_state VALUE '',
|
|
added TYPE zif_abapgit_git_definitions=>ty_item_state VALUE 'A',
|
|
modified TYPE zif_abapgit_git_definitions=>ty_item_state VALUE 'M',
|
|
deleted TYPE zif_abapgit_git_definitions=>ty_item_state VALUE 'D',
|
|
mixed TYPE zif_abapgit_git_definitions=>ty_item_state VALUE '*',
|
|
END OF c_state .
|
|
CONSTANTS c_english TYPE spras VALUE 'E' ##NO_TEXT.
|
|
CONSTANTS c_root_dir TYPE string VALUE '/' ##NO_TEXT.
|
|
CONSTANTS c_dot_abapgit TYPE string VALUE '.abapgit.xml' ##NO_TEXT.
|
|
CONSTANTS c_author_regex TYPE string VALUE '^(.+) <(.*)> (\d{10})\s?.\d{4}$' ##NO_TEXT.
|
|
CONSTANTS:
|
|
BEGIN OF c_action,
|
|
abapgit_home TYPE string VALUE 'abapgit_home',
|
|
bg_update TYPE string VALUE 'bg_update',
|
|
change_order_by TYPE string VALUE 'change_order_by',
|
|
changelog TYPE string VALUE 'changelog',
|
|
clipboard TYPE string VALUE 'clipboard',
|
|
db_display TYPE string VALUE 'db_display',
|
|
db_edit TYPE string VALUE 'db_edit',
|
|
direction TYPE string VALUE 'direction',
|
|
documentation TYPE string VALUE 'documentation',
|
|
flow TYPE string VALUE 'flow',
|
|
git_branch_create TYPE string VALUE 'git_branch_create',
|
|
git_branch_delete TYPE string VALUE 'git_branch_delete',
|
|
git_branch_merge TYPE string VALUE 'git_branch_merge',
|
|
git_branch_switch TYPE string VALUE 'git_branch_switch',
|
|
git_commit TYPE string VALUE 'git_commit',
|
|
git_pull TYPE string VALUE 'git_pull',
|
|
git_tag_create TYPE string VALUE 'git_tag_create',
|
|
git_tag_delete TYPE string VALUE 'git_tag_delete',
|
|
git_tag_switch TYPE string VALUE 'git_tag_switch',
|
|
go_back TYPE string VALUE 'go_back',
|
|
go_background TYPE string VALUE 'go_background',
|
|
go_background_run TYPE string VALUE 'go_background_run',
|
|
go_commit TYPE string VALUE 'go_commit',
|
|
go_db TYPE string VALUE 'go_db',
|
|
go_debuginfo TYPE string VALUE 'go_debuginfo',
|
|
go_explore TYPE string VALUE 'go_explore',
|
|
go_file_diff TYPE string VALUE 'go_file_diff',
|
|
go_home TYPE string VALUE 'go_home',
|
|
go_patch TYPE string VALUE 'go_patch',
|
|
go_repo TYPE string VALUE 'go_repo',
|
|
go_repo_diff TYPE string VALUE 'go_repo_diff',
|
|
go_settings TYPE string VALUE 'go_settings',
|
|
go_settings_personal TYPE string VALUE 'go_settings_personal',
|
|
go_stage TYPE string VALUE 'go_stage',
|
|
go_stage_transport TYPE string VALUE 'go_stage_transport',
|
|
go_tutorial TYPE string VALUE 'go_tutorial',
|
|
goto_message TYPE string VALUE 'goto_message',
|
|
goto_source TYPE string VALUE 'goto_source',
|
|
homepage TYPE string VALUE 'homepage',
|
|
ie_devtools TYPE string VALUE 'ie_devtools',
|
|
jump TYPE string VALUE 'jump',
|
|
jump_transaction TYPE string VALUE 'jump_transaction',
|
|
jump_transport TYPE string VALUE 'jump_transport',
|
|
jump_user TYPE string VALUE 'jump_user',
|
|
performance_test TYPE string VALUE 'performance_test',
|
|
repo_activate_objects TYPE string VALUE 'repo_activate_objects',
|
|
repo_add_all_obj_to_trans_req TYPE string VALUE 'repo_add_all_obj_to_trans_req',
|
|
repo_background TYPE string VALUE 'repo_background',
|
|
repo_change_package TYPE string VALUE 'repo_change_package',
|
|
repo_code_inspector TYPE string VALUE 'repo_code_inspector',
|
|
repo_delete_objects TYPE string VALUE 'repo_delete_objects',
|
|
repo_infos TYPE string VALUE 'repo_infos',
|
|
repo_local_settings TYPE string VALUE 'repo_local_settings',
|
|
repo_log TYPE string VALUE 'repo_log',
|
|
repo_newoffline TYPE string VALUE 'repo_newoffline',
|
|
repo_newonline TYPE string VALUE 'repo_newonline',
|
|
repo_open_in_master_lang TYPE string VALUE 'repo_open_in_master_lang',
|
|
repo_purge TYPE string VALUE 'repo_purge',
|
|
repo_refresh TYPE string VALUE 'repo_refresh',
|
|
repo_refresh_checksums TYPE string VALUE 'repo_refresh_checksums',
|
|
repo_remote_settings TYPE string VALUE 'repo_remote_settings',
|
|
repo_remove TYPE string VALUE 'repo_remove',
|
|
repo_settings TYPE string VALUE 'repo_settings',
|
|
repo_syntax_check TYPE string VALUE 'repo_syntax_check',
|
|
repo_toggle_fav TYPE string VALUE 'repo_toggle_fav',
|
|
repo_transport_to_branch TYPE string VALUE 'repo_transport_to_branch',
|
|
rfc_compare TYPE string VALUE 'rfc_compare',
|
|
show_callstack TYPE string VALUE 'show_callstack',
|
|
show_hotkeys TYPE string VALUE 'show_hotkeys',
|
|
sponsor TYPE string VALUE 'sponsor',
|
|
toggle_favorites TYPE string VALUE 'toggle_favorites',
|
|
url TYPE string VALUE 'url',
|
|
where_used TYPE string VALUE 'where_used',
|
|
zip_export TYPE string VALUE 'zip_export',
|
|
zip_export_transport TYPE string VALUE 'zip_export_transport',
|
|
zip_import TYPE string VALUE 'zip_import',
|
|
zip_object TYPE string VALUE 'zip_object',
|
|
zip_package TYPE string VALUE 'zip_package',
|
|
zip_transport TYPE string VALUE 'zip_transport',
|
|
END OF c_action.
|
|
CONSTANTS c_spagpa_param_repo_key TYPE c LENGTH 20 VALUE 'REPO_KEY' ##NO_TEXT.
|
|
CONSTANTS c_spagpa_param_package TYPE c LENGTH 20 VALUE 'PACKAGE' ##NO_TEXT.
|
|
CONSTANTS c_yes TYPE ty_yes_no VALUE 'Y'.
|
|
CONSTANTS c_no TYPE ty_yes_no VALUE 'N'.
|
|
CONSTANTS c_partial TYPE ty_yes_no_partial VALUE 'P'.
|
|
|
|
TYPES:
|
|
ty_method TYPE c LENGTH 1 .
|
|
TYPES:
|
|
BEGIN OF ty_stage,
|
|
file TYPE zif_abapgit_git_definitions=>ty_file,
|
|
method TYPE ty_method,
|
|
status TYPE ty_result,
|
|
END OF ty_stage .
|
|
TYPES:
|
|
ty_stage_tt TYPE SORTED TABLE OF ty_stage
|
|
WITH UNIQUE KEY file-path file-filename .
|
|
|
|
CONSTANTS:
|
|
BEGIN OF c_method,
|
|
add TYPE ty_method VALUE 'A',
|
|
rm TYPE ty_method VALUE 'R',
|
|
ignore TYPE ty_method VALUE 'I',
|
|
skip TYPE ty_method VALUE '?',
|
|
END OF c_method .
|
|
|
|
TYPES:
|
|
ty_sap_langu_tab TYPE STANDARD TABLE OF langu WITH DEFAULT KEY.
|
|
TYPES:
|
|
ty_languages TYPE STANDARD TABLE OF laiso WITH DEFAULT KEY.
|
|
TYPES:
|
|
BEGIN OF ty_i18n_params,
|
|
main_language TYPE sy-langu,
|
|
main_language_only TYPE abap_bool,
|
|
translation_languages TYPE ty_languages,
|
|
use_lxe TYPE abap_bool,
|
|
END OF ty_i18n_params .
|
|
TYPES ty_trrngtrkor_tt TYPE RANGE OF trkorr.
|
|
|
|
CONSTANTS c_multiple_transports TYPE trkorr VALUE 'MULTIPLE'.
|
|
|
|
ENDINTERFACE.
|