Store the current channel in the pristine

[?]
Jun 2, 2021, 12:18 PM
5OGOE4VWS5AIG4U2UYLLIGA3HY6UB7SNQOSESHNXBLET3VQXFBZAC

Dependencies

  • [2] GUL4M5FI Cleanup and formatting
  • [3] QL6K2ZM3 Tags
  • [4] HMMMKONL Fixing alive vertices
  • [5] BNPSVXIC Friendlier progress bars
  • [6] 5BRU2RRW Cleanup (debugging a crash related to trees/inodes)
  • [7] I7VL7VPZ Minor cleanup
  • [8] WKX5S4Z4 remove unneccesary explicit lifetimes
  • [9] SEWGHUHQ .pijul/config: simplify remotes and hooks
  • [10] WZVCLZKY address clippy lints
  • [11] QWD7UE76 push/pull: rename `channel` option
  • [12] PJ7T2VFL Do not hang on locked repositories
  • [13] JL4WKA5P Implement the Sanakirja concurrency model in a cross-process way
  • [14] MFTN7GBW Pre-tags cleanup + fast Sanakirja
  • [15] A3DMBJJA Upgrading the `git` subcommand to the latest Sanakirja and Libpijul
  • [16] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [17] K7JPP64S Faster error in unrecord when the change is not on the channel
  • [18] LYTVEPH3 Avoid cloning into an existing path
  • [19] 2RXOCWUW Making libpijul deterministic (and getting rid of `rand`)
  • [20] 2D7P2VKJ Change completions (where the whole progress bar story started)
  • [21] 5DVRL6MF Hard-unrecord
  • [22] BZSC7VMY address clippy lints
  • [23] TFK7CYFQ `pijul channel new` to create new, empty channels
  • [24] 5SLOJYHG Fixing the Git feature
  • [25] A6R6SGCP Fixing a panic in `pijul change`
  • [26] VLPIKNFS clone: make source remote the default
  • [27] L4JXJHWX pijul/*: reorganize imports and remove extern crate
  • [28] YN63NUZO Sanakirja 1.0
  • [29] PGERZ3KJ Channel renaming (also do not create a new channel when recording on a channel that doesn't exist)
  • [30] 76PCXGML Pushing to, and pulling from the local repository
  • [31] QMTANHVN Reset: only output changed files
  • [32] 3X4OWIU2 Sanakirja 1.2
  • [33] VMPAOJS2 Don't output after pushing to a local channel
  • [34] GHO6DWPI Refactoring iterators
  • [35] KWAGWB73 Adding extra dependencies from the config file
  • [36] VL7ZYKHB Running hooks through shell on Windows and Unix
  • [37] RXNT67OT Sanakirja version, and removing an unwrap
  • [38] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [39] 33SQMZYX New versions of dependencies
  • [40] QE64ATLZ Fixing asynchronicity problems in SSH
  • [41] ZBNKSYA6 Fixing a bus error when starting a transaction on a full disk
  • [42] VQPAUKBQ channel switch as an alias to reset
  • [43] I24UEJQL Various post-fire fixes
  • [44] ZHABNS3S Canonicalize all paths
  • [45] IUGP6ZGB Add support for ~/.config/pijul even on macos
  • [46] QV66H4YA Prevent --channel from being used with a single file in `pijul reset`
  • [47] A7NTQINQ pijul channel delete: error if channel doesn't exist
  • [48] Y7YAFMFF Fix path prefix striping on Windows.
  • [49] Y6EVFMTA Don't output files if they aren't in the current channel
  • [50] AAXP2534 Tags: completing the subcommand
  • [51] MU5GSJAW Partial push and pull (WARNING: breaks the existing protocol)
  • [52] UFCZKKLX Upgrading to the latest Sanakirja/Rand
  • [53] WQQJLPTX Fix the comparison between channels states when one is empty
  • [54] Q45QHPO4 Feedback on network stuff
  • [55] I52XSRUH Massive cleanup, and simplification
  • [56] TPEH2XNB 1.0.0-alpha.28, with Tokio 1.0
  • [57] V435QOJR Using path-slash to fix path issues on Windows
  • [58] B3QWIGDE Fixing the Git features with the latest Pijul (+ conflicts in Cargo.toml)
  • [59] K6GWUOD5 Styling progress bars
  • [60] 6DOXSHWG Cleanup, and version bump
  • [61] EEBKW7VT Keys and identities
  • [62] ENKQ3QZG Forward the exit status messages from the SSH background loop to the client (solving hangs)

Change contents

  • edit in pijul/src/repository.rs at line 23
    [3.22013][3.97:197](),[3.197][3.22013:22074](),[3.22013][3.22013:22074](),[3.22074][3.198:246](),[3.246][3.22262:22284](),[3.22262][3.22262:22284]()
    pub fn config_path(&self) -> PathBuf {
    self.path.join(DOT_DIR).join(CONFIG_FILE)
    }
    pub fn save_config(&self) -> Result<(), anyhow::Error> {
    self.config.save(&self.config_path())?;
    Ok(())
    }
  • edit in pijul/src/config.rs at line 93
    [3.91043][3.91043:91084]()
    pub current_channel: Option<String>,
  • edit in pijul/src/config.rs at line 160
    [3.1818][3.1818:1839](),[3.1839][3.91297:91314](),[3.91297][3.91297:91314](),[3.91314][3.1686:1906]()
    Ok(())
    }
    }
    impl Config {
    pub fn save(&self, path: &std::path::Path) -> Result<(), anyhow::Error> {
    let config = toml::to_string(self)?;
    let mut file = std::fs::File::create(path)?;
    file.write_all(config.as_bytes())?;
  • edit in pijul/src/config.rs at line 161
    [3.1921][3.1921:1928](),[3.1928][3.0:88](),[3.91314][3.0:88](),[3.80][3.91397:91434](),[3.88][3.91397:91434](),[3.91397][3.91397:91434](),[3.91434][3.89:160](),[3.160][3.91463:91528](),[3.91463][3.91463:91528](),[3.91528][3.161:198](),[3.198][3.91557:91574](),[3.91557][3.91557:91574](),[3.91574][3.199:242](),[3.242][3.83:100](),[3.91609][3.83:100](),[3.100][3.119:171](),[3.171][3.162:289](),[3.162][3.162:289](),[3.289][3.91609:91619](),[3.91609][3.91609:91619]()
    }
    pub fn get_current_channel<'a>(&'a self, alt: Option<&'a str>) -> (&'a str, bool) {
    if let Some(channel) = alt {
    (channel.as_ref(), alt == self.current_channel.as_deref())
    } else if let Some(ref channel) = self.current_channel {
    (channel.as_str(), true)
    } else {
    (crate::DEFAULT_CHANNEL, true)
    }
    }
    pub fn current_channel(&self) -> Option<&str> {
    if let Some(ref channel) = self.current_channel {
    Some(channel.as_str())
    } else {
    None
    }
  • edit in pijul/src/commands/unrecord.rs at line 38
    [3.96273][3.243:362]()
    let (channel_name, is_current_channel) =
    repo.config.get_current_channel(self.channel.as_deref());
  • replacement in pijul/src/commands/unrecord.rs at line 39
    [3.2010][3.2010:2089]()
    let channel = if let Some(channel) = txn.load_channel(channel_name)? {
    [3.2010]
    [3.2089]
    let cur = txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL);
    let channel_name = if let Some(ref c) = self.channel {
    c
    } else {
    cur
    };
    let is_current_channel = cur == channel_name;
    let channel = if let Some(channel) = txn.load_channel(&channel_name)? {
  • replacement in pijul/src/commands/tag.rs at line 61
    [3.92][3.1832:2018](),[3.1832][3.1832:2018]()
    let channel_name = repo
    .config
    .get_current_channel(channel.as_deref())
    .0
    .to_string();
    [3.92]
    [3.2018]
    let mut txn = repo.pristine.mut_txn_begin()?;
    let channel_name = if let Some(ref c) = channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    };
  • edit in pijul/src/commands/tag.rs at line 68
    [3.2073][3.2073:2135]()
    let mut txn = repo.pristine.mut_txn_begin()?;
  • edit in pijul/src/commands/tag.rs at line 120
    [3.268][2.225:313]()
    let channel_name = repo.config.get_current_channel(None).0.to_string();
  • edit in pijul/src/commands/tag.rs at line 121
    [3.494]
    [3.494]
    let channel_name = txn
    .current_channel()
    .unwrap_or(crate::DEFAULT_CHANNEL)
    .to_string();
  • replacement in pijul/src/commands/reset.rs at line 44
    [3.6482][3.6482:6651]()
    let config_path = repo.config_path();
    let mut config = repo.config;
    let (channel_name, _) = config.get_current_channel(self.channel.as_deref());
    [3.6482]
    [3.39]
    let channel_name = if let Some(ref c) = self.channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    };
  • replacement in pijul/src/commands/reset.rs at line 87
    [3.6929][3.6929:7060]()
    let (current_channel, _) = config.get_current_channel(None);
    if self.channel.as_deref() == Some(current_channel) {
    [3.6929]
    [3.7060]
    let current_channel = txn
    .read()
    .unwrap()
    .current_channel()
    .unwrap_or(crate::DEFAULT_CHANNEL)
    .to_string();
    if self.channel.as_deref() == Some(&current_channel) {
  • replacement in pijul/src/commands/reset.rs at line 103
    [3.7406][3.7406:7457]()
    txn.load_channel(current_channel)?
    [3.7406]
    [3.7457]
    txn.load_channel(&current_channel)?
  • replacement in pijul/src/commands/reset.rs at line 126
    [3.8215][3.8215:8307]()
    if self.channel.is_none() || self.channel.as_deref() == Some(current_channel) {
    [3.8215]
    [3.8307]
    if self.channel.is_none() || self.channel.as_deref() == Some(&current_channel) {
  • replacement in pijul/src/commands/reset.rs at line 149
    [3.9145][3.9145:9258]()
    let txn_ = txn.read().unwrap();
    if let Some(cur) = txn_.load_channel(current_channel)? {
    [3.9145]
    [3.9258]
    let mut txn_ = txn.write().unwrap();
    if let Some(cur) = txn_.load_channel(&current_channel)? {
  • replacement in pijul/src/commands/reset.rs at line 168
    [3.1227][3.9752:9891]()
    if self.channel.is_some() {
    config.current_channel = self.channel;
    config.save(&config_path)?;
    [3.1227]
    [3.9891]
    if let Some(ref c) = self.channel {
    txn_.set_current_channel(c)?
  • replacement in pijul/src/commands/record.rs at line 71
    [3.283][3.0:82](),[3.103598][3.0:82]()
    let channel = repo.config.get_current_channel(self.channel.as_deref()).0;
    [3.283]
    [3.82]
    let channel = if let Some(ref c) = self.channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    };
  • replacement in pijul/src/commands/pushpull.rs at line 126
    [3.114607][3.686:723](),[3.723][3.385:469](),[3.385][3.385:469]()
    let (channel_name, _) = repo
    .config
    .get_current_channel(self.from_channel.as_deref());
    [3.114607]
    [3.114690]
    let mut txn = repo.pristine.mut_txn_begin()?;
    let channel_name = if let Some(ref c) = self.from_channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    }
    .to_string();
  • replacement in pijul/src/commands/pushpull.rs at line 146
    [3.115226][3.115226:115255]()
    channel_name
    [3.115226]
    [3.115255]
    channel_name.as_str()
  • replacement in pijul/src/commands/pushpull.rs at line 151
    [3.115325][3.115325:115350]()
    channel_name
    [3.115325]
    [3.115350]
    channel_name.as_str()
  • edit in pijul/src/commands/pushpull.rs at line 162
    [3.115558][3.347:401]()
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/pushpull.rs at line 163
    [3.1806][3.115823:115888](),[3.7038][3.115823:115888](),[3.115823][3.115823:115888]()
    let channel = txn.open_or_create_channel(channel_name)?;
    [3.7038]
    [3.115888]
    let channel = txn.open_or_create_channel(&channel_name)?;
  • replacement in pijul/src/commands/pushpull.rs at line 284
    [3.456][3.724:846](),[3.117701][3.724:846](),[3.311][3.117784:117853](),[3.558][3.117784:117853](),[3.846][3.117784:117853](),[3.117784][3.117784:117853]()
    let (channel_name, is_current_channel) =
    repo.config.get_current_channel(self.to_channel.as_deref());
    let mut channel = txn.open_or_create_channel(channel_name)?;
    [3.456]
    [3.117853]
    let cur = txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL);
    let channel_name = if let Some(ref c) = self.from_channel {
    c
    } else {
    cur
    }
    .to_string();
    let is_current_channel = channel_name == cur;
    let mut channel = txn.open_or_create_channel(&channel_name)?;
  • replacement in pijul/src/commands/log.rs at line 34
    [3.135052][3.2162:2252]()
    let (channel_name, _) = repo.config.get_current_channel(self.channel.as_deref());
    [3.135052]
    [3.16944]
    let channel_name = if let Some(ref c) = self.channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    };
  • replacement in pijul/src/commands/init.rs at line 19
    [3.14139][3.14139:14198]()
    let mut repo = Repository::init(self.path).await?;
    [3.14139]
    [3.512]
    let repo = Repository::init(self.path).await?;
  • replacement in pijul/src/commands/init.rs at line 25
    [3.137067][3.137067:137154]()
    repo.config.current_channel = Some(channel_name);
    repo.save_config()?;
    [3.137067]
    [3.137154]
    txn.set_current_channel(&channel_name)?;
  • replacement in pijul/src/commands/fork.rs at line 35
    [3.168764][3.2253:2347](),[3.791][3.17285:17354](),[3.2347][3.17285:17354](),[3.168851][3.17285:17354]()
    let (channel_name, _) = repo.config.get_current_channel(self.channel.as_deref());
    if let Some(channel) = txn.load_channel(channel_name)? {
    [3.168764]
    [3.168919]
    let channel_name = if let Some(ref c) = self.channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    }
    .to_string();
    if let Some(channel) = txn.load_channel(&channel_name)? {
  • replacement in pijul/src/commands/diff.rs at line 9
    [3.2595][3.19915:19938]()
    use libpijul::MutTxnT;
    [3.2595]
    [3.2654]
    use libpijul::{MutTxnT, TxnT};
  • replacement in pijul/src/commands/diff.rs at line 40
    [3.174275][3.20013:20035](),[3.20035][3.2348:2449](),[3.174301][3.2348:2449]()
    let channel =
    txn.open_or_create_channel(repo.config.get_current_channel(self.channel.as_deref()).0)?;
    [3.174275]
    [3.174398]
    let channel = if let Some(ref c) = self.channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    }
    .to_string();
    let channel = txn.open_or_create_channel(&channel)?;
  • replacement in pijul/src/commands/debug.rs at line 23
    [3.5818][3.2450:2540]()
    let (channel_name, _) = repo.config.get_current_channel(self.channel.as_deref());
    [3.178176]
    [3.17729]
    let channel_name = if let Some(ref c) = self.channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    }
    .to_string();
  • replacement in pijul/src/commands/credit.rs at line 28
    [3.179239][3.13574:13643]()
    let mut repo = Repository::find_root(self.repo_path).await?;
    [3.179239]
    [3.179302]
    let repo = Repository::find_root(self.repo_path).await?;
  • replacement in pijul/src/commands/credit.rs at line 30
    [3.179348][3.2541:2631]()
    let (channel_name, _) = repo.config.get_current_channel(self.channel.as_deref());
    [3.179348]
    [3.18121]
    let channel_name = if let Some(ref c) = self.channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    };
  • edit in pijul/src/commands/credit.rs at line 40
    [3.179693][3.179693:179828]()
    if self.channel.is_some() {
    repo.config.current_channel = self.channel;
    repo.save_config()?;
    }
  • edit in pijul/src/commands/clone.rs at line 89
    [3.185601][3.5071:5072](),[3.5072][3.22473:22557]()
    let config_path = repo.config_path();
    let mut config = repo.config;
  • replacement in pijul/src/commands/clone.rs at line 103
    [3.534][3.22777:22833]()
    let txn = if let Ok(t) = Arc::try_unwrap(txn) {
    [3.534]
    [3.22833]
    let mut txn = if let Ok(t) = Arc::try_unwrap(txn) {
  • edit in pijul/src/commands/clone.rs at line 108
    [3.22924]
    [3.185778]
    txn.set_current_channel(&self.channel)?;
  • edit in pijul/src/commands/clone.rs at line 110
    [3.185801][3.22925:22978](),[3.22978][3.1742:1808](),[3.185859][3.1742:1808](),[3.1808][3.22979:23047](),[3.23047][3.1881:1965](),[3.1881][3.1881:1965](),[3.1965][3.23048:23103](),[3.23103][3.2025:2035](),[3.2025][3.2025:2035](),[3.2035][3.23104:23140]()
    config.current_channel = Some(self.channel);
    if let crate::remote::RemoteRepo::Local(ref l) = remote {
    config.default_remote = std::fs::canonicalize(&l.root)?
    .to_str()
    .map(|x| x.to_string());
    } else {
    config.default_remote = Some(self.remote);
    }
    config.save(&config_path)?;
  • edit in pijul/src/commands/channel.rs at line 43
    [3.16042][3.1067:1128](),[3.1067][3.1067:1128]()
    let current = repo.config.current_channel();
  • edit in pijul/src/commands/channel.rs at line 44
    [3.187789]
    [3.18688]
    let current = txn.current_channel().ok();
  • replacement in pijul/src/commands/channel.rs at line 58
    [3.13980][3.1196:1257](),[3.16120][3.1196:1257](),[3.1196][3.1196:1257]()
    let current = repo.config.current_channel();
    [3.13980]
    [3.1257]
    let mut txn = repo.pristine.mut_txn_begin()?;
    let current = txn.current_channel().ok();
  • edit in pijul/src/commands/channel.rs at line 63
    [3.1409][3.897:959]()
    let mut txn = repo.pristine.mut_txn_begin()?;
  • replacement in pijul/src/commands/channel.rs at line 79
    [3.188456][3.263:340](),[3.340][3.1809:1870](),[3.14054][3.1809:1870](),[3.16294][3.1809:1870](),[3.1809][3.1809:1870]()
    let mut repo = Repository::find_root(self.repo_path).await?;
    let current = repo.config.current_channel();
    [3.188456]
    [3.960]
    let repo = Repository::find_root(self.repo_path).await?;
  • edit in pijul/src/commands/channel.rs at line 81
    [3.1022]
    [3.188517]
    let current = txn.current_channel().ok();
  • edit in pijul/src/commands/channel.rs at line 95
    [3.189215]
    [3.189215]
    txn.set_current_channel(&to)?;
  • edit in pijul/src/commands/channel.rs at line 97
    [3.189246][3.341:446]()
    repo.config.current_channel = Some(to.to_string());
    repo.save_config()?;
  • replacement in pijul/src/commands/change.rs at line 29
    [3.190246][3.2632:2707](),[3.2707][3.19040:19123](),[3.70][3.19040:19123]()
    let (channel_name, _) = repo.config.get_current_channel(None);
    let channel = if let Some(channel) = txn.load_channel(channel_name)? {
    [3.190246]
    [3.152]
    let channel_name = txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL);
    let channel = if let Some(channel) = txn.load_channel(&channel_name)? {
  • edit in pijul/src/commands/archive.rs at line 107
    [3.16572][3.2708:2802]()
    let (channel_name, _) = repo.config.get_current_channel(self.channel.as_deref());
  • edit in pijul/src/commands/archive.rs at line 115
    [3.1085]
    [3.19221]
    let channel_name = if let Some(ref c) = self.channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    };
  • edit in pijul/src/commands/archive.rs at line 131
    [3.193869]
    [3.19299]
    let channel_name = if let Some(ref c) = self.channel {
    c
    } else {
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    };
  • replacement in pijul/src/commands/apply.rs at line 33
    [3.1140][3.2803:2922](),[3.194929][3.2803:2922]()
    let (channel_name, is_current_channel) =
    repo.config.get_current_channel(self.channel.as_deref());
    [3.1140]
    [3.5573]
    let cur = txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL);
    let channel_name = if let Some(ref c) = self.channel {
    c
    } else {
    cur
    };
    let is_current_channel = channel_name == cur;
  • replacement in libpijul/src/tag.rs at line 303
    [3.14987][3.14987:15081]()
    pub fn from_channel<W: std::io::Write, T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>>(
    [3.14987]
    [3.15081]
    pub fn from_channel<
    W: std::io::Write,
    T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage,
    >(
  • replacement in libpijul/src/tag.rs at line 352
    [3.16520][3.16520:16578]()
    T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>,
    [3.16520]
    [3.16578]
    T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage,
  • replacement in libpijul/src/tag.rs at line 472
    [3.20166][3.20166:20224]()
    T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>,
    [3.20166]
    [3.20224]
    T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage,
  • edit in libpijul/src/pristine/sanakirja.rs at line 143
    [3.61705]
    [3.533952]
    cur_channel: None,
  • edit in libpijul/src/pristine/sanakirja.rs at line 232
    [3.61848]
    [3.3609]
    cur_channel: None,
  • replacement in libpijul/src/pristine/sanakirja.rs at line 248
    [3.536988][3.60073:60151]()
    pub struct GenericTxn<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>> {
    [3.536988]
    [3.30333]
    pub struct GenericTxn<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage>
    {
  • edit in libpijul/src/pristine/sanakirja.rs at line 274
    [3.62010]
    [3.537859]
    cur_channel: Option<String>,
  • replacement in libpijul/src/pristine/sanakirja.rs at line 280
    [3.538066][3.60508:60600]()
    unsafe impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>> Send for GenericTxn<T> {}
    [3.538066]
    [3.538133]
    unsafe impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage> Send
    for GenericTxn<T>
    {
    }
  • replacement in libpijul/src/pristine/sanakirja.rs at line 352
    [3.542222][3.64639:64728]()
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>> GraphTxnT for GenericTxn<T> {
    [3.542222]
    [3.64728]
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage> GraphTxnT
    for GenericTxn<T>
    {
  • replacement in libpijul/src/pristine/sanakirja.rs at line 612
    [3.38214][3.68857:68946]()
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>> GraphIter for GenericTxn<T> {
    [3.38214]
    [3.68946]
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage> GraphIter
    for GenericTxn<T>
    {
  • replacement in libpijul/src/pristine/sanakirja.rs at line 677
    [3.39224][3.70501:70592]()
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>> ChannelTxnT for GenericTxn<T> {
    [3.39224]
    [3.39225]
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage> ChannelTxnT
    for GenericTxn<T>
    {
  • replacement in libpijul/src/pristine/sanakirja.rs at line 958
    [3.41051][3.74140:74228]()
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>> DepsTxnT for GenericTxn<T> {
    [3.41051]
    [3.41114]
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage> DepsTxnT
    for GenericTxn<T>
    {
  • replacement in libpijul/src/pristine/sanakirja.rs at line 1038
    [3.43211][3.74785:74873]()
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>> TreeTxnT for GenericTxn<T> {
    [3.43211]
    [3.43274]
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage> TreeTxnT
    for GenericTxn<T>
    {
  • replacement in libpijul/src/pristine/sanakirja.rs at line 1103
    [3.44001][3.76055:76130]()
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>> GenericTxn<T> {
    [3.44001]
    [3.44051]
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage> GenericTxn<T> {
  • replacement in libpijul/src/pristine/sanakirja.rs at line 1131
    [3.44460][3.76908:76992]()
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error>> TxnT for GenericTxn<T> {
    [3.44460]
    [3.44519]
    impl<T: ::sanakirja::LoadPage<Error = ::sanakirja::Error> + ::sanakirja::RootPage> TxnT
    for GenericTxn<T>
    {
  • edit in libpijul/src/pristine/sanakirja.rs at line 1419
    [3.556904]
    [3.558208]
    fn current_channel(&self) -> Result<&str, Self::GraphError> {
    if let Some(ref c) = self.cur_channel {
    Ok(c)
    } else {
    unsafe {
    let b = self.txn.root_page();
    let len = b[4096 - 256] as usize;
    if len == 0 {
    Ok("main")
    } else {
    let s = std::slice::from_raw_parts(b.as_ptr().add(4096 - 255), len);
    Ok(std::str::from_utf8(s).unwrap_or("main"))
    }
    }
    }
    }
  • edit in libpijul/src/pristine/sanakirja.rs at line 2024
    [3.571103]
    [3.571103]
    }
    }
    if let Some(ref cur) = self.cur_channel {
    unsafe {
    assert!(cur.len() < 256);
    let b = self.txn.root_page_mut();
    b[4096 - 256] = cur.len() as u8;
    std::ptr::copy(cur.as_ptr(), b.as_mut_ptr().add(4096 - 255), cur.len())
  • edit in libpijul/src/pristine/sanakirja.rs at line 2053
    [3.572050]
    [3.572050]
    Ok(())
    }
    fn set_current_channel(&mut self, cur: &str) -> Result<(), Self::GraphError> {
    self.cur_channel = Some(cur.to_string());
  • edit in libpijul/src/pristine/mod.rs at line 596
    [3.60116]
    [3.37267]
    fn current_channel(&self) -> Result<&str, Self::GraphError>;
  • edit in libpijul/src/pristine/mod.rs at line 1636
    [3.74976]
    [3.50088]
    fn set_current_channel(&mut self, cur: &str) -> Result<(), Self::GraphError>;
  • replacement in libpijul/Cargo.toml at line 98
    [3.1022980][3.5890:5946]()
    sanakirja = { version = "1.2", features = [ "crc32" ] }
    [3.1022980]
    [3.1023001]
    sanakirja = { version = "1.2.4", features = [ "crc32" ] }
  • replacement in Cargo.lock at line 1876
    [3.1072132][3.119150:119168]()
    version = "1.2.0"
    [3.1072132]
    [3.1072151]
    version = "1.2.4"
  • replacement in Cargo.lock at line 1878
    [3.1072216][3.119169:119247]()
    checksum = "d822992da34989ceda221b7cc3f99381da3130c8e90f393054b0ea4e80617265"
    [3.1072216]
    [3.1072294]
    checksum = "0bbeaf95d57d98d57cc2f7f58bc0028e2e5a49e446bedb0288ed755238b60c32"
  • replacement in Cargo.lock at line 2005
    [3.9624][3.9624:9642]()
    version = "1.3.0"
    [3.9624]
    [3.9642]
    version = "1.4.0"
  • replacement in Cargo.lock at line 2007
    [3.9707][3.9707:9785]()
    checksum = "16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6"
    [3.9707]
    [3.9785]
    checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"