@matheusbsbs / matheus-bagliano / commits / 6286a08db3
Fork 0

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 }