2013-09-13 3 views
2

Есть ли способ получить содержимое заметки каждой заметки в репозитории git с помощью jgit. Я попробовал пару подходов, но ничто из этого не работает.jgit: получить содержимое заметки каждой заметки в репозитории git

Приведенный ниже подход, doest перечислит содержимое примечания или идентификатор фиксации.

FileRepository repo; 
    try { 
     repo = new FileRepository("C:\\example\\repos"); 
     RevWalk walk = new RevWalk(repo); 
     NoteMap map = NoteMap.newEmptyMap(); 
     Ref ref = repo.getRef("refs/notes/commits"); 

     if (ref != null) { 
      RevCommit notesCommit = walk.parseCommit(ref.getObjectId()); 
      map = NoteMap.read(walk.getObjectReader(), notesCommit); 
      map.getNote(notesCommit.getId()); 
      Iterator<Note> it = map.iterator(); 

      while (it.hasNext()) { 

       System.out.println(it.next()); 
      } 

Пожалуйста, дайте мне знать?

+0

Может быть что-то в https://github.com/eclipse/jgit/blob/master/org.eclipse.jgit.test/tst/org/eclipse/jgit/notes/NoteMapTest.java может помочь? – VonC

ответ

2

jgit предоставляет команду ListNotes, которая может содержать как конкретные, так и все примечания в репозитории. Оттуда вы можете прочитать не-контент.

Вы можете увидеть пример того, как это используется в jgit-cookbook в фрагменте ListNotes.java.

Фактические данные могут быть выбраны с помощью нормальной Blob чтения, потому что записи хранятся в виде обычных сгустков, как содержимое файла, т.е.

ObjectLoader loader = repository.open(note.getData()); 
loader.copyTo(System.out); 
+0

В приведенном выше подходе перечислены только SHA-1, а не фактическое содержание примечаний. Существует ли подход, который извлекает фактическое содержимое заметки, а не только SHA-1 .. – Iowa

+0

Строка кода note.getData(). GetName() извлекает только идентификатор фиксации заметки, но не фактическое содержимое заметки. Есть ли способ сделать это? – Iowa

+0

Я обновил ответ с объяснением, как данные считываются из записной записки, а также обновил образец в jgit-cookbook. – centic

0

Если вы хотите, чтобы получить содержимое заметки в виде строки без его печати на стандартном выходе (консоли) вы можете использовать следующие строки кода.

ObjectLoader loader = repository.open(note.getData()); 
byte[] bytes = loader.getBytes(); 
String s = new String(bytes); 
Смежные вопросы