---
name: "App::KGB::Change"
section: "3pm"
platform: "linux"
package: "kgb-client"
version: "1.61-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/App::KGB::Change"
---

# App::KGB::Change(3pm)

a single file change

## NAME

App::KGB::Change - a single file change

## SYNOPSIS

```
    my $c = App::KGB::Change->new(
        { action => "M", prop_change => 1, path => "/there" } );
    print $c;
    my $c = App::KGB::Change->new("(M+)/there");
```

## DESCRIPTION

**App::KGB::Change** encapsulates a single path change from a given change set (or commit).

**App::KGB::Change** overloads the "" operator in order to provide a default string representation of changes.

## FIELDS

- **action** (**mandatory**)

  The action performed on the item. Possible values are:

  - **M**

    The path was modified.

  - **A**

    The path was added.

  - **D**

    The path was deleted.

  - **R**

    The path was replaced.

- path (**mandatory**)

  The path that was changed.

- prop\_change

  Boolean. Indicated that some properties of the path, not the content were changed.

## CONSTRUCTOR

### new ( { *initial values* } )

More-or-less standard constructor.

It can take a hashref with keys all the field names (See ).

Or, it can take a single string, which is de-composed into components.

See  for examples.

## METHODS

- **as\_string()**

  Return a string representation of the change. Used by the ""  overload. The resulting string is suitable for feeding the  constructor if needed.

## CLASS METHODS

- detect\_common\_dir("changes")

  Given an arrayref of changes (instances of APP::KGB::Change), detects the longest path that is common to all of them. All the changes' paths are trimmed from the common part.

  Example:

  ```
   foo/b
   foo/x
   foo/bar/a
  ```

  would return 'foo' and the paths would be trimmed to

  ```
   b
   x
   bar/a
  ```
