Skip to content

Commit

Permalink
Merge pull request #30 from yodamad/dev
Browse files Browse the repository at this point in the history
1.5
  • Loading branch information
yodamad authored Nov 24, 2018
2 parents 3f74d2a + 2972f6d commit eeaecce
Show file tree
Hide file tree
Showing 18 changed files with 1,011 additions and 545 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>fr.yodamad.svn2git</groupId>
<artifactId>svn-2-git</artifactId>
<version>1.4</version>
<version>1.5</version>
<packaging>war</packaging>
<name>Svn 2 GitLab</name>

Expand Down
21 changes: 21 additions & 0 deletions src/main/java/fr/yodamad/svn2git/domain/WorkUnit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package fr.yodamad.svn2git.domain;

import java.util.concurrent.atomic.AtomicBoolean;

/**
* Work unit
*/
public class WorkUnit {

public Migration migration;
public String root;
public String directory;
public AtomicBoolean warnings;

public WorkUnit(Migration migration, String root, String directory, AtomicBoolean warnings) {
this.migration = migration;
this.root = root;
this.directory = directory;
this.warnings = warnings;
}
}
81 changes: 81 additions & 0 deletions src/main/java/fr/yodamad/svn2git/service/Cleaner.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package fr.yodamad.svn2git.service;

import com.madgag.git.bfg.cli.Main;
import fr.yodamad.svn2git.domain.MigrationHistory;
import fr.yodamad.svn2git.domain.WorkUnit;
import fr.yodamad.svn2git.domain.enumeration.StatusEnum;
import fr.yodamad.svn2git.domain.enumeration.StepEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.util.Arrays;

import static fr.yodamad.svn2git.service.util.Shell.execCommand;
import static java.lang.String.format;

/**
* Cleaning operations
*/
@Service
public class Cleaner {

// Manager
private final HistoryManager historyMgr;

public Cleaner(final HistoryManager historyManager) {
this.historyMgr = historyManager;
}

/**
* Clean files with forbiddene extensions if configured
* @param workUnit
* @return
*/
public boolean cleanForbiddenExtensions(WorkUnit workUnit) {
boolean clean = false;
if (!StringUtils.isEmpty(workUnit.migration.getForbiddenFileExtensions())) {
// 3.1 Clean files based on their extensions
Arrays.stream(workUnit.migration.getForbiddenFileExtensions().split(","))
.forEach(s -> {
MigrationHistory innerHistory = historyMgr.startStep(workUnit.migration, StepEnum.GIT_CLEANING, format("Remove files with extension : %s", s));
try {
Main.main(new String[]{"--delete-files", s, "--no-blob-protection", workUnit.directory});
historyMgr.endStep(innerHistory, StatusEnum.DONE, null);
} catch (Exception exc) {
historyMgr.endStep(innerHistory, StatusEnum.FAILED, exc.getMessage());
workUnit.warnings.set(true);
}
});
clean = true;
}
return clean;
}

/**
* Clean large files if configured
* @param workUnit
* @return
* @throws IOException
* @throws InterruptedException
*/
public boolean cleanLargeFiles(WorkUnit workUnit) throws IOException, InterruptedException {
boolean clean = false;
if (!StringUtils.isEmpty(workUnit.migration.getMaxFileSize()) && Character.isDigit(workUnit.migration.getMaxFileSize().charAt(0))) {
// 3.2 Clean files based on size
MigrationHistory history = historyMgr.startStep(workUnit.migration, StepEnum.GIT_CLEANING,
format("Remove files bigger than %s", workUnit.migration.getMaxFileSize()));

String gitCommand = "git gc";
execCommand(workUnit.directory, gitCommand);

Main.main(new String[]{
"--strip-blobs-bigger-than", workUnit.migration.getMaxFileSize(),
"--no-blob-protection", workUnit.directory});

clean = true;
historyMgr.endStep(history, StatusEnum.DONE, null);
}
return clean;
}
}
Loading

0 comments on commit eeaecce

Please sign in to comment.