Skip to content

Commit

Permalink
revert: Eliminate global "commit" variable
Browse files Browse the repository at this point in the history
Functions which act on commits currently rely on a file-scope static
variable to be set before they're called.  Consequently, the API and
corresponding callsites are ugly and unclear.  Remove this variable
and change their API to accept the commit to act on as additional
argument so that the callsites change from looking like

  commit = prepare_a_commit();
  act_on_commit();

to looking like

  commit = prepare_a_commit();
  act_on_commit(commit);

This change is also in line with our long-term goal of exposing some
of these functions through a public API.

Inspired-by: Christian Couder <chriscool@tuxfamily.org>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Ramkumar Ramachandra authored and Junio C Hamano committed Aug 4, 2011
1 parent 54decbd commit 708f9d9
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions builtin/revert.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ static const char * const cherry_pick_usage[] = {

static int edit, record_origin, no_commit, mainline, signoff, allow_ff;
static enum { REVERT, CHERRY_PICK } action;
static struct commit *commit;
static int commit_argc;
static const char **commit_argv;
static int allow_rerere_auto;
Expand Down Expand Up @@ -116,25 +115,25 @@ struct commit_message {
const char *message;
};

static int get_message(const char *raw_message, struct commit_message *out)
static int get_message(struct commit *commit, struct commit_message *out)
{
const char *encoding;
const char *abbrev, *subject;
int abbrev_len, subject_len;
char *q;

if (!raw_message)
if (!commit->buffer)
return -1;
encoding = get_encoding(raw_message);
encoding = get_encoding(commit->buffer);
if (!encoding)
encoding = "UTF-8";
if (!git_commit_encoding)
git_commit_encoding = "UTF-8";

out->reencoded_message = NULL;
out->message = raw_message;
out->message = commit->buffer;
if (strcmp(encoding, git_commit_encoding))
out->reencoded_message = reencode_string(raw_message,
out->reencoded_message = reencode_string(commit->buffer,
git_commit_encoding, encoding);
if (out->reencoded_message)
out->message = out->reencoded_message;
Expand Down Expand Up @@ -182,7 +181,7 @@ static char *get_encoding(const char *message)
return NULL;
}

static void write_cherry_pick_head(void)
static void write_cherry_pick_head(struct commit *commit)
{
int fd;
struct strbuf buf = STRBUF_INIT;
Expand Down Expand Up @@ -355,7 +354,7 @@ static int run_git_commit(const char *defmsg)
return run_command_v_opt(args, RUN_GIT_CMD);
}

static int do_pick_commit(void)
static int do_pick_commit(struct commit *commit)
{
unsigned char head[20];
struct commit *base, *next, *parent;
Expand Down Expand Up @@ -417,7 +416,7 @@ static int do_pick_commit(void)
die(_("%s: cannot parse parent commit %s"),
me, sha1_to_hex(parent->object.sha1));

if (get_message(commit->buffer, &msg) != 0)
if (get_message(commit, &msg) != 0)
die(_("Cannot get commit message for %s"),
sha1_to_hex(commit->object.sha1));

Expand Down Expand Up @@ -470,7 +469,7 @@ static int do_pick_commit(void)
strbuf_addstr(&msgbuf, ")\n");
}
if (!no_commit)
write_cherry_pick_head();
write_cherry_pick_head(commit);
}

if (!strategy || !strcmp(strategy, "recursive") || action == REVERT) {
Expand Down Expand Up @@ -548,6 +547,7 @@ static void read_and_refresh_cache(const char *me)
static int revert_or_cherry_pick(int argc, const char **argv)
{
struct rev_info revs;
struct commit *commit;

git_config(git_default_config, NULL);
me = action == REVERT ? "revert" : "cherry-pick";
Expand All @@ -570,7 +570,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)
prepare_revs(&revs);

while ((commit = get_revision(&revs))) {
int res = do_pick_commit();
int res = do_pick_commit(commit);
if (res)
return res;
}
Expand Down

0 comments on commit 708f9d9

Please sign in to comment.