Class NoteDbUpdateManager
- All Implemented Interfaces:
AutoCloseable
Instances are one-time-use. Handles updating both the change repo and the All-Users repo for any affected changes, with proper ordering.
To see the state that would be applied prior to executing the full sequence of updates, use
stage()
.
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(ChangeDraftUpdate draftUpdate) void
add
(ChangeUpdate update) Add an update to the list of updates to execute.com.google.common.collect.ImmutableListMultimap<ProjectChangeKey,
AttentionSetUpdate> void
close()
void
com.google.common.collect.ImmutableMultimap<Project.NameKey,
org.eclipse.jgit.lib.BatchRefUpdate> execute()
com.google.common.collect.ImmutableMultimap<Project.NameKey,
org.eclipse.jgit.lib.BatchRefUpdate> execute
(boolean dryrun) boolean
setBatchUpdateListeners
(com.google.common.collect.ImmutableList<BatchUpdateListener> batchUpdateListeners) setChangeRepo
(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.revwalk.RevWalk rw, org.eclipse.jgit.lib.ObjectInserter ins, ChainedReceiveCommands cmds) setPushCertificate
(org.eclipse.jgit.transport.PushCertificate pushCert) Set a push certificate for the push that originally triggered this NoteDb update.setRefLogIdent
(org.eclipse.jgit.lib.PersonIdent ident) setRefLogMessage
(String message)
-
Method Details
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
-
setChangeRepo
@CanIgnoreReturnValue public NoteDbUpdateManager setChangeRepo(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.revwalk.RevWalk rw, org.eclipse.jgit.lib.ObjectInserter ins, ChainedReceiveCommands cmds) -
setRefLogMessage
-
setRefLogIdent
@CanIgnoreReturnValue public NoteDbUpdateManager setRefLogIdent(org.eclipse.jgit.lib.PersonIdent ident) -
setPushCertificate
@CanIgnoreReturnValue public NoteDbUpdateManager setPushCertificate(org.eclipse.jgit.transport.PushCertificate pushCert) Set a push certificate for the push that originally triggered this NoteDb update.The pusher will not necessarily have specified any of the NoteDb refs explicitly, such as when processing a push to
refs/for/master
. That's fine; this is just passed to the underlyingBatchRefUpdate
, and the implementation decides what to do with it.The cert should be associated with the main repo. There is currently no way of associating a push cert with the
All-Users
repo, since it is not currently possible to update draft changes via push.- Parameters:
pushCert
- push certificate; may be null.- Returns:
- this
-
setBatchUpdateListeners
@CanIgnoreReturnValue public NoteDbUpdateManager setBatchUpdateListeners(com.google.common.collect.ImmutableList<BatchUpdateListener> batchUpdateListeners) -
isExecuted
public boolean isExecuted() -
add
Add an update to the list of updates to execute.Updates should only be added to the manager after all mutations have been made, as this method may eagerly access the update.
- Parameters:
update
- the update to add.
-
add
-
deleteChange
-
execute
@CanIgnoreReturnValue public com.google.common.collect.ImmutableMultimap<Project.NameKey,org.eclipse.jgit.lib.BatchRefUpdate> execute() throws IOException- Throws:
IOException
-
execute
@CanIgnoreReturnValue public com.google.common.collect.ImmutableMultimap<Project.NameKey,org.eclipse.jgit.lib.BatchRefUpdate> execute(boolean dryrun) throws IOException - Throws:
IOException
-
attentionSetUpdates
public com.google.common.collect.ImmutableListMultimap<ProjectChangeKey,AttentionSetUpdate> attentionSetUpdates()
-