Hi all,
I am using a strategy taken from Gitblit [1] to commit to a bare
repo.
Essentially, this involves creating the blob object directly and
combining it with existing tree objects [2].
This works fine but I'd like to avoid re-creating the DirCache
for every new insertion. Could I just keep the DirCache and modify
it with DirCacheEditor?
If yes, how would the PathEdit object(s) look like for "insert or
replace"?
Br, Max
[1]
https://github.com/gitblit/gitblit/blob/a13f07850fccfb67c14737f1e09942e31023da66/src/main/java/com/gitblit/tickets/BranchTicketService.java#L309
[2]
DirCache newIndex = DirCache.newInCore();
DirCacheBuilder builder = newIndex.builder();
...
DirCacheEntry idIndexEntry = new DirCacheEntry(file)
idIndexEntry.setObjectId(
//create blob object from file to be referenced by the index
inserter.insert(org.eclipse.jgit.lib.Constants.OBJ_BLOB, content.getBytes("UTF-8")));
builder.add(idIndexEntry);
...
for (DirCacheEntry entry : JGitUtils.getTreeEntries(db, "refs/heads/master", ignorePaths)) {
builder.add(entry);
}
...
ObjectInserter odi = db.newObjectInserter();
ObjectId indexTreeId = index.writeTree(odi);