2013-10-27 63 views
3

我調查了從Java控制Git的可能性。 我所發現的是:使用JGit提交具體日期Eclipse

我的命令試圖用Runtime和ProcessBuilder爲git編寫我自己的Java包裝器,但是我遇到了進程線程的問題,正在等待線程完成一些時間。

我再擡頭與API的其他解決方案。首先,我嘗試了JavaGit API,但是我根本無法完成這項工作。

其次我測試JGit API,它是尋找偉大。但我很快發現,我無法設置提交日期爲我和我的Java的包裝做了:

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

我下載了JGit源代碼,看看我是否能實現它,但它是太多閱讀,我無法找到Github上的任何問題跟蹤器爲JGit提出建議。

這裏有人能幫助我做到這一點?
或者告訴我在哪裏可以寫信給開發者一個建議?

回答

5

容易的,因爲你提到的,首先下載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 

然後搜索測試( 'tst'),其中涉及 「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); 

這意味着你可以有一個請看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(「...」)。你的方法有效,但我也使用:git.commit()。setCommitter(firstAuthor),在調用「call() - 方法」之前也改變提交日期。 –

1

我前一段時間也有類似的問題,因爲JavaGit項目顯得有點死只是分叉它,解決了一些錯誤,並取得了一定的位回去工作。

您可以在the Swiss Army Java Git page嘗試,也將很高興爲您提供幫助。