2015-03-17 2 views
0

я должен изменить неисправную программу/функцию, которая является расширение org.eclipse.jgitнайти «активный» филиал в хранилище EGit

программы переопределяет близкий метод PushResultDialog и передает Repository к метод. Здесь я хочу найти ветку, которая была фактически нажата/выписана. Меня интересует только его хозяин, если я не хочу ничего делать. else Мне нужен список нажатых файлов.

Сначала программа выглядит следующим образом:

head = repo.resolve(Constants.HEAD); 
     RevCommit commit = rw.parseCommit(head); 

     PersonIdent committerIdent = commit.getCommitterIdent(); 
     sCommitter = committerIdent.getName(); 

     String sBranch = "?"; 

     for (Map.Entry<String, Ref> e : repo.getAllRefs().entrySet()) { 
      if (e.getKey().startsWith(Constants.R_HEADS)) { 
       Ref ref = e.getValue(); 
       if (rw.isMergedInto(commit, rw.parseCommit(ref.getObjectId()))) { 
        sTemp = ref.getName(); 

        int i = sTemp.lastIndexOf('/'); 
        if (i == -1) 
         continue; 

        sBranch = sTemp.substring(i + 1); 

        System.out.println("Ref " + sBranch 
          + " <contains> " + commit); 

        if (sBranch.equalsIgnoreCase("master")) { 
         break; 
        } else { 
         return; 
        } 
       } 
      } 
     } 

     RevCommit parent = rw.parseCommit(commit.getParent(0).getId()); 
     DiffFormatter df = new DiffFormatter(
       DisabledOutputStream.INSTANCE); 
     df.setRepository(repo); 
     df.setDiffComparator(RawTextComparator.DEFAULT); 
     df.setDetectRenames(true); 
     List<DiffEntry> diffs = df.scan(parent.getTree(), 
       commit.getTree()); 
     for (DiffEntry diff : diffs) { 
      sTemp = diff.getNewPath(); 
      pushedObjects.add(sTemp); 
     } 

сейчас .. это работает до тех пор, как рабочий процесс в затмении просто «мастер фотографии» «тянуть» «сливать ветвь» «толчок»

любой другой заказ, кажется, возиться с порядком ветвей в наборе, и он натыкается на это «другой»:

if (sBranch.equalsIgnoreCase("master")) { 
     break; 
} else { 
     return; 
} 

вопрос: есть ли способ eaasy выбрать правильную ветку?

+0

Во-первых, вы не можете предположить, что неупорядоченный набор будет поддерживать любой порядок (поэтому он неупорядочен). И, во-вторых, вы не можете предположить, что есть ветвь, называемая «хозяин» (хотя это обычно так). – m0skit0

+0

Я должен предположить, что есть филиал под названием master, он является стандартным в нашей компании и должен быть там. но вы правы, нет порядка, вот моя проблема. ATM Мне интересно, могу ли я получить последнюю фиксацию с помощью команды RevCommit commit = rw.parseCommit (repo.resolve (Constants.HEAD)), а затем просто заменить 'rw.isMergedInto (commit, rw.parseCommit (ref.getObjectId ())) 'с' commit.equals (rw.parseCommit (ref.getObjectId())) ' – Sirim

ответ

0

Хорошо, я думаю, что я могу просто смотреть на голову в комплекте:

e.getKey().startsWith(Constants.HEAD) 

, а затем разобрать branchname, который всегда должен быть филиал, который проверил, если (в моем случае), если это мастер, я счастлив.

Смежные вопросы