From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramkumar Ramachandra Subject: [PATCH 06/17] revert: Eliminate global "commit" variable Date: Mon, 11 Jul 2011 14:53:57 +0000 Message-ID: <1310396048-24925-7-git-send-email-artagnon@gmail.com> References: <1310396048-24925-1-git-send-email-artagnon@gmail.com> Cc: Jonathan Nieder , Junio C Hamano , Christian Couder , Daniel Barkalow To: Git List X-From: git-owner@vger.kernel.org Mon Jul 11 16:54:44 2011 Return-path: Envelope-to: gcvg-git-2@lo.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QgHse-0005F4-6Q for gcvg-git-2@lo.gmane.org; Mon, 11 Jul 2011 16:54:40 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757829Ab1GKOy0 (ORCPT ); Mon, 11 Jul 2011 10:54:26 -0400 Received: from mail-vx0-f174.google.com ([209.85.220.174]:46637 "EHLO mail-vx0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757777Ab1GKOyY (ORCPT ); Mon, 11 Jul 2011 10:54:24 -0400 Received: by mail-vx0-f174.google.com with SMTP id 39so2716724vxb.19 for ; Mon, 11 Jul 2011 07:54:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=BuEU9eBL7g7qXuzrDFb+8YbX5xp+dPjSuV0G7Gq9yC8=; b=mynlaaZCLdjwFrbeFr2bTw4WPNzx9UC7asEXgdFeVy0abKQBn9YyWo9+qSJyHOpOMc ZmK2O2CjGKjkT/Cl4pw9b4C8/2FLb9ucxHO+jvAXRtA8WNa6HMNgC57ZcXKK2EJiDeY5 jyZPQyADe+lzj6L4paETfZ6pHiaObYUjB6SoE= Received: by 10.52.94.13 with SMTP id cy13mr5779757vdb.33.1310396062248; Mon, 11 Jul 2011 07:54:22 -0700 (PDT) Received: from localhost.localdomain (ec2-184-72-137-52.compute-1.amazonaws.com [184.72.137.52]) by mx.google.com with ESMTPS id b9sm4510527vdk.25.2011.07.11.07.54.20 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 11 Jul 2011 07:54:21 -0700 (PDT) X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1310396048-24925-1-git-send-email-artagnon@gmail.com> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: Since we want to develop the functionality to either pick or revert individual commits atomically later in the series, make "commit" a variable to be passed around explicitly as an argument for clarity. This involves changing several functions to take an additional argument, but no functional changes. Additionaly, this will permit more than one commit to be cherry-picked at once, should we choose to develop this functionality in future. Inspired-by: Christian Couder Helped-by: Jonathan Nieder Helped-by: Junio C Hamano Signed-off-by: Ramkumar Ramachandra --- builtin/revert.c | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) diff --git a/builtin/revert.c b/builtin/revert.c index e2fd7b0..840e2a3 100644 --- a/builtin/revert.c +++ b/builtin/revert.c @@ -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; @@ -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; @@ -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; @@ -350,7 +349,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; @@ -412,7 +411,7 @@ static int do_pick_commit(void) return error(_("%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) return error(_("Cannot get commit message for %s"), sha1_to_hex(commit->object.sha1)); @@ -457,7 +456,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) { @@ -535,6 +534,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"; @@ -557,7 +557,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; } -- 1.7.5.GIT