Commit with specific date using JGit Eclipse

I have investigated the possibilities to control Git from Java.
What I have found is :

  • Using Runtime.getRuntime().exec("git command") – to have Java execute commands with git
  • Using JavaGit API (http://javagit.sourceforge.net/)
    or
    -Using Eclipse JGit API (http://www.jgit.org/)

I tried to write my own Java-wrapper for git with Runtime and ProcessBuilder, but I got problems with the process threads, was waiting for ever for the threads to finish some times.

  • Ignore .classpath and .project from Git
  • Failed, DIRTY_WORKTREE in eclipse, how to solve it?
  • Checking out multiple files of the same name in Git
  • Git, SVN and Eclipse workflow
  • Eclipse + EGit: clone project into workspace
  • Building Eclipse IDE from scratch - how to choose CDT over JDT?
  • I then looked into other solutions with APIs. First I tried JavaGit API, but I can’t get that to work at all.

    Second I tested JGit API, and it is looking great. But I soon find out that I could not set the commit date as I did with my Java-wrapper :

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

    I downloaded the JGit source-code to see if I could implement it, but it was too much to read in and I could not find any issue tracker on Github for JGit to make a suggestion.

    Can someone here help me do this?
    Or tell me where I can write to make a suggestion to the developers?

  • What files of my project should I put in repo
  • SVN to GIT migration failed using svn2git
  • How to git-pull a given patch set from Gerrit?
  • How to keep a second git remote repository for selected commits (states)
  • Unable to push file to git repository
  • git-svn cannot create a branch to follow SVN branching
  • 2 Solutions collect form web for “Commit with specific date using JGit Eclipse”

    Easy, as you mention, first download jgit:

    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
    

    Then search for a test (‘tst‘) which involves “authordate“:

    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);
    

    That means you can have a look at the org.eclipse.jgit.test.tst.org.eclipse/jgit/api.CommitCommandTest, function commitAmendWithoutAuthorShouldSetOriginalAuthorAndAuthorTime():

    You will see how to specify an author and an author date:

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

    Note, as I mention here, the test classes are a good source of documentation/illustration for JGit.

    I had a similar problem some time ago and because JavaGit project seemed a bit dead just forked it, solved some bugs and made some bits going back to work.

    You can try it at the Swiss Army Java Git page and also will be glad to help you.

    Git Baby is a git and github fan, let's start git clone.