From 70a660e2f5aed6fe270e2bba56508899ecd81f8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20Val=C3=A9rio?= Date: Wed, 2 Dec 2020 23:38:22 +0000 Subject: [PATCH] step fifty eight: download remote ref values --- src/remote.rs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/remote.rs b/src/remote.rs index b4ddeeb..0ace815 100644 --- a/src/remote.rs +++ b/src/remote.rs @@ -3,10 +3,24 @@ use std::collections::HashMap; #[path = "data.rs"] mod data; +static REMOTE_REFS_BASE: &'static str = "refs/heads/"; +static LOCAL_REFS_BASE: &'static str = "refs/remote/"; + pub fn fetch(path: String) { - println!("Will fetch the following refs:"); - for (refname, _) in get_remote_refs(path, "refs/heads").iter() { - println!("- {}", refname); + // Get refs from server + let refs = get_remote_refs(path, REMOTE_REFS_BASE); + + // Update local refs to match server + for (remote_name, value) in refs.iter() { + let refname = remote_name.trim_start_matches(REMOTE_REFS_BASE); + data::update_ref( + format!("{}/{}", LOCAL_REFS_BASE, refname), + data::RefValue { + symbolic: false, + value: value.clone(), + }, + true, + ) } }