MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / import_line_index_seed

Method import_line_index_seed

atomic-repository/src/repository/insert.rs:555–714  ·  view source on GitHub ↗

Rebuild ordered line vertex metadata for a tracked file from the current view's graph. Git import uses this as a conservative repair path when its in-memory line index is missing for a modified file.

(
        &self,
        path: &str,
    )

Source from the content-addressed store, hash-verified

553 /// current view's graph. Git import uses this as a conservative repair
554 /// path when its in-memory line index is missing for a modified file.
555 pub fn import_line_index_seed(
556 &self,
557 path: &str,
558 ) -> Result<Option<ImportLineIndexSeed>, RepositoryError> {
559 let normalized = path.replace('\\', "/");
560 let txn = self
561 .pristine
562 .read_txn()
563 .map_err(|e| RepositoryError::Database(e.to_string()))?;
564
565 let view = txn
566 .get_view(&self.current_view)
567 .map_err(|e| RepositoryError::Database(e.to_string()))?
568 .ok_or_else(|| RepositoryError::ViewNotFound {
569 name: self.current_view.clone(),
570 })?;
571 let visible = collect_visible_change_ids_with_deps(&txn, &view)?;
572
573 let Some(inode) = txn
574 .get_inode(&normalized)
575 .map_err(|e| RepositoryError::Database(e.to_string()))?
576 else {
577 return Ok(None);
578 };
579 let Some(position) = txn
580 .inode_position(inode)
581 .map_err(|e| RepositoryError::Database(e.to_string()))?
582 else {
583 return Ok(None);
584 };
585 if !import_seed_node_visible(position.inode_node(), &visible) {
586 return Ok(None);
587 }
588 let Some(inode_change) = txn
589 .get_external(position.change)
590 .map_err(|e| RepositoryError::Database(e.to_string()))?
591 else {
592 return Ok(None);
593 };
594
595 let mut current = position.inode_node();
596 let mut visited = HashSet::new();
597 let mut lines = Vec::new();
598
599 loop {
600 if !visited.insert(current) {
601 return Ok(None);
602 }
603
604 let mut adj = txn
605 .init_inode_adj(
606 inode,
607 current,
608 EdgeFlags::BLOCK,
609 EdgeFlags::BLOCK | EdgeFlags::FOLDER,
610 )
611 .map_err(|e| RepositoryError::Database(e.to_string()))?;
612

Calls 15

import_seed_node_visibleFunction · 0.85
import_seed_edge_visibleFunction · 0.85
import_seed_is_deadFunction · 0.85
read_txnMethod · 0.80
inode_nodeMethod · 0.80
flagMethod · 0.80
is_noneMethod · 0.80
replaceMethod · 0.45
get_viewMethod · 0.45
cloneMethod · 0.45