pub enum Action {
Forward {
real_git: PathBuf,
arguments: Vec<OsString>,
overlay: Vec<(OsString, OsString)>,
stderr: String,
},
ForwardCoordinated {
forward: Box<CoordinatedForward>,
stderr: String,
},
ForwardSettled {
real_git: PathBuf,
arguments: Vec<OsString>,
overlay: Vec<(OsString, OsString)>,
copy: Box<CopyFacts>,
stderr: String,
},
ForwardPush {
forward: Box<PushForward>,
stderr: String,
},
ForwardAnnounced {
real_git: PathBuf,
arguments: Vec<OsString>,
overlay: Vec<(OsString, OsString)>,
announcement: String,
stderr: String,
},
Exit {
code: i32,
stdout: String,
stderr: String,
},
}Expand description
What:
What the executable must do for one invocation.
Vec<OsString> is an owned argument list;
Vec<(OsString, OsString)> is an
owned list of name/value pairs;
String is owned UTF-8 text.
Why:
The executable performs exactly one of these:
become Git,
run Git and then add text,
or print and exit.
In TS you’d write (pseudocode):
type Action = { kind: 'forward'; realGit: string; args: string[]; overlay: [string, string][]; stderr: string }
| { kind: 'exit'; code: number; stdout: string; stderr: string };Variants§
Forward
Become real Git.
Fields
ForwardCoordinated
Forward an index writer under its landing lock: coordinate, run Git as a child, release.
Fields
forward: Box<CoordinatedForward>What the coordinated run needs.
ForwardSettled
Forward a command that the linked-worktree copy settles: run Git as a child that carries the settlement lease, recover an interrupted copy first, copy the ignored state into the worktrees the command created.
Fields
ForwardPush
Forward a plain push as a child, so a push that lost a race to another session can be integrated: run Git with the caller’s streams, then merge in what landed on the remote and publish the merge.
Fields
forward: Box<PushForward>What the run and the integration need.
ForwardAnnounced
Run Git as a child for a top-level --version, -v, --help or -h,
and print the announcement after Git’s own answer when Git exited with status 0.
Fields
Exit
Stop without running the caller’s command.
Trait Implementations§
impl Eq for Action
impl StructuralPartialEq for Action
Auto Trait Implementations§
impl Freeze for Action
impl RefUnwindSafe for Action
impl Send for Action
impl Sync for Action
impl Unpin for Action
impl UnsafeUnpin for Action
impl UnwindSafe for Action
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more