4

我研究了从 Java 控制 Git 的可能性。我发现的是:

我尝试使用 Runtime 和 ProcessBuilder 为 git 编写自己的 Java 包装器,但是我遇到了进程线程的问题,一直在等待线程完成一些时间。

然后我研究了其他使用 API 的解决方案。首先我尝试了 JavaGit API,但我根本无法让它工作。

其次,我测试了 JGit API,它看起来很棒。但我很快发现我无法像使用 Java-wrapper 那样设置提交日期:

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

我下载了 JGit 源代码以查看是否可以实现它,但是阅读内容太多,我在 Github 上找不到任何问题跟踪器供 JGit 提出建议。

这里有人可以帮我吗?
或者告诉我在哪里可以写信向开发人员提出建议?

4

2 回答 2

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

请注意,正如我在这里提到的,测试类是 JGit 文档/插图的良好来源。

于 2013-10-27T08:41:02.630 回答
1

前段时间我遇到了类似的问题,因为 JavaGit 项目似乎有点死,只是分叉了它,解决了一些错误并让一些位恢复工作。

您可以在Swiss Army Java Git 页面上试用它,也很乐意为您提供帮助。

于 2013-10-28T14:43:16.877 回答