Git import: a deletion's dependencies need its file's graph built 73d592e763ab
The batched rendering leaves graphs deferred, and referenced_changes reads a file's graph to find who inserted the live atoms after a deleted one. The nodes a change deletes from are built before that. refs #25
- Author
- Andy McCall @andymccall <[email protected]>
- When
- · 2026-10-04 02:15 UTC
- Signature
- ✔ signed by Andy McCall
- Hash
73d592e763abec60d9d504caf0407322a8401fdf2fd9c4c8dc9aa5d26f1fd4ce- Depends on
- 2306a4d24779 79ab8528ff62 c3069537d7c5
- Depended on by
- nothing yet
- In bookmarks
- agents-in-readme bare-hashes carried-not-removed carry-identical doctor-trust identical-sides keyless-tags main merge-remote-bookmark only-help-103 paths-for-resolutions-and-amend push-notes show-stat subrepo-pin-state switch-says
- In tags
- v0.10.0 v0.11.0 v0.4.0 v0.4.1 v0.4.2 v0.4.3 v0.4.4 v0.4.5 v0.4.6 v0.5.0 v0.5.1 v0.6.0 v0.7.0 v0.8.0 v0.9.0
- Edits
- 1 atom, 0 tree operations, 1 file
Browse the tree at this change
modified crates/oxy-core/src/repo/git.rs +13 −0
| … | 1076 unchanged lines |
||
| 1077 | 1077 | }, |
|
| 1078 | 1078 | }; |
|
| 1079 | 1079 | let t = std::time::Instant::now(); |
|
| 1080 | + | // A deletion depends on whoever inserted the live atoms after |
|
| 1081 | + | // it, which only the file's graph knows: build the few the |
|
| 1082 | + | // batched rendering left deferred. |
|
| 1083 | + | let need: Vec<NodeId> = change |
|
| 1084 | + | .edits |
|
| 1085 | + | .iter() |
|
| 1086 | + | .filter(|e| matches!(e, Edit::Delete { .. })) |
|
| 1087 | + | .map(|e| e.node()) |
|
| 1088 | + | .filter(|n| !base.is_built(n)) |
|
| 1089 | + | .collect(); |
|
| 1090 | + | if !need.is_empty() { |
|
| 1091 | + | self.load_graphs_of(&mut base, &need)?; |
|
| 1092 | + | } |
|
| 1080 | 1093 | deps.extend(referenced_changes(&change, &base)); |
|
| 1081 | 1094 | crate::timing::add("store: referenced", t.elapsed()); |
|
| 1082 | 1095 | change.deps = deps.into_iter().collect(); |
|
| … | 484 unchanged lines |