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 のソースコードをダウンロードして実装できるかどうかを確認しましたが、読み込むには多すぎて、JGit が提案するための課題トラッカーが Github で見つかりませんでした。

ここの誰かが私がこれを行うのを手伝ってくれますか?
または、開発者に提案するためにどこに書けばよいか教えてください。

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 に答える