From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Subject: [PATCH 5/6] builtin-commit.c: further refactor branch switching
Date: Fri, 5 Dec 2008 17:54:14 -0800 [thread overview]
Message-ID: <1228528455-3089-6-git-send-email-gitster@pobox.com> (raw)
In-Reply-To: <1228528455-3089-5-git-send-email-gitster@pobox.com>
This adds reset_index_and_worktree() to further factor out the logic for
switching the index and the work tree state from one commit to another to
shrink merge_working_tree() function.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
builtin-checkout.c | 24 ++++++++++++++++--------
1 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/builtin-checkout.c b/builtin-checkout.c
index 9c45c49..a08941a 100644
--- a/builtin-checkout.c
+++ b/builtin-checkout.c
@@ -433,6 +433,18 @@ static int switch_trees(int merge, int quiet, int *wt_error,
return ret;
}
+int reset_index_and_worktree(int force, int merge, int quiet, int *wt_error,
+ struct commit *old_commit, const char *old_label,
+ struct commit *new_commit, const char *new_label)
+{
+ if (force)
+ return reset_tree(new_commit->tree, quiet, 1, wt_error);
+ else
+ return switch_trees(merge, quiet, wt_error,
+ old_commit, old_label,
+ new_commit, new_label);
+}
+
struct branch_info {
const char *name; /* The short name used */
const char *path; /* The full name of a real branch */
@@ -457,14 +469,10 @@ static int merge_working_tree(struct checkout_opts *opts,
if (read_cache() < 0)
return error("corrupt index file");
- if (opts->force)
- ret = reset_tree(new->commit->tree, opts->quiet, 1,
- &opts->writeout_error);
- else
- ret = switch_trees(opts->merge, opts->quiet,
- &opts->writeout_error,
- old->commit, "local",
- new->commit, new->name);
+ ret = reset_index_and_worktree(opts->force, opts->merge, opts->quiet,
+ &opts->writeout_error,
+ old->commit, "local",
+ new->commit, new->name);
if (ret)
return ret;
--
1.6.1.rc1.72.ga5ce6
next prev parent reply other threads:[~2008-12-06 1:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-06 1:54 [PATCH 0/6] Reusing "checkout [-m]" logic for "reset --merge" Junio C Hamano
2008-12-06 1:54 ` [PATCH 1/6] builtin-checkout.c: check error return from read_cache() Junio C Hamano
2008-12-06 1:54 ` [PATCH 2/6] read-cache.c: typofix in comment Junio C Hamano
2008-12-06 1:54 ` [PATCH 3/6] Make reset_tree() in builtin-checkout.c a bit more library-ish Junio C Hamano
2008-12-06 1:54 ` [PATCH 4/6] builtin-checkout.c: refactor merge_working_tree() Junio C Hamano
2008-12-06 1:54 ` Junio C Hamano [this message]
2008-12-06 1:54 ` [PATCH 6/6] builtin-reset.c: use reset_index_and_worktree() Junio C Hamano
2008-12-06 2:08 ` [PATCH 5/6] builtin-commit.c: further refactor branch switching Linus Torvalds
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1228528455-3089-6-git-send-email-gitster@pobox.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).