anchor.diff:  
     ENDMETHOD.
   
  -  METHOD zif_abapgit_object~compare_to_remote_version.
  -    CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
  -  ENDMETHOD.
  +
  +  METHOD zif_abapgit_object~exists.
  +
  +    DATA: lv_formname TYPE stxfadm-formname.
  +
  +    SELECT SINGLE formname FROM stxfadm INTO lv_formname
  +      WHERE formname = ms_item-obj_name.
  +    rv_bool = boolc( sy-subrc = 0 ).
  +
  +  ENDMETHOD.
  +
  +
  +  METHOD zif_abapgit_object~get_metadata.
  +    rs_metadata = get_metadata( ).
  +    rs_metadata-delete_tadir = abap_true.
  +  ENDMETHOD.
  +
  +
  +  METHOD zif_abapgit_object~has_changed_since.
  +    rv_changed = abap_true.
  +  ENDMETHOD.
  +
   
     METHOD zif_abapgit_object~is_locked.
   
  
positive.code: 
    ENDMETHOD.
  
  ENDCLASS.
  
negative.code: 
    ENDMETHOD.
  
  
    METHOD handle_attrib_leading_spaces.
  
      DATA element        TYPE REF TO if_ixml_element.
      DATA leading_spaces TYPE string.
      DATA coding_line    TYPE string.
  
      TRY.
          code_item_section_handling( EXPORTING i_name                = i_name
                                                i_node                = i_node
                                      IMPORTING e_code_item_element   = element
                                      CHANGING  c_within_code_section = c_within_code_section ).
  
          leading_spaces = element->get_attribute_ns( name = zcl_abapgit_object_ssfo=>attrib_abapgit_leadig_spaces ).
  
          coding_line = element->get_value( ).
          SHIFT coding_line RIGHT BY leading_spaces PLACES.
          element->set_value( coding_line ).
        CATCH zcx_abapgit_exception ##no_handler.
      ENDTRY.
  
    ENDMETHOD.
  
  
    METHOD set_attribute_leading_spaces.
  
      DATA: element             TYPE REF TO if_ixml_element.
      DATA: code_line           TYPE string.
      DATA: offset              TYPE i.
  
      TRY.
          code_item_section_handling( EXPORTING i_name                = i_name
                                                i_node                = i_node
                                      IMPORTING e_code_item_element   = element
                                      CHANGING  c_within_code_section = c_within_code_section ).
  
          code_line = i_node->get_value( ).
          "find 1st non space char
          FIND FIRST OCCURRENCE OF REGEX '\S' IN code_line MATCH OFFSET offset.
          IF sy-subrc = 0 AND offset > 0.
            TRY.
                element ?= i_node.
                element->set_attribute( name  = zcl_abapgit_object_ssfo=>attrib_abapgit_leadig_spaces
                                        value = |{ offset }| ).
  
              CATCH cx_sy_move_cast_error ##no_handler.
            ENDTRY.
          ENDIF.
        CATCH zcx_abapgit_exception ##no_handler.
      ENDTRY.
  
    ENDMETHOD.
  
  
    METHOD code_item_section_handling.
      CONSTANTS: node_item TYPE string VALUE 'item' ##NO_TEXT.
      CONSTANTS: node_text TYPE string VALUE '#text' ##NO_TEXT.
  
      IF i_name IN get_range_node_codes( ).
        c_within_code_section = abap_true.
      ENDIF.
  
      IF c_within_code_section = abap_true.
        IF i_name = node_item.
          TRY.
              e_code_item_element ?= i_node.
              RETURN.
            CATCH cx_sy_move_cast_error ##no_handler.
          ENDTRY.
  
        ELSEIF i_name NOT IN get_range_node_codes( ) AND
               i_name <> node_text.
          c_within_code_section = abap_false.
        ENDIF.
      ENDIF.
  
      RAISE EXCEPTION TYPE zcx_abapgit_exception.
  
    ENDMETHOD.
  
    METHOD zif_abapgit_object~changed_by.
  
      SELECT SINGLE lastuser FROM stxfadm INTO rv_user
        WHERE formname = ms_item-obj_name.
      IF sy-subrc <> 0.
        rv_user = c_user_unknown.
      ENDIF.
  
    ENDMETHOD.
  
  
    METHOD zif_abapgit_object~compare_to_remote_version.
      CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
    ENDMETHOD.
  
  
    METHOD zif_abapgit_object~delete.
  
      DATA: lv_formname TYPE tdsfname.
  
      lv_formname = ms_item-obj_name.
  
      CALL FUNCTION 'FB_DELETE_FORM'
        EXPORTING
          i_formname            = lv_formname
          i_with_dialog         = abap_false
          i_with_confirm_dialog = abap_false
        EXCEPTIONS
          no_form               = 1
          OTHERS                = 2.
      IF sy-subrc <> 0 AND sy-subrc <> 1.
        zcx_abapgit_exception=>raise( 'Error from FB_DELETE_FORM' ).
      ENDIF.
  
    ENDMETHOD.
  
  
    METHOD zif_abapgit_object~deserialize.
  * see function module FB_UPLOAD_FORM
  
  