checkout: consolidate reset_{to_new,clean_to_new}()
These two were very similar functions with only tiny bit of difference. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano committed
May 28, 2008 at 14:59 UTC
6286a08db3d1e718f4be6959d0f380215026800b
1 file changed
+15
-35
builtin-checkout.c
+15
-35
@@ -151,39 +151,29 @@ static void describe_detached_head(char *msg, struct commit *commit)
151
strbuf_release(&sb);
152
}
153
154
-static int reset_to_new(struct tree *tree, int quiet)
155
-{
156
- struct unpack_trees_options opts;
157
- struct tree_desc tree_desc;
154
+struct checkout_opts {
155
+ int quiet;
156
+ int merge;
157
+ int force;
158
159
- memset(&opts, 0, sizeof(opts));
160
- opts.head_idx = -1;
161
- opts.update = 1;
162
- opts.reset = 1;
163
- opts.merge = 1;
164
- opts.fn = oneway_merge;
165
- opts.verbose_update = !quiet;
166
- opts.src_index = &the_index;
167
- opts.dst_index = &the_index;
168
- parse_tree(tree);
169
- init_tree_desc(&tree_desc, tree->buffer, tree->size);
170
- if (unpack_trees(1, &tree_desc, &opts))
171
- return 128;
172
- return 0;
173
-}
159
+ char *new_branch;
160
+ int new_branch_log;
161
+ enum branch_track track;
162
+};
163
175
-static int reset_clean_to_new(struct tree *tree, int quiet)
164
+static int reset_tree(struct tree *tree, struct checkout_opts *o, int worktree)
165
{
166
struct unpack_trees_options opts;
167
struct tree_desc tree_desc;
168
169
memset(&opts, 0, sizeof(opts));
170
opts.head_idx = -1;
182
- opts.skip_unmerged = 1;
171
+ opts.update = worktree;
172
+ opts.skip_unmerged = !worktree;
173
opts.reset = 1;
174
opts.merge = 1;
175
opts.fn = oneway_merge;
186
- opts.verbose_update = !quiet;
176
+ opts.verbose_update = !o->quiet;
177
opts.src_index = &the_index;
178
opts.dst_index = &the_index;
179
parse_tree(tree);
@@ -193,16 +183,6 @@ static int reset_clean_to_new(struct tree *tree, int quiet)
183
return 0;
184
}
185
196
-struct checkout_opts {
197
- int quiet;
198
- int merge;
199
- int force;
200
-
201
- char *new_branch;
202
- int new_branch_log;
203
- enum branch_track track;
204
-};
205
-
186
struct branch_info {
187
const char *name; /* The short name used */
188
const char *path; /* The full name of a real branch */
@@ -227,7 +207,7 @@ static int merge_working_tree(struct checkout_opts *opts,
207
read_cache();
208
209
if (opts->force) {
230
- ret = reset_to_new(new->commit->tree, opts->quiet);
210
+ ret = reset_tree(new->commit->tree, opts, 1);
211
if (ret)
212
return ret;
213
} else {
@@ -291,12 +271,12 @@ static int merge_working_tree(struct checkout_opts *opts,
271
add_files_to_cache(NULL, NULL, 0);
272
work = write_tree_from_memory();
273
294
- ret = reset_to_new(new->commit->tree, opts->quiet);
274
+ ret = reset_tree(new->commit->tree, opts, 1);
275
if (ret)
276
return ret;
277
merge_trees(new->commit->tree, work, old->commit->tree,
278
new->name, "local", &result);
299
- ret = reset_clean_to_new(new->commit->tree, opts->quiet);
279
+ ret = reset_tree(new->commit->tree, opts, 0);
280
if (ret)
281
return ret;
282
}