# `svn` plugin

This plugin adds some utility functions to display additional information regarding your current
svn repository. See https://subversion.apache.org/ for the full svn documentation.

To use it, add `svn` to your plugins array:

```zsh
plugins=(... svn)
```

## Functions

| Command               | Description                                 |
|:----------------------|:--------------------------------------------|
| `svn_prompt_info`     | Shows svn prompt in themes                  |
| `in_svn`              | Checks if we're in an svn repository        |
| `svn_get_repo_name`   | Get repository name                         |
| `svn_get_branch_name` | Get branch name (see [caveats](#caveats))   |
| `svn_get_rev_nr`      | Get revision number                         |
| `svn_dirty`           | Checks if there are changes in the svn repo |

## Caveats

The plugin expects the first directory to be the current branch / tag / trunk. So it returns
the first path element if you don't use branches.

## Usage on themes

To use this in the `agnoster` theme follow these instructions:

1. Enable the svn plugin

2. Add the following lines to your `zshrc` file:

    ```shell
    prompt_svn() {
        local rev branch
        if in_svn; then
            rev=$(svn_get_rev_nr)
            branch=$(svn_get_branch_name)
            if [[ $(svn_dirty_choose_pwd 1 0) -eq 1 ]]; then
                prompt_segment yellow black
                echo -n "$rev@$branch"
                echo -n "±"
            else
                prompt_segment green black
                echo -n "$rev@$branch"
            fi
        fi
    }
    ```

3. Override the agnoster `build_prompt()` function:

    ```zsh
    build_prompt() {
        RETVAL=$?
        prompt_status
        prompt_context
        prompt_dir
        prompt_git
        prompt_svn
        prompt_end
    }
    ```