Commit 1564db11fe291eb21b5f57a063deb482cedf323d

Carlos Martín Nieto 2011-08-07T14:02:04

Remove enum git_whn Instead, use flags inside the git_remote_head structure. Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>

diff --git a/include/git2/net.h b/include/git2/net.h
index c2260fc..7c49f80 100644
--- a/include/git2/net.h
+++ b/include/git2/net.h
@@ -48,18 +48,12 @@ GIT_BEGIN_DECL
 #define GIT_DIR_FETCH 0
 #define GIT_DIR_PUSH 1
 
-enum git_whn {
-	GIT_WHN_NONE,
-	GIT_WHN_HAVE,
-	GIT_WHN_WANT,
-};
-
 /**
  * Remote head description, given out on `ls` calls.
  */
 struct git_remote_head {
-	enum git_whn type;
-	int local; /** Exists locally */
+	int local:1, /* available locally */
+	    want:1; /* want to update */
 	git_oid oid;
 	git_oid loid;
 	char *name;
diff --git a/src/fetch.c b/src/fetch.c
index 7abc196..e00b2e3 100644
--- a/src/fetch.c
+++ b/src/fetch.c
@@ -34,17 +34,6 @@
 #include "refspec.h"
 #include "fetch.h"
 
-/*
- * Don't forget that this depends on the enum being correctly set
- */
-static int whn_cmp(const void *a, const void *b)
-{
-	git_remote_head *heada = (git_remote_head *) a;
-	git_remote_head *headb = (git_remote_head *) b;
-
-	return headb->type - heada->type;
-}
-
 static int filter_wants(git_remote *remote)
 {
 	git_vector list;
@@ -55,7 +44,7 @@ static int filter_wants(git_remote *remote)
 	int error;
 	unsigned int i;
 
-	error = git_vector_init(&list, 16, whn_cmp);
+	error = git_vector_init(&list, 16, NULL);
 	if (error < GIT_SUCCESS)
 		return error;
 
@@ -112,13 +101,12 @@ static int filter_wants(git_remote *remote)
 		 * to the list, storing the local oid for that branch so we
 		 * don't have to look for it again.
 		 */
-		head->type = GIT_WHN_WANT;
+		head->want = 1;
 		error = git_vector_insert(&list, head);
 		if (error < GIT_SUCCESS)
 			goto cleanup;
 	}
 
-	git_vector_sort(&list);
 	remote->refs.len = list.length;
 	remote->refs.heads = (git_remote_head **) list.contents;
 
diff --git a/src/pkt.c b/src/pkt.c
index 12f1478..419fb9c 100644
--- a/src/pkt.c
+++ b/src/pkt.c
@@ -318,8 +318,8 @@ int git_pkt_send_wants(git_headarray *refs, git_transport_caps *caps, int fd)
 
 	for (; i < refs->len; ++i) {
 		head = refs->heads[i];
-		if (head->type != GIT_WHN_WANT)
-			continue; /* FIXME: return? refs shouldn't have any other type */
+		if (head->local)
+			continue;
 
 		git_oid_fmt(buf + STRLEN(WANT_PREFIX), &head->oid);
 		gitno_send(fd, buf, STRLEN(buf), 0);