@Override
    public void import2Vcs() {
        try {
            SvnOperationFactory svnOp = new SvnOperationFactory();
            ISVNAuthenticationManager authManager = new BasicAuthenticationManager(configEntry.getVcsUser(), configEntry.getVcsPass());
            svnOp.setAuthenticationManager(authManager);

            // get repository information
            SvnGetInfo infoCmd = svnOp.createGetInfo();
            infoCmd.setSingleTarget(SvnTarget.fromURL(SVNURL.parseURIEncoded(configEntry.getVcsUrl())));
            SvnInfo repoInfo = infoCmd.run();

            // if remote repository is not empty, and local working copy directory is empty, checkout remote repository
            if (repoInfo.getRevision() > 0L && repoDir.listFiles().length == 0) {
                SvnCheckout chk = svnOp.createCheckout();
                chk.setSource(SvnTarget.fromURL(SVNURL.parseURIEncoded(configEntry.getVcsUrl())));
                chk.setSingleTarget(SvnTarget.fromFile(repoDir));
                chk.run();
            }

            List<File> newFiles = new ArrayList<>(), delFiles = new ArrayList<>();
            if (merge(newFiles, delFiles)) {
                // if first export of database, import to remote repository and checkout to create local working copy
                SvnImport imp = svnOp.createImport();
                imp.setSource(repoDir);
                imp.setSingleTarget(SvnTarget.fromURL(SVNURL.parseURIEncoded(configEntry.getVcsUrl())));
                imp.run();

                FileUtils.cleanDirectory(repoDir);

                SvnCheckout chk = svnOp.createCheckout();
                chk.setSource(SvnTarget.fromURL(SVNURL.parseURIEncoded(configEntry.getVcsUrl())));
                chk.setSingleTarget(SvnTarget.fromFile(repoDir));
                chk.run();
            } else {
                // if local working copy exists, commit changes to remote repository            
                if (newFiles.size() > 0) {
                    SvnScheduleForAddition add = svnOp.createScheduleForAddition();
                    add.setAddParents(true);
                    for (File file : newFiles) {
                        add.addTarget(SvnTarget.fromFile(file));
                    }
                    add.run();
                }

                if (delFiles.size() > 0) {
                    SvnScheduleForRemoval del = svnOp.createScheduleForRemoval();
                    for (File file : delFiles) {
                        del.addTarget(SvnTarget.fromFile(file));
                    }
                    del.run();
                }

                SvnCommit commit = svnOp.createCommit();
                commit.setSingleTarget(SvnTarget.fromFile(repoDir));
                commit.setDepth(SVNDepth.INFINITY);
                commit.run();
            }
        } catch (SVNException | IOException ex) {
            throw new AssertionError("import2Vcs", ex);
        }
    }