2013-10-27 2 views
3

Java에서 Git 제어 가능성을 조사했습니다. 는 내가 발견 한 것은 :JGit Eclipse를 사용하여 특정 날짜로 커밋하기

I을 사용하여 자식

  • 로 명령을 실행하도록 Runtime과 ProcessBuilder를 사용하여 git 용 Java 래퍼를 작성하려고 시도했지만 프로세스 스레드에 문제가있어 스레드가 몇 번 완료되기를 기다리고있었습니다.

    그런 다음 API가 포함 된 다른 솔루션을 살펴 보았습니다. 먼저 JavaGit API를 사용해 보았지만 전혀 작동하지 않습니다.

    둘째, JGit API를 테스트 한 결과 훌륭했습니다. 그러나 나는 곧 내가 내 자바 래퍼처럼 내가 커밋 날짜를 설정할 수 없다는 것을 알아 :

    ProcessBuilder pb = new ProcessBuilder("git", "commit", "--date=" + "\"" + customDateString + "\"", "-m \"" + comment + "\""); 
    

    내가 그것을 구현할 수 있는지 확인하기 위해 JGit 소스 코드를 다운로드,하지만 너무 많은이었다 내가 JGit에 대한 제안을하기 위해 Github에서 어떤 이슈 트래커를 찾을 수 없었습니다.

    여기 누군가 나를 도와 줄 수 있습니까?
    개발자에게 제안하려면 어디에 쓸 수 있습니까? 당신이 언급으로

  • 답변

    5

    쉬운, 먼저 다운로드 jgit는 :

    C:\Users\VonC\prog\git\jgit>grep -nRHIi authordate *|grep tst 
    
    org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java:446:    final Date authorDate = new Date(1349621117000L); 
    

    당신이있을 수 있다는 것을 의미합니다 :

    C:\> cd C:\Users\VonC\prog\git\ 
    C:\Users\VonC\prog\git> git clone https://github.com/eclipse/jgit 
    C:\Users\VonC\prog\git> cd jgit 
    

    그런 다음 "authordate"를 포함하는 테스트 ('tst')를 검색 org.eclipse.jgit.test.tst.org.eclipse/jgit/api.CommitCommandTest보기, 기능 commitAmendWithoutAuthorShouldSetOriginalAuthorAndAuthorTime() :

    작성자를 지정하는 방법을 참조하십시오. 및 저자 날짜 :

    final Date authorDate = new Date(1349621117000L); 
    PersonIdent firstAuthor = new PersonIdent(authorName, authorEmail, 
        authorDate, TimeZone.getTimeZone("UTC")); 
    git.commit().setMessage("initial commit").setAuthor(firstAuthor).call(); 
    

    주, as I mention here는 테스트 클래스는 JGit에 대한 문서/그림의 좋은 소스입니다.

    +1

    고맙습니다. git.commit(). setDate ("...")와 같은 것을 찾으려면 논리가 잘못되었습니다. 당신의 메소드는 작동하지만, "call() - method"를 호출하기 전에 git.commit(). setCommitter (firstAuthor)를 사용하여 커밋 날짜를 변경하십시오. –

    1

    나는 약간의 시간 전에 비슷한 문제가 있었고, JavaGit 프로젝트가 조금씩 죽어 버린 것처럼 보였으므로 몇 가지 버그를 해결하고 다시 작동하도록 만들었다.

    the Swiss Army Java Git page에서 시도해 볼 수 있으며 기꺼이 도와 드리겠습니다.