}
    pub async fn download_changelist_nocache(
        &mut self,
        from: u64,
        paths: &[String],
        v: &mut Vec<Hash>,
    ) -> Result<HashSet<Position<Hash>>, anyhow::Error> {
        let f = |v: &mut Vec<Hash>, _n, h, _m| {
            debug!("no cache: {:?}", h);
            Ok(v.push(h))
        };
        let r = match *self {
            RemoteRepo::Local(ref mut l) => l.download_changelist(f, v, from, paths)?,
            RemoteRepo::Ssh(ref mut s) => s.download_changelist(f, v, from, paths).await?,
            RemoteRepo::Http(ref h) => h.download_changelist(f, v, from, paths).await?,
            RemoteRepo::LocalChannel(_) => HashSet::new(),
            RemoteRepo::None => unreachable!(),
        };
        Ok(r)