comparison rust/hg-core/src/dirstate/entry.rs @ 48051:98c0408324e6

dirstate: Pass the final DirstateItem to _rustmap.addfile() Now that the Python DirstateItem class wraps a Rust DirstateEntry value, use that value directly instead of converting through v1 data + 5 booleans. Also remove propogating the return value. None of the callers look at it, and it is always None. Differential Revision: https://phab.mercurial-scm.org/D11494
author Simon Sapin <simon.sapin@octobus.net>
date Thu, 23 Sep 2021 18:29:40 +0200
parents 3e69bef2031a
children 060cd909439f
comparison
equal deleted inserted replaced
48050:2ac0e6b23222 48051:98c0408324e6
81 mode, 81 mode,
82 size, 82 size,
83 mtime: 0, 83 mtime: 0,
84 } 84 }
85 } else { 85 } else {
86 Self { 86 Self::new_normal(mode, size, mtime)
87 flags: Flags::WDIR_TRACKED | Flags::P1_TRACKED,
88 mode,
89 size,
90 mtime,
91 }
92 } 87 }
93 } 88 }
94 EntryState::Added => Self::new_added(), 89 EntryState::Added => Self::new_added(),
95 EntryState::Removed => Self { 90 EntryState::Removed => Self {
96 flags: if size == SIZE_NON_NORMAL { 91 flags: if size == SIZE_NON_NORMAL {
109 }, 104 },
110 EntryState::Merged => Self::new_merged(), 105 EntryState::Merged => Self::new_merged(),
111 } 106 }
112 } 107 }
113 108
114 fn new_from_p2() -> Self { 109 pub fn new_from_p2() -> Self {
115 Self { 110 Self {
116 // might be missing P1_TRACKED 111 // might be missing P1_TRACKED
117 flags: Flags::WDIR_TRACKED | Flags::P2_TRACKED | Flags::CLEAN_P2, 112 flags: Flags::WDIR_TRACKED | Flags::P2_TRACKED | Flags::CLEAN_P2,
118 mode: 0, 113 mode: 0,
119 size: SIZE_FROM_OTHER_PARENT, 114 size: SIZE_FROM_OTHER_PARENT,
120 mtime: MTIME_UNSET, 115 mtime: MTIME_UNSET,
121 } 116 }
122 } 117 }
123 118
124 fn new_possibly_dirty() -> Self { 119 pub fn new_possibly_dirty() -> Self {
125 Self { 120 Self {
126 flags: Flags::WDIR_TRACKED 121 flags: Flags::WDIR_TRACKED
127 | Flags::P1_TRACKED 122 | Flags::P1_TRACKED
128 | Flags::POSSIBLY_DIRTY, 123 | Flags::POSSIBLY_DIRTY,
129 mode: 0, 124 mode: 0,
130 size: SIZE_NON_NORMAL, 125 size: SIZE_NON_NORMAL,
131 mtime: MTIME_UNSET, 126 mtime: MTIME_UNSET,
132 } 127 }
133 } 128 }
134 129
135 fn new_added() -> Self { 130 pub fn new_added() -> Self {
136 Self { 131 Self {
137 flags: Flags::WDIR_TRACKED, 132 flags: Flags::WDIR_TRACKED,
138 mode: 0, 133 mode: 0,
139 size: SIZE_NON_NORMAL, 134 size: SIZE_NON_NORMAL,
140 mtime: MTIME_UNSET, 135 mtime: MTIME_UNSET,
141 } 136 }
142 } 137 }
143 138
144 fn new_merged() -> Self { 139 pub fn new_merged() -> Self {
145 Self { 140 Self {
146 flags: Flags::WDIR_TRACKED 141 flags: Flags::WDIR_TRACKED
147 | Flags::P1_TRACKED // might not be true because of rename ? 142 | Flags::P1_TRACKED // might not be true because of rename ?
148 | Flags::P2_TRACKED // might not be true because of rename ? 143 | Flags::P2_TRACKED // might not be true because of rename ?
149 | Flags::MERGED, 144 | Flags::MERGED,
151 size: SIZE_NON_NORMAL, 146 size: SIZE_NON_NORMAL,
152 mtime: MTIME_UNSET, 147 mtime: MTIME_UNSET,
153 } 148 }
154 } 149 }
155 150
151 pub fn new_normal(mode: i32, size: i32, mtime: i32) -> Self {
152 Self {
153 flags: Flags::WDIR_TRACKED | Flags::P1_TRACKED,
154 mode,
155 size,
156 mtime,
157 }
158 }
159
156 /// Creates a new entry in "removed" state. 160 /// Creates a new entry in "removed" state.
157 /// 161 ///
158 /// `size` is expected to be zero, `SIZE_NON_NORMAL`, or 162 /// `size` is expected to be zero, `SIZE_NON_NORMAL`, or
159 /// `SIZE_FROM_OTHER_PARENT` 163 /// `SIZE_FROM_OTHER_PARENT`
160 pub fn new_removed(size: i32) -> Self { 164 pub fn new_removed(size: i32) -> Self {
161 Self::from_v1_data(EntryState::Removed, 0, size, 0) 165 Self::from_v1_data(EntryState::Removed, 0, size, 0)
162 }
163
164 /// TODO: refactor `DirstateMap::add_file` to not take a `DirstateEntry`
165 /// parameter and remove this constructor
166 pub fn new_for_add_file(mode: i32, size: i32, mtime: i32) -> Self {
167 // XXX Arbitrary default value since the value is determined later
168 let state = EntryState::Normal;
169 Self::from_v1_data(state, mode, size, mtime)
170 } 166 }
171 167
172 pub fn tracked(&self) -> bool { 168 pub fn tracked(&self) -> bool {
173 self.flags.contains(Flags::WDIR_TRACKED) 169 self.flags.contains(Flags::WDIR_TRACKED)
174 } 170 }