瀏覽代碼

Add|RemoveNoteComand: Reduce duplicated code

The private method commitNoteMap is in both classes with the same
implementation.

Make it static in AddNoteCommand and reuse it from RemoveNoteCommand.

Change-Id: Ia037bf9efdd94ee7b8d33b41321e9cfd6ea4a6a5
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
tags/v4.11.0.201803080745-r
David Pursehouse 6 年之前
父節點
當前提交
bc9e3a31b2

+ 5
- 4
org.eclipse.jgit/src/org/eclipse/jgit/api/AddNoteCommand.java 查看文件

@@ -99,7 +99,7 @@ public class AddNoteCommand extends GitCommand<Note> {
map = NoteMap.read(walk.getObjectReader(), notesCommit);
}
map.set(id, message, inserter);
commitNoteMap(walk, map, notesCommit, inserter,
commitNoteMap(repo, notesRef, walk, map, notesCommit, inserter,
"Notes added by 'git notes add'"); //$NON-NLS-1$
return map.getNote(id);
} catch (IOException e) {
@@ -134,7 +134,8 @@ public class AddNoteCommand extends GitCommand<Note> {
return this;
}

private void commitNoteMap(RevWalk walk, NoteMap map,
static void commitNoteMap(Repository r, String ref, RevWalk walk,
NoteMap map,
RevCommit notesCommit,
ObjectInserter inserter,
String msg)
@@ -142,14 +143,14 @@ public class AddNoteCommand extends GitCommand<Note> {
// commit the note
CommitBuilder builder = new CommitBuilder();
builder.setTreeId(map.writeTree(inserter));
builder.setAuthor(new PersonIdent(repo));
builder.setAuthor(new PersonIdent(r));
builder.setCommitter(builder.getAuthor());
builder.setMessage(msg);
if (notesCommit != null)
builder.setParentIds(notesCommit);
ObjectId commit = inserter.insert(builder);
inserter.flush();
RefUpdate refUpdate = repo.updateRef(notesRef);
RefUpdate refUpdate = r.updateRef(ref);
if (notesCommit != null)
refUpdate.setExpectedOldObjectId(notesCommit);
else

+ 2
- 29
org.eclipse.jgit/src/org/eclipse/jgit/api/RemoveNoteCommand.java 查看文件

@@ -46,13 +46,9 @@ import java.io.IOException;

import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.lib.CommitBuilder;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.notes.Note;
import org.eclipse.jgit.notes.NoteMap;
@@ -99,7 +95,8 @@ public class RemoveNoteCommand extends GitCommand<Note> {
map = NoteMap.read(walk.getObjectReader(), notesCommit);
}
map.set(id, null, inserter);
commitNoteMap(walk, map, notesCommit, inserter,
AddNoteCommand.commitNoteMap(repo, notesRef, walk, map, notesCommit,
inserter,
"Notes removed by 'git notes remove'"); //$NON-NLS-1$
return map.getNote(id);
} catch (IOException e) {
@@ -121,30 +118,6 @@ public class RemoveNoteCommand extends GitCommand<Note> {
return this;
}

private void commitNoteMap(RevWalk walk, NoteMap map,
RevCommit notesCommit,
ObjectInserter inserter,
String msg)
throws IOException {
// commit the note
CommitBuilder builder = new CommitBuilder();
builder.setTreeId(map.writeTree(inserter));
builder.setAuthor(new PersonIdent(repo));
builder.setCommitter(builder.getAuthor());
builder.setMessage(msg);
if (notesCommit != null)
builder.setParentIds(notesCommit);
ObjectId commit = inserter.insert(builder);
inserter.flush();
RefUpdate refUpdate = repo.updateRef(notesRef);
if (notesCommit != null)
refUpdate.setExpectedOldObjectId(notesCommit);
else
refUpdate.setExpectedOldObjectId(ObjectId.zeroId());
refUpdate.setNewObjectId(commit);
refUpdate.update(walk);
}

/**
* Set the name of the <code>Ref</code> to remove a note from.
*

Loading…
取消
儲存