# API Changes and Migration Hints

Details of API changes in 3.0 compared to the previous release 2.3.1 are available in the Clirr API change report linked from the JGit download page.

### Internal storage API moved to internal packages

Applications are not supposed to build against the internal storage API unless they can accept API churn and make necessary updates as versions change.

- package org.eclipse.jgit.storage.dfs was moved to org.eclipse.jgit.internal.storage.dfs
- package org.eclipse.jgit.storage.file was moved to org.eclipse.jgit.internal.storage.file

In order to construct specific Repository instances use the respective builder classes:

- org.eclipse.jgit.storage.file.FileRepositoryBuilder
- org.eclipse.jgit.internal.storage.dfs.DfsRepositoryBuilder

### WindowCache reconfiguration

Instead of

    WindowCacheConfig c = new WindowCacheConfig();
    ... set new configuration params ...
    WindowCache.reconfigure(c);

use

    WindowCacheConfig c = new WindowCacheConfig();
    ... set new configuration params ...
    WIndowCacheConfig.install()

### FollowFilter requires DiffConfig

Creation of a FollowFilter now needs an explicit DiffConfig, this was necessary to fix an NPE (see https://git.eclipse.org/r/#/c/12499)

    public static FollowFilter create(String path, DiffConfig cfg)

### Reflog interfaces moved

The interfaces ReflogReader and ReflogEntry exposed by ReflogCommand and Repository were moved to package org.eclipse.jgit.lib.