2017-02-01 9 views
-1

私は新しく複製されたリポジトリのSHA-1を持っています。著者はこのSHA-1をインデントしたい。jGit内の特定のSHA-1のコミットを取得します

私はRevWalkを使用してリポジトリ全体を反復処理する必要がありますか?または、メソッドや、私がRevCommitやPersonIdentを持つ別のオブジェクトを取得するために使用できる他のコードがありますか?

public void authorInfoOf(Repository repo, AnyObjectId head) { 
    try { 
     try (RevWalk walk = new RevWalk(repo)) { 
      ObjectDatabase db = repo.getObjectDatabase(); 
      ObjectLoader k = repo.newObjectReader().open(head); 
      ObjectReader s; 
      // repo.newObjectReader().open(head); 
      ObjectStream st = k.openStream(); 
      // RevWalk rw2 = new RevWalk(k); 
      RevCommit commit = null;// walk.parseCommit(ref.getObjectId()); 

      PersonIdent authorIndent = commit.getAuthorIdent(); 
      System.out.println("\nCommit-Message: " + commit.getFullMessage() + " " + authorIndent.getEmailAddress()); 
     } 
    } catch (Exception e) { 
     System.out.println("Authir info of Anybject id Err " + e); 
     e.printStackTrace(); 
    } 
} 
+0

可能な複製を(のhttp:// stackoverflow.com/questions/25755475/how-to-obtain-the-revcommit-or-objectid-from-a-sha1-id-string-with-jgit) –

答えて

0

は、これが私の仕事:[?JGitとSHA1 ID文字列からRevCommitかのObjectIdを取得する方法]の

public RevCommit getCommit(String idString, Repository repository, Git git){ 
    try{ 

     ObjectId o1 = repository.resolve(idString); 
     if(o1 != null){ 
      try(RevWalk walk = new RevWalk(repository)) { 
        RevCommit commit = walk.parseCommit(o1); 
        PersonIdent ai = commit.getAuthorIdent(); 
        System.out.println("bbb >>" + ai.getEmailAddress() + "|" + ai.getTimeZone() + "|" + ai.getWhen() + ", ref :" + idString); 
        return commit; 
       } 
     }else{ 
      System.err.println("Could not get commit with SHA :" + idString); 
     } 
    }catch (Exception e) { 
     System.out.println("err :" + e); 
     e.printStackTrace(); 
    } 
    return null; 
} 
2

RevCommitは、Gitのリポジトリにコミット特定を表しています。私が試した何

。特定のオブジェクトid/SHA-1に対応するを取得するには、RevWalk::parseCommit()を使用してください。例えば

try(RevWalk walk = new RevWalk(repository)) { 
    RevCommit commit = walk.parseCommit(ref.getObjectId()); 
} 

parseCommitマッチングが所定ObjectIdのオブジェクトをコミット返します。また

ObjectId commitId = ObjectId.fromString("ab434..."); 

参照:上記の例でHow to obtain the RevCommit or ObjectId from a SHA1 ID string with JGit?

Refがオブジェクトを参照するために使用された

ObjectIdにSHA-1(文字列)に変換するために、ObjectId::fromString()使用id。 Refは、ブランチ、タグ、またはHEADのような特別な参照のようなオブジェクトIDへの名前付き参照を表します。 Repository :: exactRef()は、文字列をRefオブジェクトに解決するために使用できます。例えば

Ref headRef = repository.exactRef("HEAD"); 
+0

はい、頭を手に入れる方法を知っていますが、私はそれを使うことができますRef -1のようにSha-1によってCommitへの参照を取得するにはrepo1 = repo.exactRef( "0375381d0f467d55c832b50aca54ad16858baa8b"); - 私に大きな脂肪ヌルを与えます。 SHAを使用してリファレンスを取得するにはどうすればよいですか? – tgkprog

+0

@tgkprog編集された回答を参照してください。 –

関連する問題