diff --git a/src/commands/materialize.rs b/src/commands/materialize.rs index b9d815d..39a9f1f 100644 --- a/src/commands/materialize.rs +++ b/src/commands/materialize.rs @@ -766,7 +766,6 @@ fn update_db_from_tree( } } TreeValue::Set(set_members) => { - let mut visible: Vec = set_members.values().cloned().collect(); let key = (target_type.clone(), target_value.clone(), key_name.clone()); let tombstoned: BTreeSet = set_tombstones .iter() @@ -778,7 +777,11 @@ fn update_db_from_tree( } }) .collect(); - visible.retain(|member| !tombstoned.contains(&set_member_id(member))); + let mut visible: Vec = set_members + .values() + .filter(|member| !tombstoned.contains(&set_member_id(member))) + .cloned() + .collect(); visible.sort(); let json_val = serde_json::to_string(&visible)?; let existing = db.get(target_type, target_value, key_name)?; @@ -797,14 +800,14 @@ fn update_db_from_tree( } } - for ((target_type, target_value, key_name), tombstone) in tombstones { - if values.contains_key(&(target_type.clone(), target_value.clone(), key_name.clone())) { + for (key, tombstone) in tombstones { + if values.contains_key(key) { continue; } db.apply_tombstone( - target_type, - target_value, - key_name, + &key.0, + &key.1, + &key.2, &tombstone.email, tombstone.timestamp, )?; diff --git a/src/commands/serialize.rs b/src/commands/serialize.rs index a783c55..1f9c5a3 100644 --- a/src/commands/serialize.rs +++ b/src/commands/serialize.rs @@ -230,7 +230,7 @@ pub fn run(verbose: bool) -> Result<()> { .find_reference(&local_ref_name) .ok() .and_then(|r| r.peel_to_commit().ok()) - .map(|c| c.tree().unwrap()); + .and_then(|c| c.tree().ok()); if verbose { if let Some(ref tree) = existing_tree {