pub enum MergeConflictKind {
Content {
add_add: bool,
},
ModifyDelete {
deleted_in: String,
modified_in: String,
},
RenameContent {
old_path: Vec<u8>,
},
RenameRenameTwoToOne {
ours_path: Vec<u8>,
theirs_path: Vec<u8>,
},
RenameRenameOneToTwo {
old_path: Vec<u8>,
ours_path: Vec<u8>,
theirs_path: Vec<u8>,
ours_label: String,
theirs_label: String,
},
RenameRenameOneToTwoStage,
DirRenameSplit {
source_dir: Vec<u8>,
},
RenameDelete {
old_path: Vec<u8>,
renamed_in: String,
deleted_in: String,
},
FileDirectory {
original_path: Vec<u8>,
moved_from: String,
},
DirRenameLocation {
old_path: Vec<u8>,
renamed_from: Option<Vec<u8>>,
added_in: String,
dir_renamed_in: String,
},
DirRenameImplicitCollision {
sources: Vec<Vec<u8>>,
},
}Expand description
The kind of conflict recorded for a path, used to render the stable conflict-type token and human message.
Variants§
Content
Both sides changed the file content differently (or both added it with differing content — an add/add).
ModifyDelete
The file was deleted on one side and modified on the other.
Fields
RenameContent
A file renamed on one side, with a content conflict against the other side’s change at the destination.
RenameRenameTwoToOne
Two paths were renamed to the same destination, producing a rename/rename(2to1) conflict.
Fields
RenameRenameOneToTwo
One source path was renamed to different destinations on each side, producing a rename/rename(1to2) conflict.
Fields
RenameRenameOneToTwoStage
An auxiliary higher-stage entry for a rename/rename(1to2) conflict. The
user-facing message is emitted by [RenameRenameOneToTwo].
DirRenameSplit
A directory was split evenly across multiple destinations, so no directory rename could be applied for paths the other side left there.
RenameDelete
A file renamed on one side whose source was deleted on the other side.
Fields
FileDirectory
A file collides with a directory at the same path in the merged result:
the directory wins at the original path and the file is moved aside to
path~<branch> (merge-ort’s D/F conflict, unique_path). git emits
CONFLICT (file/directory): directory in the way of <old> from <branch>; moving it to <new> instead.
Fields
DirRenameLocation
A path was added/renamed under a directory the other side renamed, so the
merge silently moved it into the renamed directory but, in
merge.directoryRenames=conflict mode, flags it for the user to confirm.
git emits CONFLICT (file location): ... suggesting it should perhaps be moved to <new_path>. The tree still contains the re-homed content.
Fields
old_path: Vec<u8>The pre-re-home path (old_path in git’s message): where the side
placed the file before directory-rename detection moved it.
DirRenameImplicitCollision
A directory rename would have moved one or more paths onto this path, but
it is already occupied (a file/dir in the way) or several sources map
here. git emits CONFLICT (implicit dir rename): Existing file/dir at <path> in the way of implicit directory rename(s) putting the following path(s) there: <sources>. The path keeps its original content; the
re-homed sources are left where they were.
Trait Implementations§
Source§impl Clone for MergeConflictKind
impl Clone for MergeConflictKind
Source§fn clone(&self) -> MergeConflictKind
fn clone(&self) -> MergeConflictKind
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MergeConflictKind
impl Debug for MergeConflictKind
impl Eq for MergeConflictKind
Source§impl PartialEq for MergeConflictKind
impl PartialEq for MergeConflictKind
Source§fn eq(&self, other: &MergeConflictKind) -> bool
fn eq(&self, other: &MergeConflictKind) -> bool
self and other values to be equal, and is used by ==.