diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index 7232279af..a72153586 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -98,20 +98,21 @@ CLASS lcl_persistence_repo DEFINITION FINAL. TYPES: ty_local_checksum_tt TYPE STANDARD TABLE OF ty_local_checksum WITH DEFAULT KEY. TYPES: BEGIN OF ty_repo_xml, - url TYPE string, - branch_name TYPE string, - sha1 TYPE ty_sha1, - package TYPE devclass, - offline TYPE sap_bool, - local_checksums TYPE ty_local_checksum_tt, - master_language TYPE spras, - head_branch TYPE string, " HEAD symref of the repo, master branch - write_protect TYPE sap_bool, " Deny destructive ops: pull, switch branch ... + url TYPE string, + branch_name TYPE string, + sha1 TYPE ty_sha1, + package TYPE devclass, + offline TYPE sap_bool, + local_checksums TYPE ty_local_checksum_tt, + master_language TYPE spras, + head_branch TYPE string, " HEAD symref of the repo, master branch + write_protect TYPE sap_bool, " Deny destructive ops: pull, switch branch ... + ignore_subpackages TYPE sap_bool, END OF ty_repo_xml. TYPES: BEGIN OF ty_repo, key TYPE lcl_persistence_db=>ty_value. - INCLUDE TYPE ty_repo_xml. + INCLUDE TYPE ty_repo_xml. TYPES: END OF ty_repo. TYPES: tt_repo TYPE STANDARD TABLE OF ty_repo WITH DEFAULT KEY. TYPES: tt_repo_keys TYPE STANDARD TABLE OF ty_repo-key WITH DEFAULT KEY. @@ -222,7 +223,7 @@ CLASS lcl_persistence_background DEFINITION FINAL. TYPES: BEGIN OF ty_background, key TYPE lcl_persistence_db=>ty_value. - INCLUDE TYPE ty_xml. + INCLUDE TYPE ty_xml. TYPES: END OF ty_background. TYPES: tt_background TYPE STANDARD TABLE OF ty_background WITH DEFAULT KEY. diff --git a/src/zabapgit_repo.prog.abap b/src/zabapgit_repo.prog.abap index 8353d11d9..a64183b00 100644 --- a/src/zabapgit_repo.prog.abap +++ b/src/zabapgit_repo.prog.abap @@ -34,6 +34,8 @@ CLASS lcl_repo DEFINITION ABSTRACT FRIENDS lcl_repo_srv. RETURNING VALUE(rv_language) TYPE spras, is_write_protected RETURNING VALUE(rv_yes) TYPE sap_bool, + ignore_subpackages + RETURNING VALUE(rv_yes) TYPE sap_bool, delete RAISING lcx_exception, get_dot_abapgit diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index 36b8f7cce..292f18924 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -508,8 +508,8 @@ CLASS lcl_repo IMPLEMENTATION. lt_cache TYPE SORTED TABLE OF ty_file_item WITH NON-UNIQUE KEY item. - DATA: lt_filter TYPE SORTED TABLE OF tadir - WITH NON-UNIQUE KEY object obj_name, + DATA: lt_filter TYPE SORTED TABLE OF tadir + WITH NON-UNIQUE KEY object obj_name, lv_filter_exist TYPE abap_bool. FIELD-SYMBOLS: LIKE LINE OF lt_files, @@ -535,7 +535,9 @@ CLASS lcl_repo IMPLEMENTATION. iv_data = -file-data ). lt_cache = mt_local. - lt_tadir = lcl_tadir=>read( get_package( ) ). + lt_tadir = lcl_tadir=>read( + iv_package = get_package( ) + iv_ignore_subpackages = ignore_subpackages( ) ). lt_filter = it_filter. lv_filter_exist = boolc( lines( lt_filter ) > 0 ) . @@ -655,17 +657,22 @@ CLASS lcl_repo IMPLEMENTATION. rv_yes = ms_data-write_protect. ENDMETHOD. "is_write_protected + METHOD ignore_subpackages. + rv_yes = ms_data-ignore_subpackages. + ENDMETHOD. + METHOD rebuild_local_checksums. "LOCAL (BASE) - DATA: lt_local TYPE ty_files_item_tt, - ls_last_item TYPE ty_item, - lt_checksums TYPE lcl_persistence_repo=>ty_local_checksum_tt. + DATA: lt_local TYPE ty_files_item_tt, + ls_last_item TYPE ty_item, + lt_checksums TYPE lcl_persistence_repo=>ty_local_checksum_tt. FIELD-SYMBOLS: LIKE LINE OF lt_checksums, LIKE LINE OF -files, LIKE LINE OF lt_local. - lt_local = get_files_local( ). + + lt_local = get_files_local( ). DELETE lt_local " Remove non-code related files except .abapgit WHERE item IS INITIAL diff --git a/src/zabapgit_tadir.prog.abap b/src/zabapgit_tadir.prog.abap index 0dff031d8..660c64914 100644 --- a/src/zabapgit_tadir.prog.abap +++ b/src/zabapgit_tadir.prog.abap @@ -12,8 +12,9 @@ CLASS lcl_tadir DEFINITION FINAL. PUBLIC SECTION. CLASS-METHODS: read - IMPORTING iv_package TYPE tadir-devclass - RETURNING VALUE(rt_tadir) TYPE ty_tadir_tt + IMPORTING iv_package TYPE tadir-devclass + iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false + RETURNING VALUE(rt_tadir) TYPE ty_tadir_tt RAISING lcx_exception, read_single IMPORTING iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR' @@ -33,9 +34,10 @@ CLASS lcl_tadir DEFINITION FINAL. RETURNING VALUE(rt_tadir) TYPE ty_tadir_tt RAISING lcx_exception, build - IMPORTING iv_package TYPE tadir-devclass - iv_path TYPE string - RETURNING VALUE(rt_tadir) TYPE ty_tadir_tt + IMPORTING iv_package TYPE tadir-devclass + iv_path TYPE string + iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false + RETURNING VALUE(rt_tadir) TYPE ty_tadir_tt RAISING lcx_exception. ENDCLASS. "lcl_tadir DEFINITION @@ -110,8 +112,9 @@ CLASS lcl_tadir IMPLEMENTATION. METHOD read. * start recursion - rt_tadir = build( iv_package = iv_package - iv_path = '' ). + rt_tadir = build( iv_package = iv_package + iv_path = '' + iv_ignore_subpackages = iv_ignore_subpackages ). rt_tadir = check_exists( rt_tadir ). @@ -161,9 +164,12 @@ CLASS lcl_tadir IMPLEMENTATION. ENDLOOP. * look for subpackages - SELECT * FROM tdevc INTO TABLE lt_tdevc - WHERE parentcl = iv_package - ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF + IF iv_ignore_subpackages = abap_false. + SELECT * FROM tdevc INTO TABLE lt_tdevc + WHERE parentcl = iv_package + ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF + ENDIF. + LOOP AT lt_tdevc ASSIGNING . lv_len = strlen( iv_package ). IF -devclass(lv_len) <> iv_package.