2016-12-02 8 views
-2
package modifiedlines; 

import edu.nyu.cs.javagit.api.DotGit; 
import edu.nyu.cs.javagit.api.JavaGitConfiguration; 
import edu.nyu.cs.javagit.api.JavaGitException; 
import edu.nyu.cs.javagit.api.WorkingTree; 
import edu.nyu.cs.javagit.api.commands.GitLogResponse; 
import edu.nyu.cs.javagit.api.commands.GitStatus; 
import edu.nyu.cs.javagit.api.commands.GitStatusOptions; 
import edu.nyu.cs.javagit.api.commands.GitStatusResponse; 
import java.io.File; 
import java.io.IOException; 
import java.util.List; 

/** 
* 
* @ 

    author aryan000 
    */ 

public class UseGit { 

    private static File repositoryDirectory; 
    private static DotGit dotGit; 

    public static void main(String s[]) throws JavaGitException, IOException 
    { 

     File f = new File("C:\\Program Files\\Git\\bin\\git.exe"); 

     if(!f.exists()) 
     { 
      System.out.println("does not exist"); 
     } 
     else 
      System.out.println("exists at " + f.getPath()); 
     JavaGitConfiguration.setGitPath("C:\\Program Files\\Git\\bin"); 
     System.out.println("Git version : " + JavaGitConfiguration.getGitVersion()); 
//  repositoryDirectory = new File("/home/aryan000/Desktop/retrofit"); 


     repositoryDirectory = new File("/home/aryan000/Desktop/changeprone/changeprone"); 

     System.out.println("Git Repository Location : " + repositoryDirectory.getAbsolutePath()); 

     //get the instance of the dotGit Object 
     dotGit = DotGit.getInstance(repositoryDirectory); 

//  System.out.println("checking what i have got "); 
//  GitLogResponse.CommitFile com ; 
//  com = (GitLogResponse.CommitFile) dotGit.getLog(); 
//   
//  System.out.println(com); 

     WorkingTree wt = dotGit.getWorkingTree(); 
     File workingTreePath = wt.getPath(); 
     GitStatus gitStatus = new GitStatus(); 
     GitStatusResponse status = gitStatus.status(workingTreePath); 

     System.out.println("status is : " + status); 

     File anotherFileDir = new File("/home/aryan000/Desktop/retrofit/test.txt"); 
     GitStatusOptions options = new GitStatusOptions(); 
     options.setOptOnly(true); 
     status = gitStatus.status(workingTreePath); 

     System.out.println("status is : " + status); 







     System.out.println("----- Print log to see our commit -----"); 
     for (GitLogResponse.Commit c : dotGit.getLog()) { 
      System.out.println("commit id is : " + c.getSha()); 
      System.out.println(" commit message is : " + c.getMessage()); 
      System.out.println(" author of the commit is : " + c.getAuthor()); 
      System.out.println(" date modified is : " + c.getDateString()); 
      System.out.println(" number of files changed is : " + c.getFiles()); 
      List<GitLogResponse.CommitFile> store = c.getFiles(); 
      if(store!=null) 
      System.out.println("the number of files changed is : " + store.size()); 
      System.out.println("list of files changed is : " + c.getFilesChanged()); 

      System.out.println("total number of additions : " + c.getLinesDeleted()); 
      System.out.println("total number of merger : " + c.getMergeDetails()); 


     } 

//  for(GitLogResponse.CommitFile c : dotGit.getLog()) 

    } 
} 

출력이 표시됩니다 :JavaGit API는 윈도우에서 작업하지

Exception in thread "main" edu.nyu.cs.javagit.api.JavaGitException: 100002: Invalid path to git specified. { path=[C:\Program Files\Git\bin] } 
    at edu.nyu.cs.javagit.api.JavaGitConfiguration.setGitPath(JavaGitConfiguration.java:220) 
    at edu.nyu.cs.javagit.api.JavaGitConfiguration.setGitPath(JavaGitConfiguration.java:247) 
    at modifiedlines.UseGit.main(UseGit.java:40) 
Caused by: edu.nyu.cs.javagit.api.JavaGitException: 100002: Invalid path to git specified. 
    at edu.nyu.cs.javagit.api.JavaGitConfiguration.determineGitVersion(JavaGitConfiguration.java:81) 
    at edu.nyu.cs.javagit.api.JavaGitConfiguration.setGitPath(JavaGitConfiguration.java:217) 
    ... 2 more 
Java Result: 1 

내 쿼리가 자바 프로그램을 사용하여 커밋 특정으로 인해 변경 자식 로그 및 파일을 찾는 방법입니다. 누구든지이 일에서 나를 도울 수 있습니까?

참조 :이 코드는 우분투에서 제대로 작동합니다. 즉, 경로 문제가 없습니다. 커밋 중에 파일을 변경할 수 없습니다. 그것은 나에게 null로 List를 준다.

+0

출력 결과가 잘못되었습니다. '잘못된 git 경로가 지정되었습니다. {경로 = [C : \ Program Files \ Git \ bin]}'Git 바이너리가 설치된 곳을 가리 키도록 경로를 변경하십시오. –

+0

@ Jim Garrison 거기에 내 자식 만 설치했습니다. 나는 당신이 git.exe 설치 폴더를 가리키고 있다고 가정합니다. 내가 틀렸다면. 제발 정정하십시오 –

+2

사용중인 클래스에 대한 Javadoc을 볼 수 없습니다. 'JavaGitConfiguration.setGitPath ("C : \\ Program Files \\ Git \\ bin")가 맞습니까? JavaGitConfiguration.setGitPath ("C : \\ Program Files \\ Git \\ bin \\ git.exe")'이어야합니까? –

답변

0

이 버그는 a long time ago으로 열리고 방금 수정되었습니다. give it a try을 사용하고 마스터 브랜치를 사용하십시오.