1use objects::object::StateId;
5
6#[derive(Clone, Copy, Debug, Eq, PartialEq)]
7pub enum MergeRelationKind {
8 AlreadyUpToDate,
9 FastForward,
10 AlreadyIntegrated,
11 CleanApply,
12 Conflicted,
13}
14
15#[derive(Clone, Debug)]
16pub struct MergeRelation {
17 kind: MergeRelationKind,
18 merge_base_id: Option<StateId>,
19 conflict_count: usize,
20}
21
22impl MergeRelation {
23 pub fn new(
24 kind: MergeRelationKind,
25 _current_state_id: StateId,
26 _target_state_id: StateId,
27 merge_base_id: Option<StateId>,
28 conflict_count: usize,
29 ) -> Self {
30 Self {
31 kind,
32 merge_base_id,
33 conflict_count,
34 }
35 }
36
37 pub fn kind(&self) -> MergeRelationKind {
38 self.kind
39 }
40
41 pub fn merge_base_id(&self) -> Option<StateId> {
42 self.merge_base_id
43 }
44
45 pub fn conflict_count(&self) -> usize {
46 self.conflict_count
47 }
48
49 pub fn as_json_value(&self) -> &'static str {
50 match self.kind {
51 MergeRelationKind::AlreadyUpToDate => "already_up_to_date",
52 MergeRelationKind::FastForward => "fast_forward",
53 MergeRelationKind::AlreadyIntegrated => "already_integrated",
54 MergeRelationKind::CleanApply => "clean_apply",
55 MergeRelationKind::Conflicted => "path_conflicts",
56 }
57 }
58}