summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2011-08-07 14:02:04 +0200
committerVicent Marti <tanoku@gmail.com>2011-08-18 02:34:09 +0200
commit1564db11fe291eb21b5f57a063deb482cedf323d (patch)
tree2b8657e5a92f8ece775f46753fdf2da3f6e998a2
parentade3c9bb88b0afb4b025cf92c74e17704c9bc4f4 (diff)
downloadlibgit2-1564db11fe291eb21b5f57a063deb482cedf323d.tar.gz
Remove enum git_whn
Instead, use flags inside the git_remote_head structure. Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
-rw-r--r--include/git2/net.h10
-rw-r--r--src/fetch.c16
-rw-r--r--src/pkt.c4
3 files changed, 6 insertions, 24 deletions
diff --git a/include/git2/net.h b/include/git2/net.h
index c2260fc3b..7c49f804b 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 7abc196e4..e00b2e31e 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 12f1478b8..419fb9cf0 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);