2016-12-02 11 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 не работает на Windows,

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 

Мой запрос как найти GIT журналы и файлы, измененные в связи с конкретной фиксации с помощью программы Java. Может ли кто-нибудь помочь мне в этом.

См. Так: Этот код отлично работает в Ubuntu i.e. No Path проблема все еще я не могу получить файлы, измененные во время фиксации. Это дает мне список как нуль.

+0

Вывод сообщает вам, что не так: 'Неверный путь к git указанному. {path = [C: \ Program Files \ Git \ bin]}} Измените этот путь, чтобы указать, где установлены бинарные файлы Git. –

+0

@ Jim Garrison У меня есть только мой git. Я предполагаю, что вы имеете в виду папку установки 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, используйте мастер-ветку, пожалуйста, и дайте мне знать, если это сработает для вас.