|
|
|
@ -105,14 +105,36 @@ public class GitRepositoryService {
|
|
|
|
|
private Changes parseOutputDiff(String output) {
|
|
|
|
|
Changes changes = new Changes();
|
|
|
|
|
String[] strings = output.split("\n");
|
|
|
|
|
for (String string : strings) {
|
|
|
|
|
Optional<String> maybeFileName = getFileName(string);
|
|
|
|
|
if (maybeFileName.isPresent()) {
|
|
|
|
|
FileChange fileChange = new FileChange();
|
|
|
|
|
int stringsLength = strings.length;
|
|
|
|
|
for (int i = 0; i < strings.length; i++) {
|
|
|
|
|
while (i < stringsLength) {
|
|
|
|
|
Optional<String> maybeFileName = getFileName(strings[i]);
|
|
|
|
|
if (maybeFileName.isPresent()) {
|
|
|
|
|
fileChange = new FileChange();
|
|
|
|
|
fileChange.setFile(maybeFileName.get());
|
|
|
|
|
/// вытащить другие изменения из коммита
|
|
|
|
|
changes.getFileChanges().add(fileChange);
|
|
|
|
|
}
|
|
|
|
|
LineChange lineChange = new LineChange();
|
|
|
|
|
if (strings[i].startsWith("-")) {
|
|
|
|
|
while ((i < stringsLength) && strings[i].startsWith("-")) {
|
|
|
|
|
lineChange.setLineFrom(lineChange.getLineFrom() + "\n" + strings[i]);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (strings[i].startsWith("+")) {
|
|
|
|
|
while ((i < stringsLength) && strings[i].startsWith("+")) {
|
|
|
|
|
lineChange.setLineTo(lineChange.getLineTo() + "\n" + strings[i]);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((lineChange.getLineTo() != null && lineChange.getLineTo().isEmpty())
|
|
|
|
|
|| (lineChange.getLineFrom() != null && lineChange.getLineFrom().isEmpty())) {
|
|
|
|
|
fileChange.getLineChanges().add(lineChange);
|
|
|
|
|
}
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return changes;
|
|
|
|
|
}
|
|
|
|
@ -120,9 +142,37 @@ public class GitRepositoryService {
|
|
|
|
|
private Optional<String> getFileName(String commitString) {
|
|
|
|
|
String startString = "diff --git a/";
|
|
|
|
|
if (commitString.startsWith(startString)) {
|
|
|
|
|
String name = commitString.substring(commitString.indexOf(startString) + startString.length(), commitString.indexOf("b/"));
|
|
|
|
|
String name = commitString.substring(commitString.indexOf(startString) + startString.length(), commitString.indexOf(" b/"));
|
|
|
|
|
return Optional.of(name);
|
|
|
|
|
}
|
|
|
|
|
return Optional.empty();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Optional<String> getLineTo(String commitString) {
|
|
|
|
|
String startString = "+";
|
|
|
|
|
String startPlus = "+++";
|
|
|
|
|
if (commitString.startsWith(startString)) {
|
|
|
|
|
String lineTo = commitString.substring(commitString.indexOf(startString) + startString.length());
|
|
|
|
|
if (commitString.startsWith(startPlus)) {
|
|
|
|
|
return Optional.empty();
|
|
|
|
|
} else {
|
|
|
|
|
return Optional.of(lineTo);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return Optional.empty();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Optional<String> getLineFrom(String commitString) {
|
|
|
|
|
String startString = "-";
|
|
|
|
|
String startMinus = "---";
|
|
|
|
|
if (commitString.startsWith(startString)) {
|
|
|
|
|
String lineFrom = commitString.substring(commitString.indexOf(startString) + startString.length());
|
|
|
|
|
if (commitString.startsWith(startMinus)) {
|
|
|
|
|
return Optional.empty();
|
|
|
|
|
} else {
|
|
|
|
|
return Optional.of(lineFrom);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return Optional.empty();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|