public class StageBuilder extends Object
Constructor and Description |
---|
StageBuilder(String txnStageNamespace,
ObjectId txnId)
Construct a stage builder for a transaction.
|
Modifier and Type | Method and Description |
---|---|
List<ReceiveCommand> |
makeStageList(Repository git,
ObjectId oldTree,
ObjectId newTree)
Compare two RefTrees and return commands to stage new objects.
|
List<ReceiveCommand> |
makeStageList(Set<ObjectId> newObjs,
Repository git,
ObjectInserter inserter)
Construct a set of commands to stage objects on a replica.
|
public List<ReceiveCommand> makeStageList(Repository git, ObjectId oldTree, ObjectId newTree) throws IOException
This method ignores the lineage between the two RefTrees and does a straight diff on the two trees. New objects will be staged. The diff strategy is useful to catch-up a lagging replica, without sending every intermediate step. This may mean the replica does not have the same object set as other replicas if there are rewinds or branch deletes.
git
- source repository to read oldTree
and newTree
from.oldTree
- accepted RefTree on the replica (refs/txn/accepted
).
Use ObjectId.zeroId()
if the
remote does not have any ref tree, e.g. a new replica catching
up.newTree
- RefTree being sent to the replica. The trees will be compared."refs/txn/stage/..."
references on replicas anchoring new objects into the repository
while a transaction gains consensus.IOException
- git
cannot be accessed to compare oldTree
and
newTree
to build the object set.public List<ReceiveCommand> makeStageList(Set<ObjectId> newObjs, @Nullable Repository git, @Nullable ObjectInserter inserter) throws IOException
newObjs
- objects to send to a replica.git
- local repository to read source objects from. Required to
perform minification of newObjs
.inserter
- inserter to write temporary commit objects during minification
if many new branches are created by newObjs
."refs/txn/stage/..."
references on replicas anchoring newObjs
into the
repository while a transaction gains consensus.IOException
- git
cannot be accessed to perform minification of
newObjs
.Copyright © 2019 Eclipse JGit Project. All rights reserved.