private static void takeLine( final Project project, String line, StringBuilder sb, GitLogParser parser, SymbolicRefsI refs, VirtualFile root, VcsException[] exc, GitLineHandler h, AsynchConsumer<GitCommit> gitCommitConsumer) { final String text = sb.toString(); sb.setLength(0); sb.append(line); if (text.length() == 0) return; GitLogRecord record = parser.parseOneRecord(text); final GitCommit gitCommit; try { gitCommit = createCommit(project, refs, root, record); } catch (VcsException e) { exc[0] = e; h.cancel(); return; } gitCommitConsumer.consume(gitCommit); }
@Nullable public GitLogRecord acceptLine(String s) { final boolean lineEnd = s.startsWith(GitLogParser.RECORD_START); if (lineEnd && (!myNotStarted)) { final String line = myBuffer.toString(); myBuffer.setLength(0); myBuffer.append(s.substring(GitLogParser.RECORD_START.length())); return processResult(line); } else { myBuffer.append(lineEnd ? s.substring(GitLogParser.RECORD_START.length()) : s); myBuffer.append("\n"); } myNotStarted = false; return null; }
public GitLogRecord processLast() { return processResult(myBuffer.toString()); }