From: Jonathan Nieder <jrnieder@gmail.com>
To: Ramkumar Ramachandra <artagnon@gmail.com>
Cc: Git List <git@vger.kernel.org>,
Junio C Hamano <gitster@pobox.com>,
Christian Couder <chriscool@tuxfamily.org>,
Daniel Barkalow <barkalow@iabervon.org>
Subject: Re: [PATCH 07/17] revert: Introduce struct to keep command-line options
Date: Tue, 12 Jul 2011 13:05:49 -0500 [thread overview]
Message-ID: <20110712180549.GC14120@elie> (raw)
In-Reply-To: <1310396048-24925-8-git-send-email-artagnon@gmail.com>
Ramkumar Ramachandra wrote:
> The variable "me" is left as a file-scope static variable because it
> is not an independent option. "me" is simply a string that needs to
> be inferred from the "action" option, and is kept global to save each
> function the trouble of determining it independently.
Why not do something like this[1]?
[1] http://thread.gmane.org/gmane.comp.version-control.git/176647/focus=176730
diff --git i/builtin/revert.c w/builtin/revert.c
index 63baca85..3161e696 100644
--- i/builtin/revert.c
+++ w/builtin/revert.c
@@ -36,7 +36,6 @@ static const char * const cherry_pick_usage[] = {
};
static struct commit *commit;
-static const char *me;
enum replay_action { REVERT, CHERRY_PICK };
struct replay_opts {
@@ -69,6 +68,11 @@ static const char * const *revert_or_cherry_pick_usage(struct replay_opts *opts)
return opts->action == REVERT ? revert_usage : cherry_pick_usage;
}
+static const char *action_name(const struct replay_opts *opts)
+{
+ return opts->action == REVERT ? "revert" : "cherry-pick";
+}
+
static int option_parse_x(const struct option *opt,
const char *arg, int unset)
{
@@ -280,20 +284,20 @@ static struct tree *empty_tree(void)
return tree;
}
-static NORETURN void die_dirty_index(const char *me, enum replay_action action)
+static NORETURN void die_dirty_index(const struct replay_opts *opts)
{
if (read_cache_unmerged()) {
- die_resolve_conflict(me);
+ die_resolve_conflict(action_name(opts));
} else {
if (advice_commit_before_merge) {
- if (action == REVERT)
+ if (opts->action == REVERT)
die(_("Your local changes would be overwritten by revert.\n"
"Please, commit your changes or stash them to proceed."));
else
die(_("Your local changes would be overwritten by cherry-pick.\n"
"Please, commit your changes or stash them to proceed."));
} else {
- if (action == REVERT)
+ if (opts->action == REVERT)
die(_("Your local changes would be overwritten by revert.\n"));
else
die(_("Your local changes would be overwritten by cherry-pick.\n"));
@@ -347,7 +351,8 @@ static int do_recursive_merge(struct commit *base, struct commit *next,
(write_cache(index_fd, active_cache, active_nr) ||
commit_locked_index(&index_lock)))
/* TRANSLATORS: %s will be "revert" or "cherry-pick" */
- die(_("%s: Unable to write new index file"), me);
+ die(_("%s: Unable to write new index file"),
+ action_name(opts));
rollback_lock_file(&index_lock);
if (!clean) {
@@ -418,7 +423,7 @@ static int do_pick_commit(struct replay_opts *opts)
if (get_sha1("HEAD", head))
die (_("You do not have a valid HEAD"));
if (index_differs_from("HEAD", 0))
- die_dirty_index(me, opts->action);
+ die_dirty_index(opts);
}
discard_cache();
@@ -455,7 +460,7 @@ static int do_pick_commit(struct replay_opts *opts)
/* TRANSLATORS: The first %s will be "revert" or
"cherry-pick", the second %s a SHA1 */
die(_("%s: cannot parse parent commit %s"),
- me, sha1_to_hex(parent->object.sha1));
+ action_name(opts), sha1_to_hex(parent->object.sha1));
if (get_message(commit->buffer, &msg) != 0)
die(_("Cannot get commit message for %s"),
@@ -557,10 +562,15 @@ static void prepare_revs(struct rev_info *revs, struct replay_opts *opts)
die(_("empty commit set passed"));
}
-static void read_and_refresh_cache(const char *me, struct replay_opts *opts)
+static void read_and_refresh_cache(struct replay_opts *opts)
{
static struct lock_file index_lock;
- int index_fd = hold_locked_index(&index_lock, 0);
+ int index_fd;
+ const char *me;
+
+ me = action_name(opts);
+
+ index_fd = hold_locked_index(&index_lock, 0);
if (read_index_preload(&the_index, NULL) < 0)
die(_("git %s: failed to read the index"), me);
refresh_index(&the_index, REFRESH_QUIET|REFRESH_UNMERGED, NULL, NULL, NULL);
@@ -578,8 +588,7 @@ static int revert_or_cherry_pick(int argc, const char **argv,
struct rev_info revs;
git_config(git_default_config, NULL);
- me = opts->action == REVERT ? "revert" : "cherry-pick";
- setenv(GIT_REFLOG_ACTION, me, 0);
+ setenv(GIT_REFLOG_ACTION, action_name(opts), 0);
parse_args(argc, argv, opts);
if (opts->allow_ff) {
@@ -593,7 +602,7 @@ static int revert_or_cherry_pick(int argc, const char **argv,
die(_("cherry-pick --ff cannot be used with --edit"));
}
- read_and_refresh_cache(me, opts);
+ read_and_refresh_cache(opts);
prepare_revs(&revs, opts);
next prev parent reply other threads:[~2011-07-12 18:06 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-11 14:53 [GSoC update] Sequencer for inclusion Ramkumar Ramachandra
2011-07-11 14:53 ` [PATCH 01/17] advice: Introduce error_resolve_conflict Ramkumar Ramachandra
2011-07-11 14:53 ` [PATCH 02/17] revert: Inline add_message_to_msg function Ramkumar Ramachandra
2011-07-12 16:53 ` Jonathan Nieder
2011-07-13 6:00 ` Ramkumar Ramachandra
2011-07-13 6:42 ` Jonathan Nieder
2011-07-19 16:36 ` Ramkumar Ramachandra
2011-07-19 16:52 ` Junio C Hamano
2011-07-19 17:08 ` Ramkumar Ramachandra
2011-07-19 19:36 ` Jonathan Nieder
2011-07-20 5:32 ` Ramkumar Ramachandra
2011-07-11 14:53 ` [PATCH 03/17] revert: Don't check lone argument in get_encoding Ramkumar Ramachandra
2011-07-12 16:59 ` Jonathan Nieder
2011-07-13 6:14 ` Ramkumar Ramachandra
2011-07-13 6:30 ` Jonathan Nieder
2011-07-11 14:53 ` [PATCH 04/17] revert: Rename no_replay to record_origin Ramkumar Ramachandra
2011-07-12 17:02 ` Jonathan Nieder
2011-07-13 7:35 ` Ramkumar Ramachandra
2011-07-17 19:36 ` Jonathan Nieder
2011-07-11 14:53 ` [PATCH 05/17] revert: Propogate errors upwards from do_pick_commit Ramkumar Ramachandra
2011-07-12 17:32 ` Jonathan Nieder
2011-07-17 10:46 ` Ramkumar Ramachandra
2011-07-17 16:59 ` Jonathan Nieder
2011-07-19 10:09 ` Ramkumar Ramachandra
2011-07-11 14:53 ` [PATCH 06/17] revert: Eliminate global "commit" variable Ramkumar Ramachandra
2011-07-12 17:45 ` Jonathan Nieder
2011-07-13 6:57 ` Ramkumar Ramachandra
2011-07-13 7:10 ` Jonathan Nieder
2011-07-13 8:33 ` Ramkumar Ramachandra
2011-07-13 16:40 ` Jonathan Nieder
2011-07-11 14:53 ` [PATCH 07/17] revert: Introduce struct to keep command-line options Ramkumar Ramachandra
2011-07-12 18:05 ` Jonathan Nieder [this message]
2011-07-13 7:56 ` Ramkumar Ramachandra
2011-07-11 14:53 ` [PATCH 08/17] revert: Separate cmdline parsing from functional code Ramkumar Ramachandra
2011-07-12 18:20 ` Jonathan Nieder
2011-07-18 20:53 ` Ramkumar Ramachandra
2011-07-18 21:03 ` Jonathan Nieder
2011-07-11 14:54 ` [PATCH 09/17] revert: Don't create invalid replay_opts in parse_args Ramkumar Ramachandra
2011-07-11 20:44 ` Junio C Hamano
2011-07-12 5:57 ` Ramkumar Ramachandra
2011-07-12 18:29 ` Jonathan Nieder
2011-07-17 11:56 ` Ramkumar Ramachandra
2011-07-17 18:43 ` Jonathan Nieder
2011-07-11 14:54 ` [PATCH 10/17] sequencer: Announce sequencer state location Ramkumar Ramachandra
2011-07-12 18:56 ` Jonathan Nieder
2011-07-13 12:10 ` Sverre Rabbelier
2011-07-17 16:23 ` Ramkumar Ramachandra
2011-07-17 19:19 ` Jonathan Nieder
2011-07-18 19:44 ` Ramkumar Ramachandra
2011-07-11 14:54 ` [PATCH 11/17] revert: Save data for continuing after conflict resolution Ramkumar Ramachandra
2011-07-11 21:01 ` Junio C Hamano
2011-07-11 21:31 ` Junio C Hamano
2011-07-12 5:43 ` Ramkumar Ramachandra
2011-07-12 19:37 ` Jonathan Nieder
2011-07-17 11:48 ` Ramkumar Ramachandra
2011-07-17 18:40 ` Jonathan Nieder
2011-07-18 19:31 ` Ramkumar Ramachandra
2011-07-19 12:21 ` Jonathan Nieder
2011-07-19 12:34 ` Ramkumar Ramachandra
2011-07-11 14:54 ` [PATCH 12/17] revert: Save command-line options for continuing operation Ramkumar Ramachandra
2011-07-11 21:15 ` Junio C Hamano
2011-07-12 5:56 ` Ramkumar Ramachandra
2011-07-12 19:52 ` Jonathan Nieder
2011-07-18 20:18 ` Ramkumar Ramachandra
2011-07-11 14:54 ` [PATCH 13/17] revert: Introduce a layer of indirection over pick_commits Ramkumar Ramachandra
2011-07-12 20:03 ` Jonathan Nieder
2011-07-18 21:24 ` Ramkumar Ramachandra
2011-07-11 14:54 ` [PATCH 14/17] reset: Make hard reset remove the sequencer state Ramkumar Ramachandra
2011-07-12 20:15 ` Jonathan Nieder
2011-07-17 16:40 ` Ramkumar Ramachandra
2011-07-11 14:54 ` [PATCH 15/17] revert: Remove sequencer state when no commits are pending Ramkumar Ramachandra
2011-07-11 19:58 ` Junio C Hamano
2011-07-12 6:26 ` Ramkumar Ramachandra
2011-07-11 14:54 ` [PATCH 16/17] revert: Introduce --reset to remove sequencer state Ramkumar Ramachandra
2011-07-12 20:30 ` Jonathan Nieder
2011-07-17 17:10 ` Ramkumar Ramachandra
2011-07-17 19:25 ` Jonathan Nieder
2011-07-11 14:54 ` [PATCH 17/17] revert: Introduce --continue to continue the operation Ramkumar Ramachandra
2011-07-12 20:46 ` Jonathan Nieder
2011-07-17 16:11 ` Ramkumar Ramachandra
2011-07-17 18:32 ` Jonathan Nieder
2011-07-18 20:00 ` Ramkumar Ramachandra
2011-07-18 20:09 ` Jonathan Nieder
2011-07-11 17:17 ` [GSoC update] Sequencer for inclusion Jonathan Nieder
2011-07-11 17:57 ` Ramkumar Ramachandra
2011-07-11 20:05 ` Ramkumar Ramachandra
2011-07-11 20:11 ` Jonathan Nieder
2011-07-12 7:05 ` Ramkumar Ramachandra
2011-07-11 20:07 ` Junio C Hamano
2011-07-11 22:14 ` Jeff King
2011-07-12 6:41 ` Ramkumar Ramachandra
2011-07-12 6:47 ` Jeff King
2011-07-13 9:41 ` Ramkumar Ramachandra
2011-07-13 19:07 ` Jeff King
2011-07-18 21:37 ` [RFC PATCH] config: Introduce functions to write non-standard file Ramkumar Ramachandra
2011-07-18 23:54 ` Junio C Hamano
2011-07-19 8:52 ` Ramkumar Ramachandra
2011-07-12 5:58 ` [GSoC update] Sequencer for inclusion Jonathan Nieder
2011-07-12 6:28 ` Miles Bader
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=20110712180549.GC14120@elie \
--to=jrnieder@gmail.com \
--cc=artagnon@gmail.com \
--cc=barkalow@iabervon.org \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.