remote-curl: move ref-parsing code up in file
The ref-parsing functions are static. Let's move them up in the file to be available to more functions, which will help us with later refactoring. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King committed
Feb 20, 2013 at 15:07 UTC
b8054bbee70620b57e11ed78716bf187071bc368
1 file changed
+59
-59
remote-curl.c
+59
-59
@@ -80,6 +80,65 @@ struct discovery {
80
};
81
static struct discovery *last_discovery;
82
83
+static struct ref *parse_git_refs(struct discovery *heads, int for_push)
84
+{
85
+ struct ref *list = NULL;
86
+ get_remote_heads(-1, heads->buf, heads->len, &list,
87
+ for_push ? REF_NORMAL : 0, NULL);
88
+ return list;
89
+}
90
+
91
+static struct ref *parse_info_refs(struct discovery *heads)
92
+{
93
+ char *data, *start, *mid;
94
+ char *ref_name;
95
+ int i = 0;
96
+
97
+ struct ref *refs = NULL;
98
+ struct ref *ref = NULL;
99
+ struct ref *last_ref = NULL;
100
+
101
+ data = heads->buf;
102
+ start = NULL;
103
+ mid = data;
104
+ while (i < heads->len) {
105
+ if (!start) {
106
+ start = &data[i];
107
+ }
108
+ if (data[i] == '\t')
109
+ mid = &data[i];
110
+ if (data[i] == '\n') {
111
+ if (mid - start != 40)
112
+ die("%sinfo/refs not valid: is this a git repository?", url);
113
+ data[i] = 0;
114
+ ref_name = mid + 1;
115
+ ref = xmalloc(sizeof(struct ref) +
116
+ strlen(ref_name) + 1);
117
+ memset(ref, 0, sizeof(struct ref));
118
+ strcpy(ref->name, ref_name);
119
+ get_sha1_hex(start, ref->old_sha1);
120
+ if (!refs)
121
+ refs = ref;
122
+ if (last_ref)
123
+ last_ref->next = ref;
124
+ last_ref = ref;
125
+ start = NULL;
126
+ }
127
+ i++;
128
+ }
129
+
130
+ ref = alloc_ref("HEAD");
131
+ if (!http_fetch_ref(url, ref) &&
132
+ !resolve_remote_symref(ref, refs)) {
133
+ ref->next = refs;
134
+ refs = ref;
135
+ } else {
136
+ free(ref);
137
+ }
138
+
139
+ return refs;
140
+}
141
+
142
static void free_discovery(struct discovery *d)
143
{
144
if (d) {
@@ -170,65 +229,6 @@ static struct discovery* discover_refs(const char *service)
229
return last;
230
}
231
173
-static struct ref *parse_git_refs(struct discovery *heads, int for_push)
174
-{
175
- struct ref *list = NULL;
176
- get_remote_heads(-1, heads->buf, heads->len, &list,
177
- for_push ? REF_NORMAL : 0, NULL);
178
- return list;
179
-}
180
-
181
-static struct ref *parse_info_refs(struct discovery *heads)
182
-{
183
- char *data, *start, *mid;
184
- char *ref_name;
185
- int i = 0;
186
-
187
- struct ref *refs = NULL;
188
- struct ref *ref = NULL;
189
- struct ref *last_ref = NULL;
190
-
191
- data = heads->buf;
192
- start = NULL;
193
- mid = data;
194
- while (i < heads->len) {
195
- if (!start) {
196
- start = &data[i];
197
- }
198
- if (data[i] == '\t')
199
- mid = &data[i];
200
- if (data[i] == '\n') {
201
- if (mid - start != 40)
202
- die("%sinfo/refs not valid: is this a git repository?", url);
203
- data[i] = 0;
204
- ref_name = mid + 1;
205
- ref = xmalloc(sizeof(struct ref) +
206
- strlen(ref_name) + 1);
207
- memset(ref, 0, sizeof(struct ref));
208
- strcpy(ref->name, ref_name);
209
- get_sha1_hex(start, ref->old_sha1);
210
- if (!refs)
211
- refs = ref;
212
- if (last_ref)
213
- last_ref->next = ref;
214
- last_ref = ref;
215
- start = NULL;
216
- }
217
- i++;
218
- }
219
-
220
- ref = alloc_ref("HEAD");
221
- if (!http_fetch_ref(url, ref) &&
222
- !resolve_remote_symref(ref, refs)) {
223
- ref->next = refs;
224
- refs = ref;
225
- } else {
226
- free(ref);
227
- }
228
-
229
- return refs;
230
-}
231
-
232
static struct ref *get_refs(int for_push)
233
{
234
struct discovery *heads;