edit in libflorescence/src/repo.rs at line 150
edit in libflorescence/src/repo.rs at line 199
replacement in libflorescence/src/repo.rs at line 603
[9.142]→[10.696:875](∅→∅) − MsgIn::Pull { channel } => {
− let result = pull(&internal_state.path, &channel).await;
− let _ = msg_out_tx.send(MsgOut::Pulled { channel, result });
+ MsgIn::Pull { remote, channel } => {
+ let result = pull(&internal_state.path, &remote, &channel).await;
+ let _ = msg_out_tx.send(MsgOut::Pulled {
+ remote,
+ channel,
+ result,
+ });
replacement in libflorescence/src/repo.rs at line 1532
[9.392]→[10.1332:1411](∅→∅) − async fn pull(repo_path: &Path, channel_name: &str) -> Result<(), PullError> {
+ async fn pull(
+ repo_path: &Path,
+ remote_name: &str,
+ channel_name: &str,
+ ) -> Result<(), PullError> {
edit in libflorescence/src/repo.rs at line 1545
[19.760]→[19.760:829](∅→∅),
[19.829]→[9.765:790](∅→∅),
[9.765]→[9.765:790](∅→∅),
[9.790]→[10.1615:1663](∅→∅),
[10.1663]→[9.822:829](∅→∅),
[9.822]→[9.822:829](∅→∅) − let remote_name = if let Some(ref def) = config.default_remote {
− def
− } else {
− return Err(anyhow!("Missing remote"))?;
− };
edit in inflorescence_view/src/view.rs at line 47
+ SubMenuPullSelectRemote(String),
replacement in inflorescence_view/src/view.rs at line 72
[27.662]→[27.662:686](∅→∅) + remote: _,
+ selecting_remote,
replacement in inflorescence_view/src/view.rs at line 81
[27.963]→[27.963:995](∅→∅) + selecting_remote,
+ sub_menu,
+ );
+ }
+ },
+ model::SubMenu::Pull {
+ opt: Some(opt),
+ remote: _,
+ selecting_remote,
+ } => match opt {
+ model::PullOption::SelectingRemote => {
+ return pull_selecting_remote(
+ state,
+ *window_size,
+ allowed_actions,
+ report,
+ selecting_remote,
replacement in inflorescence_view/src/view.rs at line 103
[27.1136]→[27.1136:1171](∅→∅) + | model::SubMenu::Pull { opt: None, .. }
edit in inflorescence_view/src/view.rs at line 216
edit in inflorescence_view/src/view.rs at line 271
edit in inflorescence_view/src/view.rs at line 302
edit in inflorescence_view/src/view.rs at line 327
edit in inflorescence_view/src/view.rs at line 351
edit in inflorescence_view/src/view.rs at line 364
+ state: &'a model::State,
+ window_size: iced::Size,
+ allowed_actions: &'a [action::Binding],
+ report: &'a report::Container,
+ remote: &'a Option<String>,
+ sub_menu: &'a Option<model::SubMenu>,
+ ) -> Element<'a, Msg, Theme> {
+ view_selecting_remote(
+ state,
+ window_size,
+ allowed_actions,
+ report,
+ remote,
+ sub_menu,
+ Msg::SubMenuPushSelectRemote,
+ )
+ }
+
+ fn pull_selecting_remote<'a>(
edit in inflorescence_view/src/view.rs at line 390
+ view_selecting_remote(
+ state,
+ window_size,
+ allowed_actions,
+ report,
+ remote,
+ sub_menu,
+ Msg::SubMenuPullSelectRemote,
+ )
+ }
+
+ fn view_selecting_remote<'a>(
+ state: &'a model::State,
+ window_size: iced::Size,
+ allowed_actions: &'a [action::Binding],
+ report: &'a report::Container,
+ remote: &'a Option<String>,
+ sub_menu: &'a Option<model::SubMenu>,
+ on_select: impl FnOnce(String) -> Msg + Copy + 'static,
+ ) -> Element<'a, Msg, Theme> {
replacement in inflorescence_view/src/view.rs at line 417
[27.2908]→[27.2908:2987](∅→∅) − let mut cols = Vec::with_capacity(default.iter().len() + other.len());
+ let mut cols =
+ Vec::with_capacity(1 + default.iter().len() + other.len());
+ cols.push(view_header("Select remote:"));
replacement in inflorescence_view/src/view.rs at line 422
[27.3081]→[27.3081:3159](∅→∅) − .on_press_with(|| Msg::SubMenuPushSelectRemote(name.clone()))
+ .on_press_with(move || on_select(name.clone()))
edit in inflorescence_view/src/view.rs at line 443
edit in inflorescence_view/src/view.rs at line 476
+ force_highlight_actions: bool,
edit in inflorescence_view/src/view.rs at line 484
+ opt: _,
+ remote: Some(remote),
+ selecting_remote: _,
+ } => {
+ actions_inner =
+ actions_inner.push(el(text(format!("Remote: {remote}"))));
+ }
+ model::SubMenu::Pull {
edit in inflorescence_view/src/view.rs at line 494
replacement in inflorescence_view/src/view.rs at line 500
[27.4132]→[27.4132:4167](∅→∅) + | model::SubMenu::Pull { remote: None, .. }
edit in inflorescence_view/src/view.rs at line 509
+ let highlight_actions = force_highlight_actions || sub_menu.is_some();
replacement in inflorescence_view/src/view.rs at line 512
[13.20968]→[13.20968:21012](∅→∅) − .class(theme::Container::ActionsBg)
+ .class(if highlight_actions {
+ theme::Container::ActionsHighlightBg
+ } else {
+ theme::Container::ActionsBg
+ })
edit in inflorescence_view/src/view.rs at line 1900
+ let mut force_highlight_actions = false;
edit in inflorescence_view/src/view.rs at line 1904
+ force_highlight_actions = true;
edit in inflorescence_view/src/view.rs at line 1924
+ force_highlight_actions,
replacement in inflorescence_view/src/view.rs at line 2048
[10.4262]→[10.4262:4297](∅→∅) − Job::Pull { channel } => {
+ Job::Pull { remote, channel } => {
replacement in inflorescence_view/src/view.rs at line 2050
[10.4341]→[10.4341:4377](∅→∅) + el(text(format!("Pulling from remote {remote}")))
replacement in inflorescence_view/src/view.rs at line 2052
[10.4398]→[10.4398:4453](∅→∅) − el(text(format!("Pulling {channel}")))
+ el(text(format!(
+ "Pulling from remote {remote}, channel {channel}"
+ )))
edit in inflorescence_view/src/view/test.rs at line 329
+ selecting_remote: None,
edit in inflorescence_view/src/theme.rs at line 105
edit in inflorescence_view/src/theme.rs at line 282
+ Container::ActionsHighlightBg => container::Style {
+ background: Some(Background::Color(MAGENTA_DARKEST)),
+ ..default()
+ },
edit in inflorescence_model/src/model.rs at line 85
edit in inflorescence_model/src/model.rs at line 87
+ /// Set while selecting remote and discarded on cancel
+ selecting_remote: Option<String>,
replacement in inflorescence_model/src/model.rs at line 91
[27.4905]→[11.531958:531968](∅→∅),
[11.531958]→[11.531958:531968](∅→∅) + Pull {
+ /// Confirmed remote
+ remote: Option<String>,
+ /// Set while selecting remote and discarded on cancel
+ selecting_remote: Option<String>,
+ opt: Option<PullOption>,
+ },
edit in inflorescence_model/src/model.rs at line 119
+ #[derive(Clone, Debug, PartialEq, Eq, Hash)]
+ pub enum PullOption {
+ SelectingRemote,
+ }
+
replacement in inflorescence_model/src/model.rs at line 251
[10.5258]→[10.5258:5288](∅→∅) − Pull { channel: String },
+ Pull { remote: String, channel: String },
edit in inflorescence_model/src/action.rs at line 59
+ SubMenuPullOption(model::PullOption),
edit in inflorescence_model/src/action.rs at line 126
+ (SubMenuPullOption(left), SubMenuPullOption(right)) => left == right,
edit in inflorescence_model/src/action.rs at line 150
+ (SubMenuPullOption(_), _) => false,
replacement in inflorescence_model/src/action.rs at line 198
[11.532243]→[27.5357:5414](∅→∅) − model::SubMenu::Push { remote: _, opt } => {
+ model::SubMenu::Push {
+ remote: _,
+ selecting_remote: _,
+ opt,
+ } => {
edit in inflorescence_model/src/action.rs at line 220
+ select_remote(Some(FilteredMsg::SubMenuPushOption(
+ model::PushOption::SelectingRemote,
+ ))),
+ cancel(),
+ ]
+ } else {
+ vec![
+ confirm("confirm remote selection"),
+ down(),
+ up(),
+ cancel(),
+ ]
+ }
+ }
+ model::SubMenu::Pull {
+ remote: _,
+ selecting_remote: _,
+ opt,
+ } => {
+ if opt.is_none() {
+ vec![
replacement in inflorescence_model/src/action.rs at line 242
[27.6211]→[27.6211:6375](∅→∅),
[27.6375]→[18.44066:44116](∅→∅),
[18.44066]→[18.44066:44116](∅→∅),
[18.44116]→[27.6376:6630](∅→∅) − keys_str: "r",
− keys: ModKeys::One(ModKey {
− key: Key::Character("r".into()),
− mods: Mods::NONE,
− }),
− label: "select remote",
− msg: Some(FilteredMsg::SubMenuPushOption(
− model::PushOption::SelectingRemote,
− )),
+ keys_str: "Enter | S-f",
+ keys: ModKeys::Two(
+ ModKey {
+ key: Key::Named(Named::Enter),
+ mods: Mods::NONE,
+ },
+ ModKey {
+ key: Key::Character("f".into()),
+ mods: Mods::SHIFT,
+ },
+ ),
+ label: "confirm pull",
+ msg: Some(FilteredMsg::Confirm),
edit in inflorescence_model/src/action.rs at line 256
+ select_remote(Some(FilteredMsg::SubMenuPullOption(
+ model::PullOption::SelectingRemote,
+ ))),
edit in inflorescence_model/src/action.rs at line 269
[27.6961]→[11.532373:532461](∅→∅),
[18.44533]→[11.532373:532461](∅→∅),
[11.532373]→[11.532373:532461](∅→∅),
[11.532461]→[18.44534:45246](∅→∅) − }
− model::SubMenu::Pull => {
− // TODO add options
− vec![
− Binding {
− keys_str: "Enter | S-f",
− keys: ModKeys::Two(
− ModKey {
− key: Key::Named(Named::Enter),
− mods: Mods::NONE,
− },
− ModKey {
− key: Key::Character("f".into()),
− mods: Mods::SHIFT,
− },
− ),
− label: "confirm pull",
− msg: Some(FilteredMsg::Confirm),
− },
− cancel(),
− ]
edit in inflorescence_model/src/action.rs at line 791
+ selecting_remote: None,
replacement in inflorescence_model/src/action.rs at line 805
[16.1204]→[16.1204:1307](∅→∅) − msg: can_pull
− .then_some(FilteredMsg::EnterSubMenu(model::SubMenu::Pull)),
+ msg: can_pull.then_some(FilteredMsg::EnterSubMenu(
+ model::SubMenu::Pull {
+ remote: None,
+ selecting_remote: None,
+ opt: None,
+ },
+ )),
replacement in inflorescence_model/src/action.rs at line 1251
[10.6297]→[27.7165:7205](∅→∅) − model::Job::Pull { channel: c }
+ model::Job::Pull {
+ remote: _,
+ channel: c,
+ }
edit in inflorescence_model/src/action.rs at line 1694
+
+ fn select_remote(msg: Option<FilteredMsg>) -> Binding {
+ Binding {
+ keys_str: "r",
+ keys: ModKeys::One(ModKey {
+ key: Key::Character("r".into()),
+ mods: Mods::NONE,
+ }),
+ label: "select remote",
+ msg,
+ }
+ }
replacement in inflorescence/src/main.rs at line 471
[27.7374]→[27.7374:7447](∅→∅) − | action::FilteredMsg::SubMenuPushOption(_) => Task::none(),
+ | action::FilteredMsg::SubMenuPushOption(_)
+ | action::FilteredMsg::SubMenuPullOption(_) => Task::none(),
replacement in inflorescence/src/main.rs at line 493
[27.7487]→[27.7487:7552](∅→∅) − | view::Msg::SubMenuPushSelectRemote(_) => Task::none(),
+ | view::Msg::SubMenuPushSelectRemote(_)
+ | view::Msg::SubMenuPullSelectRemote(_) => Task::none(),
replacement in inflorescence/src/main.rs at line 961
[27.7605]→[22.34180:34227](∅→∅),
[22.34180]→[22.34180:34227](∅→∅) + | model::SubMenu::Pull { .. }
replacement in inflorescence/src/main.rs at line 1002
[27.7656]→[27.7656:7729](∅→∅) − | action::FilteredMsg::SubMenuPushOption(_) => Task::none(),
+ | action::FilteredMsg::SubMenuPushOption(_)
+ | action::FilteredMsg::SubMenuPullOption(_) => Task::none(),
replacement in inflorescence/src/main.rs at line 1020
[27.7769]→[27.7769:7834](∅→∅) − | view::Msg::SubMenuPushSelectRemote(_) => Task::none(),
+ | view::Msg::SubMenuPushSelectRemote(_)
+ | view::Msg::SubMenuPullSelectRemote(_) => Task::none(),
edit in inflorescence/src/main.rs at line 1156
+ *remote = Some(selection);
+ }
+ Task::none()
+ }
+ view::Msg::SubMenuPullSelectRemote(selection) => {
+ if let Some(model::SubMenu::Pull { remote, .. }) = sub_menu {
replacement in inflorescence/src/main.rs at line 1181
[21.5957]→[27.8061:8121](∅→∅) − Some(model::SubMenu::Push { remote, opt }) => {
+ Some(model::SubMenu::Push {
+ remote,
+ selecting_remote,
+ opt,
+ }) => {
replacement in inflorescence/src/main.rs at line 1188
[27.8216]→[27.8216:8264](∅→∅) − remote: remote.clone(),
+ remote: selecting_remote.clone(),
+ selecting_remote: None,
replacement in inflorescence/src/main.rs at line 1197
[27.8486]→[21.6029:6101](∅→∅),
[21.6029]→[21.6029:6101](∅→∅) − Some(model::SubMenu::Pull) => pull(state, model, sub_menu),
+ Some(model::SubMenu::Pull {
+ remote,
+ selecting_remote,
+ opt,
+ }) => {
+ if opt.is_some() {
+ *sub_menu = Some(model::SubMenu::Pull {
+ remote: selecting_remote.clone(),
+ selecting_remote: None,
+ opt: None,
+ });
+ Task::none()
+ } else {
+ pull(state, model, sub_menu, report, remote.clone())
+ }
+ }
replacement in inflorescence/src/main.rs at line 1349
[7.12836]→[27.8487:8529](∅→∅) − if let Some(sub) = sub_menu {
+ if let Some(sub) = sub_menu.take() {
replacement in inflorescence/src/main.rs at line 1351
[27.8557]→[27.8557:8622](∅→∅) − model::SubMenu::Push { remote: _, opt } => {
+ model::SubMenu::Push {
+ remote,
+ selecting_remote: _,
+ opt,
+ } => {
replacement in inflorescence/src/main.rs at line 1358
[27.8733]→[27.8733:8779](∅→∅) + remote,
+ selecting_remote: None,
+ opt: None,
+ });
+ return Task::none();
+ }
+ }
+ model::SubMenu::Pull {
+ remote,
+ selecting_remote: _,
+ opt,
+ } => {
+ if opt.is_some() {
+ *sub_menu = Some(model::SubMenu::Pull {
+ remote,
+ selecting_remote: None,
edit in inflorescence/src/main.rs at line 1376
replacement in inflorescence/src/main.rs at line 1379
[27.8902]→[27.8902:8993](∅→∅) − model::SubMenu::Pull
− | model::SubMenu::ResetChange
+ model::SubMenu::ResetChange
edit in inflorescence/src/main.rs at line 1385
[27.9238]→[27.9238:9239](∅→∅),
[27.9239]→[13.3618093:3618127](∅→∅),
[13.3618093]→[13.3618093:3618127](∅→∅) replacement in inflorescence/src/main.rs at line 1419
[27.9353]→[27.9353:9385](∅→∅) + remote: _,
+ selecting_remote,
replacement in inflorescence/src/main.rs at line 1427
[27.9660]→[27.9660:9716](∅→∅) − msg, remote, opt, repo,
+ msg,
+ selecting_remote,
+ opt,
+ repo,
+ );
+ }
+ }
+ model::SubMenu::Pull {
+ remote: _,
+ selecting_remote,
+ opt: Some(opt),
+ } => {
+ if let Some(ReadyState { repo, .. }) =
+ model::is_ready_mut(model)
+ {
+ return sub_menu_pull_opt_selection(
+ msg,
+ selecting_remote,
+ opt,
+ repo,
replacement in inflorescence/src/main.rs at line 1451
[27.9843]→[27.9843:9886](∅→∅) + | model::SubMenu::Pull { .. }
replacement in inflorescence/src/main.rs at line 1656
[27.10293]→[27.10293:10364](∅→∅) − if let Some(model::SubMenu::Push { opt, .. }) = sub_menu {
+ if let Some(model::SubMenu::Push {
+ opt,
+ remote,
+ selecting_remote,
+ }) = sub_menu
+ {
+ match &new_opt {
+ model::PushOption::SelectingRemote => {
+ *selecting_remote = remote.clone();
+ }
+ }
edit in inflorescence/src/main.rs at line 1671
+ action::FilteredMsg::SubMenuPullOption(new_opt) => {
+ if let Some(model::SubMenu::Pull {
+ opt,
+ remote,
+ selecting_remote,
+ }) = sub_menu
+ {
+ match &new_opt {
+ model::PullOption::SelectingRemote => {
+ *selecting_remote = remote.clone();
+ }
+ }
+ *opt = Some(new_opt);
+ }
+ Task::none()
+ }
replacement in inflorescence/src/main.rs at line 1849
[27.10646]→[27.10646:10709](∅→∅) − let names: Vec<_> = default.iter().chain(other).collect();
+ let remote_names: Vec<_> = default.iter().chain(other).collect();
replacement in inflorescence/src/main.rs at line 1851
[27.10725]→[27.10725:11431](∅→∅) − model::PushOption::SelectingRemote => match msg {
− selection::Msg::PressDir(dir) => match dir {
− selection::Dir::Down => {
− if let Some(current) = remote {
− let ix =
− names.iter().enumerate().find_map(|(ix, name)| {
− (*name == current).then_some(ix)
− });
− if let Some(ix) = ix
− && ix < names.len().saturating_sub(1)
− {
− *remote = names.into_iter().nth(ix + 1).cloned();
− return Task::none();
− }
+ model::PushOption::SelectingRemote => {
+ remote_selection(msg, remote, remote_names)
+ }
+ }
+ }
+
+ fn sub_menu_pull_opt_selection(
+ msg: selection::Msg,
+ remote: &mut Option<String>,
+ opt: &mut model::PullOption,
+ repo: &mut repo::State,
+ ) -> Task<Msg> {
+ let repo::Remotes { default, other } = &repo.remotes;
+ let remote_names: Vec<_> = default.iter().chain(other).collect();
+ match opt {
+ model::PullOption::SelectingRemote => {
+ remote_selection(msg, remote, remote_names)
+ }
+ }
+ }
+
+ fn remote_selection(
+ msg: selection::Msg,
+ remote: &mut Option<String>,
+ remote_names: Vec<&String>,
+ ) -> Task<Msg> {
+ match msg {
+ selection::Msg::PressDir(dir) => match dir {
+ selection::Dir::Down => {
+ if let Some(current) = remote {
+ let ix = remote_names.iter().enumerate().find_map(
+ |(ix, name)| (*name == current).then_some(ix),
+ );
+ if let Some(ix) = ix
+ && ix < remote_names.len().saturating_sub(1)
+ {
+ *remote = remote_names.into_iter().nth(ix + 1).cloned();
+ return Task::none();
edit in inflorescence/src/main.rs at line 1890
[27.11453]→[27.11453:11518](∅→∅) − *remote = names.into_iter().next().cloned();
replacement in inflorescence/src/main.rs at line 1891
[27.11536]→[27.11536:12097](∅→∅) − selection::Dir::Up => {
− if let Some(current) = remote {
− let ix =
− names.iter().enumerate().find_map(|(ix, name)| {
− (*name == current).then_some(ix)
− });
− if let Some(ix) = ix
− && ix > 0
− {
− *remote = names.into_iter().nth(ix - 1).cloned();
− return Task::none();
− }
+ *remote = remote_names.into_iter().next().cloned();
+ }
+ selection::Dir::Up => {
+ if let Some(current) = remote {
+ let ix = remote_names.iter().enumerate().find_map(
+ |(ix, name)| (*name == current).then_some(ix),
+ );
+ if let Some(ix) = ix
+ && ix > 0
+ {
+ *remote = remote_names.into_iter().nth(ix - 1).cloned();
+ return Task::none();
edit in inflorescence/src/main.rs at line 1904
[27.12119]→[27.12119:12189](∅→∅) − *remote = names.into_iter().next_back().cloned();
replacement in inflorescence/src/main.rs at line 1905
[27.12207]→[27.12207:12338](∅→∅) − selection::Dir::Right | selection::Dir::Left => {}
− },
− selection::Msg::AltPressDir(_) => {}
+ *remote = remote_names.into_iter().next_back().cloned();
+ }
+ selection::Dir::Right | selection::Dir::Left => {}
edit in inflorescence/src/main.rs at line 1909
+ selection::Msg::AltPressDir(_) => {}
edit in inflorescence/src/main.rs at line 1966
+ report: &mut report::Container,
+ remote: Option<String>,
replacement in inflorescence/src/main.rs at line 1970
[13.3619873]→[11.534900:535070](∅→∅),
[11.534900]→[11.534900:535070](∅→∅) − jobs.insert(model::Job::Pull {
− channel: repo.channel.clone(),
− });
− state
− .repo_tx_in
− .send(repo::MsgIn::Pull {
+ if let Some(remote) =
+ remote.clone().or_else(|| repo.remotes.default.clone())
+ {
+ jobs.insert(model::Job::Pull {
+ remote: remote.clone(),
replacement in inflorescence/src/main.rs at line 1976
[11.535117]→[11.535117:535155](∅→∅) + });
+ state
+ .repo_tx_in
+ .send(repo::MsgIn::Pull {
+ remote,
+ channel: repo.channel.clone(),
+ })
+ .unwrap();
+ } else {
+ report::show_err(
+ report,
+ "Cannot pull as there is no default remote configured."
+ .to_string(),
+ );
+ }
replacement in inflorescence/src/main.rs at line 2164
[26.49191]→[26.49191:49290](∅→∅) − repo,
− record_dichotomy,
− ..
replacement in inflorescence/src/main.rs at line 2167
[26.49398]→[26.49398:49823](∅→∅) − repo.remotes.default.as_ref().and_then(
− |default_remote| {
− model::get_record_dichotomy_mut(
− record_dichotomy,
− default_remote,
− &channel,
− )
− },
+ model::get_record_dichotomy_mut(
+ record_dichotomy,
+ &remote,
+ &channel,
replacement in inflorescence/src/main.rs at line 2187
[26.50577]→[14.25382:25460](∅→∅),
[14.25382]→[14.25382:25460](∅→∅) − report::show_info(report, format!("Pushed to {channel}"))
+ report::show_info(
+ report,
+ format!("Pushed to {remote}, channel {channel}"),
+ )
replacement in inflorescence/src/main.rs at line 2194
[14.25572]→[14.25572:25633](∅→∅) − format!("Nothing to push to {channel}"),
+ format!("Nothing to push to {remote}, channel {channel}"),
replacement in inflorescence/src/main.rs at line 2198
[20.1028]→[23.1673:1748](∅→∅) − "Failed to push to channel {channel} with {err:?}"
+ "Failed to push to {remote}, channel {channel} with {err:?}"
replacement in inflorescence/src/main.rs at line 2208
[14.25898]→[14.25898:25952](∅→∅) − repo::MsgOut::Pulled { channel, result } => {
+ repo::MsgOut::Pulled {
+ remote,
+ channel,
+ result,
+ } => {
replacement in inflorescence/src/main.rs at line 2216
[26.50623]→[26.50623:50722](∅→∅) − repo,
− record_dichotomy,
− ..
replacement in inflorescence/src/main.rs at line 2219
[26.50830]→[26.50830:51255](∅→∅) − repo.remotes.default.as_ref().and_then(
− |default_remote| {
− model::get_record_dichotomy_mut(
− record_dichotomy,
− default_remote,
− &channel,
− )
− },
+ model::get_record_dichotomy_mut(
+ record_dichotomy,
+ &remote,
+ &channel,
replacement in inflorescence/src/main.rs at line 2233
[26.51688]→[14.26007:26087](∅→∅),
[14.26007]→[14.26007:26087](∅→∅) − report::show_info(report, format!("Pulled from {channel}"))
+ report::show_info(
+ report,
+ format!("Pulled from {remote}, channel {channel}"),
+ )
replacement in inflorescence/src/main.rs at line 2240
[14.26199]→[14.26199:26262](∅→∅) − format!("Nothing to pull from {channel}"),
+ format!("Nothing to pull from {remote}, channel {channel}"),
replacement in inflorescence/src/main.rs at line 2244
[20.1263]→[23.1749:1826](∅→∅) − "Failed to pull from channel {channel} with {err:?}"
+ "Failed to pull from {remote}, channel {channel} with {err:?}"
replacement in inflorescence/src/main.rs at line 2250
[14.26433]→[14.26433:26491](∅→∅) − jobs.swap_remove(&Job::Pull { channel });
+ jobs.swap_remove(&Job::Pull { remote, channel });