aboutsummaryrefslogtreecommitdiff
path: root/supergit/src/lib.rs
blob: 3e02d30eebde92b18699d93a1f0dfededc1880be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//! Strongly typed git repository explorer library
//!

mod branch;
pub use branch::{Branch, BranchCommit};

mod commit;
pub use commit::{CommitId, Commit};

pub(crate) mod raw;

use std::sync::atomic::{AtomicUsize, Ordering};

/// Represents a git repository with lazy data loading
pub struct Repository {}

impl Repository {
    pub fn open(path: &std::path::Path) -> Self {
        todo!()
    }
    
    /// Sync the repository with the backing git files
    ///
    /// This function can be invoked manually, but should be invoked
    /// basically every time your program expects changes to have
    /// happened.  Polling this function is not recommended.
    pub fn sync(&self) {
        
    }
}

/////////// IDs are created from the same pool to save on code size ////////////

const ID_CTR: AtomicUsize = AtomicUsize::new(0);

/// Get monotonically increasing IDs for objects
pub(crate) fn id() -> usize {
    ID_CTR.fetch_add(1, Ordering::Relaxed)
}