From cc9b9ef08eaafd8a50439e37b68ecc158f6f8326 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 12 Sep 2024 05:47:41 +0200 Subject: [PATCH] bugfix: git chmod = symbolic link (#7047) --- src/git/zcl_abapgit_git_pack.clas.abap | 3 ++- src/git/zcl_abapgit_git_porcelain.clas.abap | 3 ++- src/git/zif_abapgit_git_definitions.intf.abap | 9 +++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/git/zcl_abapgit_git_pack.clas.abap b/src/git/zcl_abapgit_git_pack.clas.abap index 18b81a2c1..cdea8850f 100644 --- a/src/git/zcl_abapgit_git_pack.clas.abap +++ b/src/git/zcl_abapgit_git_pack.clas.abap @@ -481,9 +481,10 @@ CLASS zcl_abapgit_git_pack IMPLEMENTATION. ls_node-chmod = lv_chmod. IF ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-dir AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-file + AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-symbolic_link AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-executable AND ls_node-chmod <> zif_abapgit_git_definitions=>c_chmod-submodule. - zcx_abapgit_exception=>raise( |Unknown chmod| ). + zcx_abapgit_exception=>raise( |Unknown chmod { ls_node-chmod }| ). ENDIF. lv_offset = lv_match + 1. diff --git a/src/git/zcl_abapgit_git_porcelain.clas.abap b/src/git/zcl_abapgit_git_porcelain.clas.abap index 672de746e..417df3912 100644 --- a/src/git/zcl_abapgit_git_porcelain.clas.abap +++ b/src/git/zcl_abapgit_git_porcelain.clas.abap @@ -809,6 +809,7 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION. CASE -chmod. WHEN zif_abapgit_git_definitions=>c_chmod-file OR zif_abapgit_git_definitions=>c_chmod-executable + OR zif_abapgit_git_definitions=>c_chmod-symbolic_link OR zif_abapgit_git_definitions=>c_chmod-submodule. APPEND INITIAL LINE TO rt_expanded ASSIGNING . -path = iv_base. @@ -822,7 +823,7 @@ CLASS zcl_abapgit_git_porcelain IMPLEMENTATION. iv_base = iv_base && -name && '/' ). APPEND LINES OF lt_expanded TO rt_expanded. WHEN OTHERS. - zcx_abapgit_exception=>raise( 'walk_tree: unknown chmod' ). + zcx_abapgit_exception=>raise( |walk_tree: unknown chmod { -chmod }| ). ENDCASE. ENDLOOP. diff --git a/src/git/zif_abapgit_git_definitions.intf.abap b/src/git/zif_abapgit_git_definitions.intf.abap index bc23ff826..843525303 100644 --- a/src/git/zif_abapgit_git_definitions.intf.abap +++ b/src/git/zif_abapgit_git_definitions.intf.abap @@ -78,10 +78,11 @@ INTERFACE zif_abapgit_git_definitions CONSTANTS: BEGIN OF c_chmod, - file TYPE ty_chmod VALUE '100644', - executable TYPE ty_chmod VALUE '100755', - dir TYPE ty_chmod VALUE '40000 ', - submodule TYPE ty_chmod VALUE '160000', + file TYPE ty_chmod VALUE '100644', + executable TYPE ty_chmod VALUE '100755', + dir TYPE ty_chmod VALUE '40000 ', + submodule TYPE ty_chmod VALUE '160000', + symbolic_link TYPE ty_chmod VALUE '120000', END OF c_chmod . TYPES: