mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
241 lines
8.8 KiB
ABAP
241 lines
8.8 KiB
ABAP
*&---------------------------------------------------------------------*
|
|
*& Include ZABAPGIT_REPO
|
|
*&---------------------------------------------------------------------*
|
|
|
|
*----------------------------------------------------------------------*
|
|
* CLASS lcl_repo DEFINITION
|
|
*----------------------------------------------------------------------*
|
|
CLASS lcl_repo DEFINITION ABSTRACT FRIENDS lcl_repo_srv.
|
|
|
|
PUBLIC SECTION.
|
|
METHODS:
|
|
constructor
|
|
IMPORTING is_data TYPE lcl_persistence_repo=>ty_repo,
|
|
get_key
|
|
RETURNING VALUE(rv_key) TYPE lcl_persistence_db=>ty_value,
|
|
get_name
|
|
RETURNING VALUE(rv_name) TYPE string
|
|
RAISING lcx_exception,
|
|
get_files_local
|
|
IMPORTING io_log TYPE REF TO lcl_log OPTIONAL
|
|
it_filter TYPE scts_tadir OPTIONAL
|
|
RETURNING VALUE(rt_files) TYPE lif_defs=>ty_files_item_tt
|
|
RAISING lcx_exception,
|
|
get_local_checksums
|
|
RETURNING VALUE(rt_checksums) TYPE lcl_persistence_repo=>ty_local_checksum_tt,
|
|
get_local_checksums_per_file
|
|
RETURNING VALUE(rt_checksums) TYPE lif_defs=>ty_file_signatures_tt,
|
|
get_files_remote
|
|
RETURNING VALUE(rt_files) TYPE lif_defs=>ty_files_tt
|
|
RAISING lcx_exception,
|
|
get_package
|
|
RETURNING VALUE(rv_package) TYPE lcl_persistence_repo=>ty_repo-package,
|
|
get_master_language
|
|
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
|
|
RETURNING VALUE(ro_dot_abapgit) TYPE REF TO lcl_dot_abapgit,
|
|
set_dot_abapgit
|
|
IMPORTING io_dot_abapgit TYPE REF TO lcl_dot_abapgit
|
|
RAISING lcx_exception,
|
|
deserialize
|
|
RAISING lcx_exception,
|
|
refresh
|
|
IMPORTING iv_drop_cache TYPE abap_bool DEFAULT abap_false
|
|
RAISING lcx_exception,
|
|
refresh_local, " For testing purposes, maybe removed later
|
|
update_local_checksums
|
|
IMPORTING it_files TYPE lif_defs=>ty_file_signatures_tt
|
|
RAISING lcx_exception,
|
|
rebuild_local_checksums
|
|
RAISING lcx_exception,
|
|
find_remote_dot_abapgit
|
|
RETURNING VALUE(ro_dot) TYPE REF TO lcl_dot_abapgit
|
|
RAISING lcx_exception,
|
|
is_offline
|
|
RETURNING VALUE(rv_offline) TYPE abap_bool
|
|
RAISING lcx_exception.
|
|
|
|
PROTECTED SECTION.
|
|
DATA: mt_local TYPE lif_defs=>ty_files_item_tt,
|
|
mt_remote TYPE lif_defs=>ty_files_tt,
|
|
mv_do_local_refresh TYPE abap_bool,
|
|
mv_last_serialization TYPE timestamp,
|
|
ms_data TYPE lcl_persistence_repo=>ty_repo.
|
|
|
|
METHODS:
|
|
set
|
|
IMPORTING iv_sha1 TYPE lif_defs=>ty_sha1 OPTIONAL
|
|
it_checksums TYPE lcl_persistence_repo=>ty_local_checksum_tt OPTIONAL
|
|
iv_url TYPE lcl_persistence_repo=>ty_repo-url OPTIONAL
|
|
iv_branch_name TYPE lcl_persistence_repo=>ty_repo-branch_name OPTIONAL
|
|
iv_head_branch TYPE lcl_persistence_repo=>ty_repo-head_branch OPTIONAL
|
|
iv_offline TYPE lcl_persistence_repo=>ty_repo-offline OPTIONAL
|
|
is_dot_abapgit TYPE lcl_persistence_repo=>ty_repo-dot_abapgit OPTIONAL
|
|
RAISING lcx_exception.
|
|
|
|
ENDCLASS. "lcl_repo DEFINITION
|
|
|
|
*----------------------------------------------------------------------*
|
|
* CLASS lcl_repo_online DEFINITION
|
|
*----------------------------------------------------------------------*
|
|
CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL.
|
|
|
|
PUBLIC SECTION.
|
|
METHODS:
|
|
refresh REDEFINITION,
|
|
constructor
|
|
IMPORTING is_data TYPE lcl_persistence_repo=>ty_repo
|
|
RAISING lcx_exception,
|
|
get_url
|
|
RETURNING VALUE(rv_url) TYPE lcl_persistence_repo=>ty_repo-url,
|
|
get_branch_name
|
|
RETURNING VALUE(rv_name) TYPE lcl_persistence_repo=>ty_repo-branch_name,
|
|
get_head_branch_name
|
|
RETURNING VALUE(rv_name) TYPE lcl_persistence_repo=>ty_repo-head_branch,
|
|
get_branches
|
|
RETURNING VALUE(ro_branches) TYPE REF TO lcl_git_branch_list
|
|
RAISING lcx_exception,
|
|
set_url
|
|
IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url
|
|
RAISING lcx_exception,
|
|
set_branch_name
|
|
IMPORTING iv_branch_name TYPE lcl_persistence_repo=>ty_repo-branch_name
|
|
RAISING lcx_exception,
|
|
set_new_remote
|
|
IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url
|
|
iv_branch_name TYPE lcl_persistence_repo=>ty_repo-branch_name
|
|
RAISING lcx_exception,
|
|
get_sha1_local
|
|
RETURNING VALUE(rv_sha1) TYPE lcl_persistence_repo=>ty_repo-sha1,
|
|
get_sha1_remote
|
|
RETURNING VALUE(rv_sha1) TYPE lcl_persistence_repo=>ty_repo-sha1
|
|
RAISING lcx_exception,
|
|
get_files_remote REDEFINITION,
|
|
get_objects
|
|
RETURNING VALUE(rt_objects) TYPE lif_defs=>ty_objects_tt
|
|
RAISING lcx_exception,
|
|
deserialize REDEFINITION,
|
|
status
|
|
IMPORTING io_log TYPE REF TO lcl_log OPTIONAL
|
|
RETURNING VALUE(rt_results) TYPE lif_defs=>ty_results_tt
|
|
RAISING lcx_exception,
|
|
reset_status,
|
|
rebuild_local_checksums REDEFINITION,
|
|
push
|
|
IMPORTING is_comment TYPE lif_defs=>ty_comment
|
|
io_stage TYPE REF TO lcl_stage
|
|
RAISING lcx_exception,
|
|
get_unnecessary_local_objs
|
|
RETURNING VALUE(rt_unnecessary_local_objects) TYPE LIF_DEFS=>TY_TADIR_TT
|
|
RAISING lcx_exception,
|
|
delete_unnecessary_local_objs
|
|
RAISING lcx_exception lcx_cancel.
|
|
|
|
PRIVATE SECTION.
|
|
DATA:
|
|
mt_objects TYPE lif_defs=>ty_objects_tt,
|
|
mv_branch TYPE lif_defs=>ty_sha1,
|
|
mv_initialized TYPE abap_bool,
|
|
mo_branches TYPE REF TO lcl_git_branch_list,
|
|
mt_status TYPE lif_defs=>ty_results_tt.
|
|
|
|
METHODS:
|
|
handle_stage_ignore
|
|
IMPORTING io_stage TYPE REF TO lcl_stage
|
|
RAISING lcx_exception,
|
|
initialize
|
|
RAISING lcx_exception,
|
|
actualize_head_branch
|
|
RAISING lcx_exception,
|
|
delete_initial_online_repo
|
|
IMPORTING iv_commit TYPE flag
|
|
RAISING lcx_exception.
|
|
|
|
ENDCLASS. "lcl_repo_online DEFINITION
|
|
|
|
*----------------------------------------------------------------------*
|
|
* CLASS lcl_repo_offline DEFINITION
|
|
*----------------------------------------------------------------------*
|
|
CLASS lcl_repo_offline DEFINITION INHERITING FROM lcl_repo FINAL.
|
|
|
|
PUBLIC SECTION.
|
|
METHODS:
|
|
set_files_remote
|
|
IMPORTING it_files TYPE lif_defs=>ty_files_tt
|
|
RAISING lcx_exception.
|
|
|
|
ENDCLASS. "lcl_repo_offline DEFINITION
|
|
|
|
*----------------------------------------------------------------------*
|
|
* CLASS lcl_repo_srv DEFINITION
|
|
*----------------------------------------------------------------------*
|
|
CLASS lcl_repo_srv DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app.
|
|
|
|
PUBLIC SECTION.
|
|
|
|
TYPES: ty_repo_tt TYPE STANDARD TABLE OF REF TO lcl_repo WITH DEFAULT KEY.
|
|
|
|
METHODS list
|
|
RETURNING VALUE(rt_list) TYPE ty_repo_tt
|
|
RAISING lcx_exception.
|
|
|
|
METHODS refresh
|
|
RAISING lcx_exception.
|
|
|
|
METHODS new_online
|
|
IMPORTING iv_url TYPE string
|
|
iv_branch_name TYPE string
|
|
iv_package TYPE devclass
|
|
RETURNING VALUE(ro_repo) TYPE REF TO lcl_repo_online
|
|
RAISING lcx_exception.
|
|
|
|
METHODS new_offline
|
|
IMPORTING iv_url TYPE string
|
|
iv_package TYPE devclass
|
|
RETURNING VALUE(ro_repo) TYPE REF TO lcl_repo_offline
|
|
RAISING lcx_exception.
|
|
|
|
METHODS delete
|
|
IMPORTING io_repo TYPE REF TO lcl_repo
|
|
RAISING lcx_exception.
|
|
|
|
METHODS get
|
|
IMPORTING iv_key TYPE lcl_persistence_db=>ty_value
|
|
RETURNING VALUE(ro_repo) TYPE REF TO lcl_repo
|
|
RAISING lcx_exception.
|
|
|
|
METHODS is_repo_installed
|
|
IMPORTING iv_url TYPE string
|
|
iv_target_package TYPE devclass OPTIONAL
|
|
RETURNING VALUE(rv_installed) TYPE abap_bool
|
|
RAISING lcx_exception.
|
|
|
|
METHODS switch_repo_type
|
|
IMPORTING iv_key TYPE lcl_persistence_db=>ty_value
|
|
iv_offline TYPE abap_bool
|
|
RAISING lcx_exception.
|
|
|
|
PRIVATE SECTION.
|
|
|
|
METHODS constructor.
|
|
|
|
DATA: mv_init TYPE abap_bool VALUE abap_false,
|
|
mo_persistence TYPE REF TO lcl_persistence_repo,
|
|
mt_list TYPE ty_repo_tt.
|
|
|
|
METHODS add
|
|
IMPORTING io_repo TYPE REF TO lcl_repo
|
|
RAISING lcx_exception.
|
|
|
|
METHODS validate_package
|
|
IMPORTING iv_package TYPE devclass
|
|
RAISING lcx_exception.
|
|
|
|
ENDCLASS. "lcl_repo_srv DEFINITION
|