From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramkumar Ramachandra Subject: [PATCH 06/14] revert: Eliminate global "commit" variable Date: Wed, 6 Jul 2011 07:54:20 +0000 Message-ID: <1309938868-2028-7-git-send-email-artagnon@gmail.com> References: <1309938868-2028-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 Wed Jul 06 09:55:17 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 1QeMx2-00068m-PT for gcvg-git-2@lo.gmane.org; Wed, 06 Jul 2011 09:55:17 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752169Ab1GFHyl (ORCPT ); Wed, 6 Jul 2011 03:54:41 -0400 Received: from mail-qy0-f174.google.com ([209.85.216.174]:48564 "EHLO mail-qy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751345Ab1GFHyj (ORCPT ); Wed, 6 Jul 2011 03:54:39 -0400 Received: by mail-qy0-f174.google.com with SMTP id 29so1924487qyk.19 for ; Wed, 06 Jul 2011 00:54:39 -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=ERBLpiGZvnxokFOUnZnCxGhLWgQGn/qpgCRf4WXyOy0=; b=tR5t75CPnspxESRtu7pjjd5oTcGGatbw9WKhiIRkasOGXqZzemkeMYAodg2El68rQd Z+30oVxAzF0LXS+tkZTuMCOMyeYZAH6tWm1TOk1yaIoQGSNrATH6VJHSoKGWT3dZxwQR m8VDMq9ZlwT8gvEQKVxhP6UZyX71HI48r9tio= Received: by 10.224.2.144 with SMTP id 16mr5716254qaj.383.1309938878978; Wed, 06 Jul 2011 00:54:38 -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 e18sm6212790qcs.5.2011.07.06.00.54.37 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 06 Jul 2011 00:54:38 -0700 (PDT) X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1309938868-2028-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 3de7ec4..fcc2047 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; @@ -359,7 +358,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; @@ -421,7 +420,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)); @@ -466,7 +465,7 @@ static int do_pick_commit(void) strbuf_addstr(&msgbuf, ")\n"); } if (!no_commit) - write_cherry_pick_head(); + write_cherry_pick_head(sha1_to_hex(commit)); } if (!strategy || !strcmp(strategy, "recursive") || action == REVERT) { @@ -544,6 +543,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"; @@ -566,7 +566,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