# Import existing review configuration

> Already using another AI code reviewer? Convert its repository configuration into MergeHarbor's .mergeharbor/ directory with one command, then review it.

If a repository already holds configuration from another AI code reviewer (a JSON settings file at the root, or per-folder settings, rules and context files), `mh import` detects it and writes the equivalent [repository configuration](https://mergeharbor.com/docs/repository-config), so you do not have to start over.

```sh
mh import           # dry run: lists the files it would write and anything it cannot convert
mh import --write   # writes them (existing files are kept unless you add --force)
mh config check     # validates the result
```

Review the new files, commit them, and remove the old ones once the change is merged.

## What is converted

| Source                               | Result                                                |
| ------------------------------------ | ----------------------------------------------------- |
| The JSON settings file at the root   | `.mergeharbor/config.yml` at the root                 |
| A folder's `config.json` settings    | `<folder>/.mergeharbor/config.yml`                    |
| A folder's `rules.md`                | `<folder>/.mergeharbor/rules.md` (unchanged)          |
| A folder's `files.json` context list | `context.files` in `<folder>/.mergeharbor/config.yml` |

When the root has both a root settings file and a root settings folder, the folder is used, matching how the files were read before. The dry run names every source file it found.

| Setting                                     | Becomes                                      |
| ------------------------------------------- | -------------------------------------------- |
| `strictness` 1, 2, 3                        | `strictness: high`, `medium`, `low`          |
| `instructions`                              | `instructions`                               |
| `ignorePatterns`                            | `ignore_paths`                               |
| `commentTypes` including style or syntax    | `categories` including `style`               |
| `triggerOnUpdates`                          | `trigger: pushes` (true) or `opened` (false) |
| `includeAuthors`, `excludeAuthors`          | an author filter                             |
| `includeBranches`, `excludeBranches`        | a base-branch filter                         |
| `labels`, `disabledLabels`                  | a label filter                               |
| `statusCheck`                               | `status_check.enabled`                       |
| `rules` (`id`, `rule`, `scope`, `severity`) | `rules` (`id`, `rule`, `paths`, `severity`)  |
| `disabledRules`                             | `disable_rules`                              |
| `customContext.files`                       | `context.files`                              |
| `customContext.other`                       | `context.notes`                              |

Settings that apply to a whole pull request (filters, trigger, status check) can only be set at the repository root; the importer lists any it finds in a nested folder. Keys without an equivalent are listed too, so nothing is dropped silently.
