1

上記のロジックを実装して、自分のファイルのみを含む新しいコミット (親なし) を作成しました。リポジトリでのコミットは、CommitCommand commit = git.commit();

しかし、特定のファイルのログ、更新/改訂された回数を取得できず、取得するたびConstants.HEADにnullになります。

どんな助けでも大きな利点になります。

        Git git = jGitUtil.openRepo();
    Repository repository = git.getRepository();

    ObjectInserter repoInserter = repository.newObjectInserter();
    ObjectId commitId = null;
    try
    {
        byte[] fileBytes= FileUtils.readFileToByteArray(sourceFile);

        // Add a blob to the repository
        ObjectId blobId = repoInserter.insert(org.eclipse.jgit.lib.Constants.OBJ_BLOB, fileBytes);
        // Create a tree that contains the blob as file "hello.txt"
        TreeFormatter treeFormatter = new TreeFormatter();
        treeFormatter.append(actualFileName, FileMode.REGULAR_FILE, blobId);

        ObjectId treeId = treeFormatter.insertTo(repoInserter);

        System.out.println("File comment : " + relativePath + PortalConstants.FILESEPARATOR + actualFileName + PortalConstants.EP_DELIMETER + userComments);

        // Create a commit that contains this tree
        CommitBuilder commit = new CommitBuilder();
        PersonIdent ident = new PersonIdent(user.getFirstName(), user.getUserId());
        commit.setCommitter(ident);
        commit.setAuthor(ident);
        commit.setMessage(relativePath + PortalConstants.FILESEPARATOR + actualFileName + PortalConstants.EP_DELIMETER + userComments);
        commit.setTreeId(treeId);

        commitId = repoInserter.insert(commit);
        System.out.println(" commitId : " + commitId.getName());

        repoInserter.flush();
        System.out.println("Flush Done");
    }catch(IOException  ioe){
        log.logError(StackTraceUtil.getStackTrace(ioe));
        System.out.println(StackTraceUtil.getStackTrace(ioe));
    }
    finally
    {
        repoInserter.release();
    }
    return commitId.getName();
}
4

2 に答える 2

0

おそらく、自分で実装しようとする代わりに、Add FileCommit Fileの磁器コマンドを使用するでしょう。次に、次のような方法でログを取得できるはずです。

    Iterable<RevCommit> logs = new Git(repository).log()
        .all()
        .call();
    for(RevCommit rev : logs) {
        System.out.println("Commit: " + rev + " " + rev.getName() + " " + rev.getId().getName());
    }

commit-id に基づいて追加情報を取得できる場所。

これも新しいスニペットShow Logとして追加しました

于 2013-10-28T07:42:09.140 に答える