protected void addFiles()

in src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java [575:636]


    protected void addFiles(Collection<File> added) throws MojoFailureException, MojoExecutionException {
        List<File> addedList = new ArrayList<>();
        Set<File> createdDirs = new HashSet<>();
        Set<File> dirsToAdd = new TreeSet<>();

        createdDirs.add(relativize(checkoutDirectory, checkoutDirectory));

        for (File f : added) {
            for (File dir = f.getParentFile(); !dir.equals(checkoutDirectory); dir = dir.getParentFile()) {
                File relativized = relativize(checkoutDirectory, dir);
                //  we do the best we can with the directories
                if (createdDirs.add(relativized)) {
                    dirsToAdd.add(relativized);
                } else {
                    break;
                }
            }
            addedList.add(relativize(checkoutDirectory, f));
        }

        if (addUniqueDirectory) { // add one directory at a time
            for (File relativized : dirsToAdd) {
                try {
                    ScmFileSet fileSet = new ScmFileSet(checkoutDirectory, relativized);
                    getLog().info("scm add directory: " + relativized);
                    AddScmResult addDirResult = scmProvider.add(scmRepository, fileSet, "Adding directory");
                    if (!addDirResult.isSuccess()) {
                        getLog().warn(" Error adding directory " + relativized + ": "
                                + addDirResult.getCommandOutput());
                    }
                } catch (ScmException e) {
                    //
                }
            }
        } else { // add all directories in one command
            try {
                List<File> dirs = new ArrayList<>(dirsToAdd);
                ScmFileSet fileSet = new ScmFileSet(checkoutDirectory, dirs);
                getLog().info("scm add directories: " + dirs);
                AddScmResult addDirResult = scmProvider.add(scmRepository, fileSet, "Adding directories");
                if (!addDirResult.isSuccess()) {
                    getLog().warn(" Error adding directories " + dirs + ": " + addDirResult.getCommandOutput());
                }
            } catch (ScmException e) {
                //
            }
        }

        // remove directories already added !
        addedList.removeAll(dirsToAdd);

        ScmFileSet addedFileSet = new ScmFileSet(checkoutDirectory, addedList);
        getLog().info("scm add files: " + addedList);
        try {
            CommandParameters commandParameters = new CommandParameters();
            commandParameters.setString(CommandParameter.MESSAGE, "Adding new site files.");
            commandParameters.setString(CommandParameter.FORCE_ADD, Boolean.TRUE.toString());
            checkScmResult(scmProvider.add(scmRepository, addedFileSet, commandParameters), "add new files to SCM");
        } catch (ScmException e) {
            throw new MojoExecutionException("Failed to add new files to SCM", e);
        }
    }