From patchwork Mon Jun 24 09:55:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Duy Nguyen X-Patchwork-Id: 11012791 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B617576 for ; Mon, 24 Jun 2019 09:55:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A6FAF28913 for ; Mon, 24 Jun 2019 09:55:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9B34A28A22; Mon, 24 Jun 2019 09:55:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6309528AB8 for ; Mon, 24 Jun 2019 09:55:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727354AbfFXJzs (ORCPT ); Mon, 24 Jun 2019 05:55:48 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:37919 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726788AbfFXJzs (ORCPT ); Mon, 24 Jun 2019 05:55:48 -0400 Received: by mail-pg1-f194.google.com with SMTP id z75so4225193pgz.5 for ; Mon, 24 Jun 2019 02:55:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oau9ChYwus5zBZ9qNQz6XQdfI75xvPhKioP2Mmxr0jU=; b=sk0hY18T0VOCK4JHmIbFu0dGOOmDZdBi3AfyjcwLW8toEXS/FhmOL4A1zRQYcFq2op J99J1c7xUCxsvbBt4SyVJRKYdZEGbyCQwUwTKgg2VB+dcguYIuoDSlBuZqB+kUpvVv+P 2minG97ZYD69Ega9VBF2n67VzaKbYlD5xjun5sJ/crMGiQFJT2/dc1HegspySOta7P5N AkPrjGk3iZWiMGZFrpG7tobdRYBTmN9YNGYMcllKEtph24xTaY+/f63WTzPeT/ym2LDU hEdDGvpbJvULicKWvTSNCg9EWeAWV609dL6nBcRl136epNfKHEwalAkOoypESCjFdO0L kUnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oau9ChYwus5zBZ9qNQz6XQdfI75xvPhKioP2Mmxr0jU=; b=jSsl2DspNG+7kbFeCs9IO58f6vflQnVgVhvJk+Gesfw/ephowT0ZTRsLNnk+DCeqL4 YNIrRLn7LWlSkH9uPTiuLyxaSmJDGgD9My+ObAXIPNzjKAlDS1FluerZIFTp8VZrSN+8 /E4+p7dgm4Qt3ozjFWbpy8j5+3yvYajU185bQCJpmIJJOATGujZZylDeN4l/UEwbFWuf jV5R4qAcakKnygXk5XogyHQOsnjJKPwg7YlIIxiZtGyMrgvy7LaGkR588eXD8fUfRxG8 dg8jAj4FMPB8ghr2shC1DDhp9mgO1M/kqJd5Y1ybUshgZ6X5twzgRaW3YiQqFUfL5Lpo mKiA== X-Gm-Message-State: APjAAAU/FRm+DDKYYZVAg/iJzUKs8NbrI5trqgoAtG2vC4Empse/SBwM m8K+CTUrVDCMqWHEPFuTE5ahiK0/ X-Google-Smtp-Source: APXvYqzckC9Su7FFBIEO+lBgARDW1J4jL8P1XFHEiimRBqagOi+cfAWQFkhd5QSEuCdr6hQ0DtpI0w== X-Received: by 2002:a65:4cc4:: with SMTP id n4mr4171574pgt.307.1561370147308; Mon, 24 Jun 2019 02:55:47 -0700 (PDT) Received: from ash ([115.76.181.38]) by smtp.gmail.com with ESMTPSA id 1sm10644769pfe.102.2019.06.24.02.55.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Jun 2019 02:55:46 -0700 (PDT) Received: by ash (sSMTP sendmail emulation); Mon, 24 Jun 2019 16:55:43 +0700 From: =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eQ==?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= Subject: [PATCH 1/6] sha1-file.c: remove the_repo from read_object_with_reference() Date: Mon, 24 Jun 2019 16:55:28 +0700 Message-Id: <20190624095533.22162-2-pclouds@gmail.com> X-Mailer: git-send-email 2.22.0.rc0.322.g2b0371e29a In-Reply-To: <20190624095533.22162-1-pclouds@gmail.com> References: <20190624095533.22162-1-pclouds@gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Nguyễn Thái Ngọc Duy --- builtin/cat-file.c | 3 ++- builtin/grep.c | 6 ++++-- builtin/pack-objects.c | 3 ++- cache.h | 3 ++- fast-import.c | 9 ++++++--- sha1-file.c | 5 +++-- tree-walk.c | 7 ++++--- 7 files changed, 23 insertions(+), 13 deletions(-) diff --git a/builtin/cat-file.c b/builtin/cat-file.c index 0f092382e1..995d47c85a 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -172,7 +172,8 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, * fall-back to the usual case. */ } - buf = read_object_with_reference(&oid, exp_type, &size, NULL); + buf = read_object_with_reference(the_repository, + &oid, exp_type, &size, NULL); break; default: diff --git a/builtin/grep.c b/builtin/grep.c index 580fd38f41..85da7ee542 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -458,7 +458,8 @@ static int grep_submodule(struct grep_opt *opt, object = parse_object_or_die(oid, oid_to_hex(oid)); grep_read_lock(); - data = read_object_with_reference(&object->oid, tree_type, + data = read_object_with_reference(opt->repo, + &object->oid, tree_type, &size, NULL); grep_read_unlock(); @@ -623,7 +624,8 @@ static int grep_object(struct grep_opt *opt, const struct pathspec *pathspec, int hit, len; grep_read_lock(); - data = read_object_with_reference(&obj->oid, tree_type, + data = read_object_with_reference(opt->repo, + &obj->oid, tree_type, &size, NULL); grep_read_unlock(); diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index b2be8869c2..a030c24a4a 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -1428,7 +1428,8 @@ static void add_preferred_base(struct object_id *oid) if (window <= num_preferred_base++) return; - data = read_object_with_reference(oid, tree_type, &size, &tree_oid); + data = read_object_with_reference(the_repository, oid, + tree_type, &size, &tree_oid); if (!data) return; diff --git a/cache.h b/cache.h index bf20337ef4..cd84cc9bbe 100644 --- a/cache.h +++ b/cache.h @@ -1500,7 +1500,8 @@ int df_name_compare(const char *name1, int len1, int mode1, const char *name2, i int name_compare(const char *name1, size_t len1, const char *name2, size_t len2); int cache_name_stage_compare(const char *name1, int len1, int stage1, const char *name2, int len2, int stage2); -void *read_object_with_reference(const struct object_id *oid, +void *read_object_with_reference(struct repository *r, + const struct object_id *oid, const char *required_type, unsigned long *size, struct object_id *oid_ret); diff --git a/fast-import.c b/fast-import.c index 76a7bd3699..3970b50acc 100644 --- a/fast-import.c +++ b/fast-import.c @@ -2410,7 +2410,8 @@ static void note_change_n(const char *p, struct branch *b, unsigned char *old_fa oidcpy(&commit_oid, &commit_oe->idx.oid); } else if (!get_oid(p, &commit_oid)) { unsigned long size; - char *buf = read_object_with_reference(&commit_oid, + char *buf = read_object_with_reference(the_repository, + &commit_oid, commit_type, &size, &commit_oid); if (!buf || size < the_hash_algo->hexsz + 6) @@ -2482,7 +2483,8 @@ static void parse_from_existing(struct branch *b) unsigned long size; char *buf; - buf = read_object_with_reference(&b->oid, commit_type, &size, + buf = read_object_with_reference(the_repository, + &b->oid, commit_type, &size, &b->oid); parse_from_commit(b, buf, size); free(buf); @@ -2560,7 +2562,8 @@ static struct hash_list *parse_merge(unsigned int *count) oidcpy(&n->oid, &oe->idx.oid); } else if (!get_oid(from, &n->oid)) { unsigned long size; - char *buf = read_object_with_reference(&n->oid, + char *buf = read_object_with_reference(the_repository, + &n->oid, commit_type, &size, &n->oid); if (!buf || size < the_hash_algo->hexsz + 6) diff --git a/sha1-file.c b/sha1-file.c index 888b6024d5..59b2e40cf3 100644 --- a/sha1-file.c +++ b/sha1-file.c @@ -1505,7 +1505,8 @@ void *read_object_file_extended(struct repository *r, return NULL; } -void *read_object_with_reference(const struct object_id *oid, +void *read_object_with_reference(struct repository *r, + const struct object_id *oid, const char *required_type_name, unsigned long *size, struct object_id *actual_oid_return) @@ -1521,7 +1522,7 @@ void *read_object_with_reference(const struct object_id *oid, int ref_length = -1; const char *ref_type = NULL; - buffer = read_object_file(&actual_oid, &type, &isize); + buffer = repo_read_object_file(r, &actual_oid, &type, &isize); if (!buffer) return NULL; if (type == required_type) { diff --git a/tree-walk.c b/tree-walk.c index ec32a47b2e..0c7722b220 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -87,7 +87,7 @@ void *fill_tree_descriptor(struct tree_desc *desc, const struct object_id *oid) void *buf = NULL; if (oid) { - buf = read_object_with_reference(oid, tree_type, &size, NULL); + buf = read_object_with_reference(the_repository, oid, tree_type, &size, NULL); if (!buf) die("unable to read tree %s", oid_to_hex(oid)); } @@ -542,7 +542,7 @@ int get_tree_entry(const struct object_id *tree_oid, const char *name, struct ob unsigned long size; struct object_id root; - tree = read_object_with_reference(tree_oid, tree_type, &size, &root); + tree = read_object_with_reference(the_repository, tree_oid, tree_type, &size, &root); if (!tree) return -1; @@ -609,7 +609,8 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct object_id *tree_oid, c void *tree; struct object_id root; unsigned long size; - tree = read_object_with_reference(¤t_tree_oid, + tree = read_object_with_reference(the_repository, + ¤t_tree_oid, tree_type, &size, &root); if (!tree) From patchwork Mon Jun 24 09:55:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Duy Nguyen X-Patchwork-Id: 11012793 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A6AFB13B4 for ; Mon, 24 Jun 2019 09:55:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9624728913 for ; Mon, 24 Jun 2019 09:55:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8A5D328A63; Mon, 24 Jun 2019 09:55:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D506128913 for ; Mon, 24 Jun 2019 09:55:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727768AbfFXJzx (ORCPT ); Mon, 24 Jun 2019 05:55:53 -0400 Received: from mail-pg1-f196.google.com ([209.85.215.196]:34701 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726788AbfFXJzw (ORCPT ); Mon, 24 Jun 2019 05:55:52 -0400 Received: by mail-pg1-f196.google.com with SMTP id p10so6849992pgn.1 for ; Mon, 24 Jun 2019 02:55:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kyg3OqoRX1j8S1Qk9zlC3Dx2EOKDflHSYUCdorkv+UA=; b=uGs3NVmMIaqx0I7fID/y6f+LC4B1zTrZosZ32qAE/b6URtWlhGy3jxnVpGJg3NYzfu DFxWnU/eNntRbFfhNgbe9PMtVbXnqTeflIUnSbwxLYJER5soFo04nmo95IUu/aCVzFVS LyTDK9euAspScS/AkiiB7FpTRsPKsYMCyaFTRcwGa5MAJoQxRLUurfahgzaSfcU+6Ih0 nrHViE6fjcDAadAQ/C1i8T2GV4mfXj3V/s8Cdzyi62SbYbr6VMXnmUY2dTMEoFmfKtcq jZk1sLyo3WBqk5HHX8zws67CPUp7IbAUVcxTMqQlwQ+qoNXOBnFaMf58Yr+3jokdDTvh BTSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kyg3OqoRX1j8S1Qk9zlC3Dx2EOKDflHSYUCdorkv+UA=; b=KpTF+Yw08in444bPD4F87avZ8vuelIt0bLcE8YKrh+jMLFtKSHBpTKpH4E2AFkQj/I 3ec5m0hbfmrPCShHrN16EtSRNfX/grZNT9/rjqfgN5DcjX3INwsncSE1zJGiJ9IIKnvg iVKmAHoeh4HE7SAOgtw1DygiAwNL6+1cRE+kVEVMv6dVGahIhZga1TICoMQIN5Lt0hj9 d1/4dfsMlvV9GByZM+QLuEz7cBwKftDygSEesF/wQTX09XEuWdwFP1hqUg+QYXbW0W7/ LNf9JIilCKIzKMfMUo4TNjmZTwMpwbkPdKe2gRDlO5B7op0KLIG72n25XtrrQF9J7Rxy g/NQ== X-Gm-Message-State: APjAAAVQkEw7WtfehRn7Bbsnty6LEZ7wsf6FY9iifnWGFDYVMoFWj9FG dvDeJFRN0u3M1RJZi54KpxPBMfyw X-Google-Smtp-Source: APXvYqxqoTh43lojn8eBt1pqt6l8osN1PzFEuhXPXN4ubdfsnUiFmbMBROgNGGMqEgRDBJEKq0B8HQ== X-Received: by 2002:a17:90a:1aa4:: with SMTP id p33mr24055886pjp.27.1561370151641; Mon, 24 Jun 2019 02:55:51 -0700 (PDT) Received: from ash ([115.76.181.38]) by smtp.gmail.com with ESMTPSA id d12sm10483787pfd.96.2019.06.24.02.55.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Jun 2019 02:55:51 -0700 (PDT) Received: by ash (sSMTP sendmail emulation); Mon, 24 Jun 2019 16:55:47 +0700 From: =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eQ==?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= Subject: [PATCH 2/6] tree-walk.c: remove the_repo from fill_tree_descriptor() Date: Mon, 24 Jun 2019 16:55:29 +0700 Message-Id: <20190624095533.22162-3-pclouds@gmail.com> X-Mailer: git-send-email 2.22.0.rc0.322.g2b0371e29a In-Reply-To: <20190624095533.22162-1-pclouds@gmail.com> References: <20190624095533.22162-1-pclouds@gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP While at there, clean up the_repo usage in builtin/merge-tree.c a tiny bit. Signed-off-by: Nguyễn Thái Ngọc Duy --- builtin/merge-tree.c | 22 +++++++++++++--------- builtin/rebase.c | 4 ++-- builtin/reset.c | 4 ++-- notes.c | 2 +- sequencer.c | 2 +- tree-diff.c | 4 ++-- tree-walk.c | 6 ++++-- tree-walk.h | 4 +++- unpack-trees.c | 2 +- 9 files changed, 29 insertions(+), 21 deletions(-) diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c index 34ca0258b1..97b54caeb9 100644 --- a/builtin/merge-tree.c +++ b/builtin/merge-tree.c @@ -205,6 +205,7 @@ static void resolve(const struct traverse_info *info, struct name_entry *ours, s static void unresolved_directory(const struct traverse_info *info, struct name_entry n[3]) { + struct repository *r = the_repository; char *newbase; struct name_entry *p; struct tree_desc t[3]; @@ -220,9 +221,9 @@ static void unresolved_directory(const struct traverse_info *info, newbase = traverse_path(info, p); #define ENTRY_OID(e) (((e)->mode && S_ISDIR((e)->mode)) ? &(e)->oid : NULL) - buf0 = fill_tree_descriptor(t + 0, ENTRY_OID(n + 0)); - buf1 = fill_tree_descriptor(t + 1, ENTRY_OID(n + 1)); - buf2 = fill_tree_descriptor(t + 2, ENTRY_OID(n + 2)); + buf0 = fill_tree_descriptor(r, t + 0, ENTRY_OID(n + 0)); + buf1 = fill_tree_descriptor(r, t + 1, ENTRY_OID(n + 1)); + buf2 = fill_tree_descriptor(r, t + 2, ENTRY_OID(n + 2)); #undef ENTRY_OID merge_trees(t, newbase); @@ -351,14 +352,16 @@ static void merge_trees(struct tree_desc t[3], const char *base) traverse_trees(&the_index, 3, t, &info); } -static void *get_tree_descriptor(struct tree_desc *desc, const char *rev) +static void *get_tree_descriptor(struct repository *r, + struct tree_desc *desc, + const char *rev) { struct object_id oid; void *buf; - if (get_oid(rev, &oid)) + if (repo_get_oid(r, rev, &oid)) die("unknown rev %s", rev); - buf = fill_tree_descriptor(desc, &oid); + buf = fill_tree_descriptor(r, desc, &oid); if (!buf) die("%s is not a tree", rev); return buf; @@ -366,15 +369,16 @@ static void *get_tree_descriptor(struct tree_desc *desc, const char *rev) int cmd_merge_tree(int argc, const char **argv, const char *prefix) { + struct repository *r = the_repository; struct tree_desc t[3]; void *buf1, *buf2, *buf3; if (argc != 4) usage(merge_tree_usage); - buf1 = get_tree_descriptor(t+0, argv[1]); - buf2 = get_tree_descriptor(t+1, argv[2]); - buf3 = get_tree_descriptor(t+2, argv[3]); + buf1 = get_tree_descriptor(r, t+0, argv[1]); + buf2 = get_tree_descriptor(r, t+1, argv[2]); + buf3 = get_tree_descriptor(r, t+2, argv[3]); merge_trees(t, ""); free(buf1); free(buf2); diff --git a/builtin/rebase.c b/builtin/rebase.c index b8116db487..28490f5f88 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -840,13 +840,13 @@ static int reset_head(struct object_id *oid, const char *action, goto leave_reset_head; } - if (!reset_hard && !fill_tree_descriptor(&desc[nr++], &head_oid)) { + if (!reset_hard && !fill_tree_descriptor(the_repository, &desc[nr++], &head_oid)) { ret = error(_("failed to find tree of %s"), oid_to_hex(&head_oid)); goto leave_reset_head; } - if (!fill_tree_descriptor(&desc[nr++], oid)) { + if (!fill_tree_descriptor(the_repository, &desc[nr++], oid)) { ret = error(_("failed to find tree of %s"), oid_to_hex(oid)); goto leave_reset_head; } diff --git a/builtin/reset.c b/builtin/reset.c index 26ef9a7bd0..77c38f28c2 100644 --- a/builtin/reset.c +++ b/builtin/reset.c @@ -79,13 +79,13 @@ static int reset_index(const struct object_id *oid, int reset_type, int quiet) struct object_id head_oid; if (get_oid("HEAD", &head_oid)) return error(_("You do not have a valid HEAD.")); - if (!fill_tree_descriptor(desc + nr, &head_oid)) + if (!fill_tree_descriptor(the_repository, desc + nr, &head_oid)) return error(_("Failed to find tree of HEAD.")); nr++; opts.fn = twoway_merge; } - if (!fill_tree_descriptor(desc + nr, oid)) { + if (!fill_tree_descriptor(the_repository, desc + nr, oid)) { error(_("Failed to find tree of %s."), oid_to_hex(oid)); goto out; } diff --git a/notes.c b/notes.c index 532ec37865..2522b87d77 100644 --- a/notes.c +++ b/notes.c @@ -397,7 +397,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree, struct name_entry entry; const unsigned hashsz = the_hash_algo->rawsz; - buf = fill_tree_descriptor(&desc, &subtree->val_oid); + buf = fill_tree_descriptor(the_repository, &desc, &subtree->val_oid); if (!buf) die("Could not read %s for notes-index", oid_to_hex(&subtree->val_oid)); diff --git a/sequencer.c b/sequencer.c index ab74b6baf1..d565fcf2b1 100644 --- a/sequencer.c +++ b/sequencer.c @@ -3194,7 +3194,7 @@ static int do_reset(struct repository *r, return error_resolve_conflict(_(action_name(opts))); } - if (!fill_tree_descriptor(&desc, &oid)) { + if (!fill_tree_descriptor(r, &desc, &oid)) { error(_("failed to find tree of %s"), oid_to_hex(&oid)); rollback_lock_file(&lock); free((void *)desc.buffer); diff --git a/tree-diff.c b/tree-diff.c index f1f641eb6a..33ded7f8b3 100644 --- a/tree-diff.c +++ b/tree-diff.c @@ -422,8 +422,8 @@ static struct combine_diff_path *ll_diff_tree_paths( * diff_tree_oid(parent, commit) ) */ for (i = 0; i < nparent; ++i) - tptree[i] = fill_tree_descriptor(&tp[i], parents_oid[i]); - ttree = fill_tree_descriptor(&t, oid); + tptree[i] = fill_tree_descriptor(opt->repo, &tp[i], parents_oid[i]); + ttree = fill_tree_descriptor(opt->repo, &t, oid); /* Enable recursion indefinitely */ opt->pathspec.recursive = opt->flags.recursive; diff --git a/tree-walk.c b/tree-walk.c index 0c7722b220..c5569b3e9f 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -81,13 +81,15 @@ int init_tree_desc_gently(struct tree_desc *desc, const void *buffer, unsigned l return result; } -void *fill_tree_descriptor(struct tree_desc *desc, const struct object_id *oid) +void *fill_tree_descriptor(struct repository *r, + struct tree_desc *desc, + const struct object_id *oid) { unsigned long size = 0; void *buf = NULL; if (oid) { - buf = read_object_with_reference(the_repository, oid, tree_type, &size, NULL); + buf = read_object_with_reference(r, oid, tree_type, &size, NULL); if (!buf) die("unable to read tree %s", oid_to_hex(oid)); } diff --git a/tree-walk.h b/tree-walk.h index 161e2400f4..9aa1042642 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -45,7 +45,9 @@ int init_tree_desc_gently(struct tree_desc *desc, const void *buf, unsigned long int tree_entry(struct tree_desc *, struct name_entry *); int tree_entry_gently(struct tree_desc *, struct name_entry *); -void *fill_tree_descriptor(struct tree_desc *desc, const struct object_id *oid); +void *fill_tree_descriptor(struct repository *r, + struct tree_desc *desc, + const struct object_id *oid); struct traverse_info; typedef int (*traverse_callback_t)(int n, unsigned long mask, unsigned long dirmask, struct name_entry *entry, struct traverse_info *); diff --git a/unpack-trees.c b/unpack-trees.c index 50189909b8..cfe1c5ec6f 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -840,7 +840,7 @@ static int traverse_trees_recursive(int n, unsigned long dirmask, const struct object_id *oid = NULL; if (dirmask & 1) oid = &names[i].oid; - buf[nr_buf++] = fill_tree_descriptor(t + i, oid); + buf[nr_buf++] = fill_tree_descriptor(the_repository, t + i, oid); } } From patchwork Mon Jun 24 09:55:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Duy Nguyen X-Patchwork-Id: 11012795 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5A03613B4 for ; Mon, 24 Jun 2019 09:56:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4A00928B80 for ; Mon, 24 Jun 2019 09:56:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3E4D228B85; Mon, 24 Jun 2019 09:56:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4B94A28B80 for ; Mon, 24 Jun 2019 09:55:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727953AbfFXJz5 (ORCPT ); Mon, 24 Jun 2019 05:55:57 -0400 Received: from mail-pf1-f194.google.com ([209.85.210.194]:37271 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726788AbfFXJz5 (ORCPT ); Mon, 24 Jun 2019 05:55:57 -0400 Received: by mail-pf1-f194.google.com with SMTP id 19so7212480pfa.4 for ; Mon, 24 Jun 2019 02:55:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6uuS8+nvnnfw+NpZR3l5bQYvXCNHID+xxwPZ3nL+gIA=; b=uRibMM7NhOJ7O/YGt5YgTIGNUvE8BVfUWBxpvtnRyAlfBULFDNi3ap354PkTvFUeTM wmk9O6URhAsYwtgJizsYQvZJWbcC6WMUdqqCc3QXWqGGTyKhsbEkrc2eJnkYE8qHoFFI Fvp7m6nlHCJUOyU/vtYW66MY+DBJcYJ41TKAdtN4TbZdI3MW2Szds6Z+XDOKjYOUKVon 2QDQJS+WC2UlQ/IvXdpomnEmtAmTu80niU+ezEnmA2hTttXSip9uVZryFt8WTONknqVv 7Np/kibNiRo1pv/Jmtnb2FDz+FBDrsxnt9HnuVqpSR2tPRNNhPHh6ssgulHMwjV2Djfi I5sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6uuS8+nvnnfw+NpZR3l5bQYvXCNHID+xxwPZ3nL+gIA=; b=Dw37TIqMdMaaPOnUzryW6OJpEXl/Qo0X2knoBF6Y+h0uJS87i9FyjI5gb0t4qSo9hZ CAPRmxE+HuOGLlhsGUPCJ4n5qCSpwN2edsv59x1FFd5wwHD3eGrvaA7/8XOady8ghx9D Le0f6K3f6GdXHIvQ+8HX+zgwa+C3QhVWTPbQnUDG0tvGBo+EiGmwr76Sn8xv1vTC4c/s Yt6B+xlZNAjjNI8an/ZnjBAJLDS32aprXoqM1LcrSuDI9o6uwj+sn0LpWexmfZKYnvd1 NZ41DHz+WZZF3F6ztxJ5QPDzOEEj9Nhx9Z+Nmb+8/+HeiDfC+eGxrcB3MQNAh+t+4YAi 4+0Q== X-Gm-Message-State: APjAAAXaZMbA9Tfx+wuzuGDyzYpq8LUQ2ADcA3wXaHZb72PB6eS35VFC Rh+FuIeM58LpByctjVOpUnv7KO4p X-Google-Smtp-Source: APXvYqy8MoBLqZOTokLUfW+Gf+tbnr3X6drgtu34hOshMnXPApeqlfecv+s8LlT6aciV2LPR3i+yFQ== X-Received: by 2002:a63:1723:: with SMTP id x35mr27235458pgl.233.1561370155954; Mon, 24 Jun 2019 02:55:55 -0700 (PDT) Received: from ash ([115.76.181.38]) by smtp.gmail.com with ESMTPSA id y11sm11343674pfb.119.2019.06.24.02.55.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Jun 2019 02:55:55 -0700 (PDT) Received: by ash (sSMTP sendmail emulation); Mon, 24 Jun 2019 16:55:51 +0700 From: =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eQ==?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= Subject: [PATCH 3/6] tree-walk.c: remove the_repo from get_tree_entry() Date: Mon, 24 Jun 2019 16:55:30 +0700 Message-Id: <20190624095533.22162-4-pclouds@gmail.com> X-Mailer: git-send-email 2.22.0.rc0.322.g2b0371e29a In-Reply-To: <20190624095533.22162-1-pclouds@gmail.com> References: <20190624095533.22162-1-pclouds@gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Nguyễn Thái Ngọc Duy --- archive.c | 4 +++- blame.c | 4 ++-- builtin/rm.c | 2 +- builtin/update-index.c | 2 +- line-log.c | 7 ++++--- match-trees.c | 6 +++--- merge-recursive.c | 8 +++++--- notes.c | 2 +- sha1-name.c | 9 +++++---- tree-walk.c | 18 ++++++++++++------ tree-walk.h | 2 +- 11 files changed, 38 insertions(+), 26 deletions(-) diff --git a/archive.c b/archive.c index 53141c1f0e..a8da0fcc4f 100644 --- a/archive.c +++ b/archive.c @@ -418,7 +418,9 @@ static void parse_treeish_arg(const char **argv, unsigned short mode; int err; - err = get_tree_entry(&tree->object.oid, prefix, &tree_oid, + err = get_tree_entry(ar_args->repo, + &tree->object.oid, + prefix, &tree_oid, &mode); if (err || !S_ISDIR(mode)) die(_("current working directory is untracked")); diff --git a/blame.c b/blame.c index 145eaf2faf..ef022809e9 100644 --- a/blame.c +++ b/blame.c @@ -101,7 +101,7 @@ static void verify_working_tree_path(struct repository *r, struct object_id blob_oid; unsigned short mode; - if (!get_tree_entry(commit_oid, path, &blob_oid, &mode) && + if (!get_tree_entry(r, commit_oid, path, &blob_oid, &mode) && oid_object_info(r, &blob_oid, NULL) == OBJ_BLOB) return; } @@ -532,7 +532,7 @@ static int fill_blob_sha1_and_mode(struct repository *r, { if (!is_null_oid(&origin->blob_oid)) return 0; - if (get_tree_entry(&origin->commit->object.oid, origin->path, &origin->blob_oid, &origin->mode)) + if (get_tree_entry(r, &origin->commit->object.oid, origin->path, &origin->blob_oid, &origin->mode)) goto error_out; if (oid_object_info(r, &origin->blob_oid, NULL) != OBJ_BLOB) goto error_out; diff --git a/builtin/rm.c b/builtin/rm.c index be8edc6d1e..2eacda42b4 100644 --- a/builtin/rm.c +++ b/builtin/rm.c @@ -179,7 +179,7 @@ static int check_local_mod(struct object_id *head, int index_only) * way as changed from the HEAD. */ if (no_head - || get_tree_entry(head, name, &oid, &mode) + || get_tree_entry(the_repository, head, name, &oid, &mode) || ce->ce_mode != create_ce_mode(mode) || !oideq(&ce->oid, &oid)) staged_changes = 1; diff --git a/builtin/update-index.c b/builtin/update-index.c index 3f8cc6ccb4..dff2f4b837 100644 --- a/builtin/update-index.c +++ b/builtin/update-index.c @@ -601,7 +601,7 @@ static struct cache_entry *read_one_ent(const char *which, struct object_id oid; struct cache_entry *ce; - if (get_tree_entry(ent, path, &oid, &mode)) { + if (get_tree_entry(the_repository, ent, path, &oid, &mode)) { if (which) error("%s: not in %s branch.", path, which); return NULL; diff --git a/line-log.c b/line-log.c index 0a17b21187..3aff1849e7 100644 --- a/line-log.c +++ b/line-log.c @@ -496,12 +496,13 @@ static struct commit *check_single_commit(struct rev_info *revs) return (struct commit *) commit; } -static void fill_blob_sha1(struct commit *commit, struct diff_filespec *spec) +static void fill_blob_sha1(struct repository *r, struct commit *commit, + struct diff_filespec *spec) { unsigned short mode; struct object_id oid; - if (get_tree_entry(&commit->object.oid, spec->path, &oid, &mode)) + if (get_tree_entry(r, &commit->object.oid, spec->path, &oid, &mode)) die("There is no path %s in the commit", spec->path); fill_filespec(spec, &oid, 1, mode); @@ -585,7 +586,7 @@ parse_lines(struct repository *r, struct commit *commit, name_part); spec = alloc_filespec(full_name); - fill_blob_sha1(commit, spec); + fill_blob_sha1(r, commit, spec); fill_line_ends(r, spec, &lines, &ends); cb_data.spec = spec; cb_data.lines = lines; diff --git a/match-trees.c b/match-trees.c index 9d1ec8d6b0..de7e8a6783 100644 --- a/match-trees.c +++ b/match-trees.c @@ -290,7 +290,7 @@ void shift_tree(const struct object_id *hash1, if (!*del_prefix) return; - if (get_tree_entry(hash2, del_prefix, shifted, &mode)) + if (get_tree_entry(the_repository, hash2, del_prefix, shifted, &mode)) die("cannot find path %s in tree %s", del_prefix, oid_to_hex(hash2)); return; @@ -317,12 +317,12 @@ void shift_tree_by(const struct object_id *hash1, unsigned candidate = 0; /* Can hash2 be a tree at shift_prefix in tree hash1? */ - if (!get_tree_entry(hash1, shift_prefix, &sub1, &mode1) && + if (!get_tree_entry(the_repository, hash1, shift_prefix, &sub1, &mode1) && S_ISDIR(mode1)) candidate |= 1; /* Can hash1 be a tree at shift_prefix in tree hash2? */ - if (!get_tree_entry(hash2, shift_prefix, &sub2, &mode2) && + if (!get_tree_entry(the_repository, hash2, shift_prefix, &sub2, &mode2) && S_ISDIR(mode2)) candidate |= 2; diff --git a/merge-recursive.c b/merge-recursive.c index d2e380b7ed..b051066795 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -475,7 +475,7 @@ static int get_tree_entry_if_blob(const struct object_id *tree, { int ret; - ret = get_tree_entry(tree, path, &dfs->oid, &dfs->mode); + ret = get_tree_entry(the_repository, tree, path, &dfs->oid, &dfs->mode); if (S_ISDIR(dfs->mode)) { oidcpy(&dfs->oid, &null_oid); dfs->mode = 0; @@ -1905,7 +1905,8 @@ static int tree_has_path(struct tree *tree, const char *path) struct object_id hashy; unsigned short mode_o; - return !get_tree_entry(&tree->object.oid, path, + return !get_tree_entry(the_repository, + &tree->object.oid, path, &hashy, &mode_o); } @@ -2500,7 +2501,8 @@ static void apply_directory_rename_modifications(struct merge_options *opt, * the various handle_rename_*() functions update the index * explicitly rather than relying on unpack_trees() to have done it. */ - get_tree_entry(&tree->object.oid, + get_tree_entry(opt->repo, + &tree->object.oid, pair->two->path, &re->dst_entry->stages[stage].oid, &re->dst_entry->stages[stage].mode); diff --git a/notes.c b/notes.c index 2522b87d77..75c028b300 100644 --- a/notes.c +++ b/notes.c @@ -1015,7 +1015,7 @@ void init_notes(struct notes_tree *t, const char *notes_ref, return; if (flags & NOTES_INIT_WRITABLE && read_ref(notes_ref, &object_oid)) die("Cannot use notes ref %s", notes_ref); - if (get_tree_entry(&object_oid, "", &oid, &mode)) + if (get_tree_entry(the_repository, &object_oid, "", &oid, &mode)) die("Failed to read notes tree referenced by %s (%s)", notes_ref, oid_to_hex(&object_oid)); diff --git a/sha1-name.c b/sha1-name.c index 728e6f1f61..e8fb215e5c 100644 --- a/sha1-name.c +++ b/sha1-name.c @@ -1677,7 +1677,8 @@ int repo_get_oid_blob(struct repository *r, } /* Must be called only when object_name:filename doesn't exist. */ -static void diagnose_invalid_oid_path(const char *prefix, +static void diagnose_invalid_oid_path(struct repository *r, + const char *prefix, const char *filename, const struct object_id *tree_oid, const char *object_name, @@ -1695,7 +1696,7 @@ static void diagnose_invalid_oid_path(const char *prefix, if (is_missing_file_error(errno)) { char *fullname = xstrfmt("%s%s", prefix, filename); - if (!get_tree_entry(tree_oid, fullname, &oid, &mode)) { + if (!get_tree_entry(r, tree_oid, fullname, &oid, &mode)) { die("Path '%s' exists, but not '%s'.\n" "Did you mean '%.*s:%s' aka '%.*s:./%s'?", fullname, @@ -1902,10 +1903,10 @@ static enum get_oid_result get_oid_with_context_1(struct repository *repo, filename, oid, &oc->symlink_path, &oc->mode); } else { - ret = get_tree_entry(&tree_oid, filename, oid, + ret = get_tree_entry(repo, &tree_oid, filename, oid, &oc->mode); if (ret && only_to_die) { - diagnose_invalid_oid_path(prefix, + diagnose_invalid_oid_path(repo, prefix, filename, &tree_oid, name, len); diff --git a/tree-walk.c b/tree-walk.c index c5569b3e9f..506e12a031 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -502,7 +502,9 @@ struct dir_state { struct object_id oid; }; -static int find_tree_entry(struct tree_desc *t, const char *name, struct object_id *result, unsigned short *mode) +static int find_tree_entry(struct repository *r, struct tree_desc *t, + const char *name, struct object_id *result, + unsigned short *mode) { int namelen = strlen(name); while (t->size) { @@ -532,19 +534,23 @@ static int find_tree_entry(struct tree_desc *t, const char *name, struct object_ oidcpy(result, &oid); return 0; } - return get_tree_entry(&oid, name + entrylen, result, mode); + return get_tree_entry(r, &oid, name + entrylen, result, mode); } return -1; } -int get_tree_entry(const struct object_id *tree_oid, const char *name, struct object_id *oid, unsigned short *mode) +int get_tree_entry(struct repository *r, + const struct object_id *tree_oid, + const char *name, + struct object_id *oid, + unsigned short *mode) { int retval; void *tree; unsigned long size; struct object_id root; - tree = read_object_with_reference(the_repository, tree_oid, tree_type, &size, &root); + tree = read_object_with_reference(r, tree_oid, tree_type, &size, &root); if (!tree) return -1; @@ -559,7 +565,7 @@ int get_tree_entry(const struct object_id *tree_oid, const char *name, struct ob } else { struct tree_desc t; init_tree_desc(&t, tree, size); - retval = find_tree_entry(&t, name, oid, mode); + retval = find_tree_entry(r, &t, name, oid, mode); } free(tree); return retval; @@ -681,7 +687,7 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct object_id *tree_oid, c } /* Look up the first (or only) path component in the tree. */ - find_result = find_tree_entry(&t, namebuf.buf, + find_result = find_tree_entry(the_repository, &t, namebuf.buf, ¤t_tree_oid, mode); if (find_result) { goto done; diff --git a/tree-walk.h b/tree-walk.h index 9aa1042642..639f79187f 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -68,7 +68,7 @@ struct traverse_info { int show_all_errors; }; -int get_tree_entry(const struct object_id *, const char *, struct object_id *, unsigned short *); +int get_tree_entry(struct repository *, const struct object_id *, const char *, struct object_id *, unsigned short *); char *make_traverse_path(char *path, const struct traverse_info *info, const struct name_entry *n); void setup_traverse_info(struct traverse_info *info, const char *base); From patchwork Mon Jun 24 09:55:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Duy Nguyen X-Patchwork-Id: 11012797 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CFBB376 for ; Mon, 24 Jun 2019 09:56:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C02A728A01 for ; Mon, 24 Jun 2019 09:56:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B494528B83; Mon, 24 Jun 2019 09:56:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4E41528A01 for ; Mon, 24 Jun 2019 09:56:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728270AbfFXJ4B (ORCPT ); Mon, 24 Jun 2019 05:56:01 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:33493 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727991AbfFXJ4B (ORCPT ); Mon, 24 Jun 2019 05:56:01 -0400 Received: by mail-pg1-f194.google.com with SMTP id m4so6227835pgk.0 for ; Mon, 24 Jun 2019 02:56:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UMaBu+OyQySzr/SGJEEBkGIwN5Peo2j+BEvW2ufgvHY=; b=B0aDPPUYAgxWC/oOpCPZFL8akc0z/A2Zw/RRWWthzVkdlZkI709qz+BzXESs5ZRjvm n8UvVpZhjyW8Rv+NIOo13fxUf2YDpct5/pTlZIljs//xWZFqSfpWuyOc9DpERlsyTw8J NMJM+oCutRCRiUNBlxbdiQn5m2pfUiVSj2JQHcjREyTBuGHqRJJkT7d9NLqSlDnRSDUv luBr79+e5v1hcgkF+cLhcT+8vOyw5VRnAtgkXe/Kb+bl3PixmZk36cd2P6pZxuq5msHz AU2a74pDGG26pnuudxPbIavYlYLxpCMXFwBhuYI2sLs4YWkESkWwQ24P9uzdoynmZUuJ LTMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UMaBu+OyQySzr/SGJEEBkGIwN5Peo2j+BEvW2ufgvHY=; b=Zml2Yi83rDRk4uOhktY5et2YR/KinvVSVEpGghWSburspWtiqdew0h5baMaBmymw9x QofBWynl3QL6482pxa6FAFVllSamFsSL8inqJxYO7LJTOgzIG6ysD954zPEi4GGM5GpW R6DIQyPipWWwW66Q9VIV8iixLBTgkW4m0UPIwz8ZHYMcLQoihnglqX1NS2REdsmRJX47 cEpUleqCUu0QGBz677VPuzCip3DDK2GdBrWAa7ISmIEwWnOWHPvEC78pP9BKHGzxQ2px 2TRQLveGsjtVehJpMIRpwi+J2JL1PUjz+0iWb/t1wGH0Wig2/O10117w7fYo1Y3RWwHO ts+g== X-Gm-Message-State: APjAAAUcD7U4125xbPLvO9WaAppy1sLLRC/SUX1yIm600mbm5eW/zYmj ahEc3PKiZuInNe6LPByt8m5i9yc1 X-Google-Smtp-Source: APXvYqxU8iqQ8jPOCmBTezrRuKEaPcMLs8kYaCMOtZEv2D7WigCR+RyQGbl5hl0N6B5qZKIlQ2UFvg== X-Received: by 2002:a63:e4a:: with SMTP id 10mr1008609pgo.348.1561370160278; Mon, 24 Jun 2019 02:56:00 -0700 (PDT) Received: from ash ([115.76.181.38]) by smtp.gmail.com with ESMTPSA id 14sm15855570pfj.36.2019.06.24.02.55.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Jun 2019 02:55:59 -0700 (PDT) Received: by ash (sSMTP sendmail emulation); Mon, 24 Jun 2019 16:55:56 +0700 From: =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eQ==?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= Subject: [PATCH 4/6] tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks() Date: Mon, 24 Jun 2019 16:55:31 +0700 Message-Id: <20190624095533.22162-5-pclouds@gmail.com> X-Mailer: git-send-email 2.22.0.rc0.322.g2b0371e29a In-Reply-To: <20190624095533.22162-1-pclouds@gmail.com> References: <20190624095533.22162-1-pclouds@gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Nguyễn Thái Ngọc Duy --- sha1-name.c | 10 +--------- tree-walk.c | 12 ++++++++---- tree-walk.h | 2 +- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/sha1-name.c b/sha1-name.c index e8fb215e5c..3c9fa10af8 100644 --- a/sha1-name.c +++ b/sha1-name.c @@ -1890,16 +1890,8 @@ static enum get_oid_result get_oid_with_context_1(struct repository *repo, new_filename = resolve_relative_path(repo, filename); if (new_filename) filename = new_filename; - /* - * NEEDSWORK: Eventually get_tree_entry*() should - * learn to take struct repository directly and we - * would not need to inject submodule odb to the - * in-core odb. - */ - if (repo != the_repository) - add_to_alternates_memory(repo->objects->odb->path); if (flags & GET_OID_FOLLOW_SYMLINKS) { - ret = get_tree_entry_follow_symlinks(&tree_oid, + ret = get_tree_entry_follow_symlinks(repo, &tree_oid, filename, oid, &oc->symlink_path, &oc->mode); } else { diff --git a/tree-walk.c b/tree-walk.c index 506e12a031..c20b62f49e 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -593,7 +593,10 @@ int get_tree_entry(struct repository *r, * See the code for enum get_oid_result for a description of * the return values. */ -enum get_oid_result get_tree_entry_follow_symlinks(struct object_id *tree_oid, const char *name, struct object_id *result, struct strbuf *result_path, unsigned short *mode) +enum get_oid_result get_tree_entry_follow_symlinks(struct repository *r, + struct object_id *tree_oid, const char *name, + struct object_id *result, struct strbuf *result_path, + unsigned short *mode) { int retval = MISSING_OBJECT; struct dir_state *parents = NULL; @@ -617,7 +620,7 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct object_id *tree_oid, c void *tree; struct object_id root; unsigned long size; - tree = read_object_with_reference(the_repository, + tree = read_object_with_reference(r, ¤t_tree_oid, tree_type, &size, &root); @@ -687,7 +690,7 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct object_id *tree_oid, c } /* Look up the first (or only) path component in the tree. */ - find_result = find_tree_entry(the_repository, &t, namebuf.buf, + find_result = find_tree_entry(r, &t, namebuf.buf, ¤t_tree_oid, mode); if (find_result) { goto done; @@ -731,7 +734,8 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct object_id *tree_oid, c */ retval = DANGLING_SYMLINK; - contents = read_object_file(¤t_tree_oid, &type, + contents = repo_read_object_file(r, + ¤t_tree_oid, &type, &link_len); if (!contents) diff --git a/tree-walk.h b/tree-walk.h index 639f79187f..2a5db29e8f 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -53,7 +53,7 @@ struct traverse_info; typedef int (*traverse_callback_t)(int n, unsigned long mask, unsigned long dirmask, struct name_entry *entry, struct traverse_info *); int traverse_trees(struct index_state *istate, int n, struct tree_desc *t, struct traverse_info *info); -enum get_oid_result get_tree_entry_follow_symlinks(struct object_id *tree_oid, const char *name, struct object_id *result, struct strbuf *result_path, unsigned short *mode); +enum get_oid_result get_tree_entry_follow_symlinks(struct repository *r, struct object_id *tree_oid, const char *name, struct object_id *result, struct strbuf *result_path, unsigned short *mode); struct traverse_info { const char *traverse_path; From patchwork Mon Jun 24 09:55:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Duy Nguyen X-Patchwork-Id: 11012799 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4713813B4 for ; Mon, 24 Jun 2019 09:56:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 37AEB28A01 for ; Mon, 24 Jun 2019 09:56:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 296D128B83; Mon, 24 Jun 2019 09:56:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 047A328A01 for ; Mon, 24 Jun 2019 09:56:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728311AbfFXJ4G (ORCPT ); Mon, 24 Jun 2019 05:56:06 -0400 Received: from mail-pl1-f194.google.com ([209.85.214.194]:44261 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726788AbfFXJ4F (ORCPT ); Mon, 24 Jun 2019 05:56:05 -0400 Received: by mail-pl1-f194.google.com with SMTP id t7so6575308plr.11 for ; Mon, 24 Jun 2019 02:56:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=luyi7uKA1TWVYgolKLhyMKxtRUKQjajZ2kWt761rU6k=; b=j7DZ3xNnTxHpWqSenJbevLdQxgm/p95DTCOe6l4rCUM/DsyijUpXQbKWJOj2XLn7Ps agkAwdNfupk5IMGBCnEqqzcgvrGG325itiDYvVO4c1b5BlJM90MoroWrfBRAuVbBKD69 CqJUKf6+QrC6FLShlE1O0vknV8XT/fUaZLI9joGeFwGzJqK47GzYReBKogC/RAIyuoEo TGR3z36PEZ80nrZ+6Ibi2816eChOshVeNPpNmgBmIeTRISNbYalKEk8Ev1jUJGRxbyk8 9+8wbBszyiN6faU87MeXeman/e4vV/WYPmp7/4AihxFxRrM4Uxa7d0TqCs5Oce9AzkzT SQ7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=luyi7uKA1TWVYgolKLhyMKxtRUKQjajZ2kWt761rU6k=; b=jP/MioVLyHxGLmdvZno4JuxH6ez5xSWjXzPt/yf03RLc7L9lVd5GVnGoZnTCjm9MYu OCLxvCb4N4CThHWLF02tkkJtQi+m4yv1YBQ1wMDGL03L5JJPexUi9MPw1BxhmeeX3G9i Ur/a70qlxraGyfwy8oVV3at/ximaopCCziFgbP5LvAkJSQxPLJzO9rF/sTTeXhgmEcXL qAnwSvfJuSIXfhUv/o+TQB8cJgnMK/3gWm+MjiWV/peXTeGPdTDMyR61qFUfQOfIliF3 nw5FkshhkX/sXMdQfiIegymn8iwe/RoMRsDSTPYO1hWSlOqCQ3dPm3DmYf0D/0lqX6ev nofA== X-Gm-Message-State: APjAAAXYd8jlROc9E4VB8YwofG1GeC93uCv14q7aQ5VxleGQH6OnvyPQ R8/cRuw5x2hAuNO/x6jlVZWHZkdT X-Google-Smtp-Source: APXvYqzIDJHCBOPPqqWuzbl22qCXh3S9n5GK/XG6TLUhuAa7LydrAJVxRy7dhju3kZ3o64OkjhHdLQ== X-Received: by 2002:a17:902:f01:: with SMTP id 1mr12927479ply.170.1561370164666; Mon, 24 Jun 2019 02:56:04 -0700 (PDT) Received: from ash ([115.76.181.38]) by smtp.gmail.com with ESMTPSA id q198sm15724474pfq.155.2019.06.24.02.56.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Jun 2019 02:56:04 -0700 (PDT) Received: by ash (sSMTP sendmail emulation); Mon, 24 Jun 2019 16:56:00 +0700 From: =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eQ==?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= Subject: [PATCH 5/6] match-trees.c: remove the_repo from shift_tree*() Date: Mon, 24 Jun 2019 16:55:32 +0700 Message-Id: <20190624095533.22162-6-pclouds@gmail.com> X-Mailer: git-send-email 2.22.0.rc0.322.g2b0371e29a In-Reply-To: <20190624095533.22162-1-pclouds@gmail.com> References: <20190624095533.22162-1-pclouds@gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Nguyễn Thái Ngọc Duy --- cache.h | 4 ++-- match-trees.c | 12 +++++++----- merge-recursive.c | 4 ++-- t/helper/test-match-trees.c | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/cache.h b/cache.h index cd84cc9bbe..ddefda2bb6 100644 --- a/cache.h +++ b/cache.h @@ -1786,8 +1786,8 @@ int add_files_to_cache(const char *prefix, const struct pathspec *pathspec, int extern int diff_auto_refresh_index; /* match-trees.c */ -void shift_tree(const struct object_id *, const struct object_id *, struct object_id *, int); -void shift_tree_by(const struct object_id *, const struct object_id *, struct object_id *, const char *); +void shift_tree(struct repository *, const struct object_id *, const struct object_id *, struct object_id *, int); +void shift_tree_by(struct repository *, const struct object_id *, const struct object_id *, struct object_id *, const char *); /* * whitespace rules. diff --git a/match-trees.c b/match-trees.c index de7e8a6783..f6c194c1cc 100644 --- a/match-trees.c +++ b/match-trees.c @@ -248,7 +248,8 @@ static int splice_tree(const struct object_id *oid1, const char *prefix, * other hand, it could cover tree one and we might need to pick a * subtree of it. */ -void shift_tree(const struct object_id *hash1, +void shift_tree(struct repository *r, + const struct object_id *hash1, const struct object_id *hash2, struct object_id *shifted, int depth_limit) @@ -290,7 +291,7 @@ void shift_tree(const struct object_id *hash1, if (!*del_prefix) return; - if (get_tree_entry(the_repository, hash2, del_prefix, shifted, &mode)) + if (get_tree_entry(r, hash2, del_prefix, shifted, &mode)) die("cannot find path %s in tree %s", del_prefix, oid_to_hex(hash2)); return; @@ -307,7 +308,8 @@ void shift_tree(const struct object_id *hash1, * Unfortunately we cannot fundamentally tell which one to * be prefixed, as recursive merge can work in either direction. */ -void shift_tree_by(const struct object_id *hash1, +void shift_tree_by(struct repository *r, + const struct object_id *hash1, const struct object_id *hash2, struct object_id *shifted, const char *shift_prefix) @@ -317,12 +319,12 @@ void shift_tree_by(const struct object_id *hash1, unsigned candidate = 0; /* Can hash2 be a tree at shift_prefix in tree hash1? */ - if (!get_tree_entry(the_repository, hash1, shift_prefix, &sub1, &mode1) && + if (!get_tree_entry(r, hash1, shift_prefix, &sub1, &mode1) && S_ISDIR(mode1)) candidate |= 1; /* Can hash1 be a tree at shift_prefix in tree hash2? */ - if (!get_tree_entry(the_repository, hash2, shift_prefix, &sub2, &mode2) && + if (!get_tree_entry(r, hash2, shift_prefix, &sub2, &mode2) && S_ISDIR(mode2)) candidate |= 2; diff --git a/merge-recursive.c b/merge-recursive.c index b051066795..6d772eb0eb 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -153,9 +153,9 @@ static struct tree *shift_tree_object(struct repository *repo, struct object_id shifted; if (!*subtree_shift) { - shift_tree(&one->object.oid, &two->object.oid, &shifted, 0); + shift_tree(repo, &one->object.oid, &two->object.oid, &shifted, 0); } else { - shift_tree_by(&one->object.oid, &two->object.oid, &shifted, + shift_tree_by(repo, &one->object.oid, &two->object.oid, &shifted, subtree_shift); } if (oideq(&two->object.oid, &shifted)) diff --git a/t/helper/test-match-trees.c b/t/helper/test-match-trees.c index 96857f26ac..b9fd427571 100644 --- a/t/helper/test-match-trees.c +++ b/t/helper/test-match-trees.c @@ -20,7 +20,7 @@ int cmd__match_trees(int ac, const char **av) if (!two) die("not a tree-ish %s", av[2]); - shift_tree(&one->object.oid, &two->object.oid, &shifted, -1); + shift_tree(the_repository, &one->object.oid, &two->object.oid, &shifted, -1); printf("shifted: %s\n", oid_to_hex(&shifted)); exit(0); From patchwork Mon Jun 24 09:55:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Duy Nguyen X-Patchwork-Id: 11012801 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 065BE13B4 for ; Mon, 24 Jun 2019 09:56:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EBE7428A01 for ; Mon, 24 Jun 2019 09:56:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E014D28B83; Mon, 24 Jun 2019 09:56:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 42DCF28A01 for ; Mon, 24 Jun 2019 09:56:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728350AbfFXJ4K (ORCPT ); Mon, 24 Jun 2019 05:56:10 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:40085 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726788AbfFXJ4J (ORCPT ); Mon, 24 Jun 2019 05:56:09 -0400 Received: by mail-pg1-f195.google.com with SMTP id w10so6820957pgj.7 for ; Mon, 24 Jun 2019 02:56:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tQ8G66IzFhrmiOyU+hGHIzgJstNvX3ln1rvQL+ojkA0=; b=GpqBybjBVz2iqo7kYwqYunBoUx/U/9I/RUzFAQeSCmLHh3pNH+n+IRqEuzMAYT8b5X 4MV7nnuREHDwLHCe/4jMVGUC2ofLhyQKfN1bt6AMinqDY1meXOHxnJtzlfswbVDZ0Kvn 4C3R8j9+GgK44nrD5SPMZt23TLjh4DWSswyYVJbTyBw4wLDQgltP5FGkI5qV5/DaSySN nSQYmiq/L38/cr6CdZ2XEsaykM5Ihx9+wYIF/KpM+AXEYc2o1YM3/wQwVokTT4eBqo2x pwjrMzaPjGQKvTqvgQi4uLyJavuVAgkipVgCvnCm90p4FNwA9Wn3LD72TIrYZ33TVz3O bhiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tQ8G66IzFhrmiOyU+hGHIzgJstNvX3ln1rvQL+ojkA0=; b=CcmIyr40ssiEWN12nRppA8Zi+lYfk1c2QFI9donaMtSPpmXYcrKSddroCmG88xm0zh R7tBZpuQr3v3P6wCcWGdiJDl61Favcj0n+haagIvmICyoU7d7XQ8NDOAsZQH23XXtw6d nJJQNl6bnvjNqULcv92c3erNsmJXyLuuEy9AOa8Em4nQTx3h7KluCH/jllx1OMXd/K3/ mz1MQVpf0+k1rhwyeof8WwBjnsu9sO5ol4SUy5Vz5+/aYbu/SRLFSCGqFC9rFjvCriCZ kisaZRhR2heb15SbhrAps+OeL076d6WBONKkAI2mMwwoeeU7r98psNJtFvf0jRzuF000 7XOQ== X-Gm-Message-State: APjAAAW9KzoRdyOJ1oMFCgVuSKfMK0k/c+fyOeI6wEYUJuCx5/z9mbTs a/JiPyr+sTLC6PYcTykEVC5mlS+V X-Google-Smtp-Source: APXvYqwvCmyxR+KI88NNvhIoLobCt0dvQaBaX+1FIPAxd+JybJvLdVvSYrjcmHAohskXqDKDF9wj1w== X-Received: by 2002:a63:5247:: with SMTP id s7mr30740956pgl.29.1561370168945; Mon, 24 Jun 2019 02:56:08 -0700 (PDT) Received: from ash ([115.76.181.38]) by smtp.gmail.com with ESMTPSA id p65sm12085258pfp.58.2019.06.24.02.56.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Jun 2019 02:56:08 -0700 (PDT) Received: by ash (sSMTP sendmail emulation); Mon, 24 Jun 2019 16:56:04 +0700 From: =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eQ==?= To: git@vger.kernel.org Cc: Junio C Hamano , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= Subject: [PATCH 6/6] Use the right 'struct repository' instead of the_repository Date: Mon, 24 Jun 2019 16:55:33 +0700 Message-Id: <20190624095533.22162-7-pclouds@gmail.com> X-Mailer: git-send-email 2.22.0.rc0.322.g2b0371e29a In-Reply-To: <20190624095533.22162-1-pclouds@gmail.com> References: <20190624095533.22162-1-pclouds@gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP There are a couple of places where 'struct repository' is already passed around, but the_repository is still used. Use the right repo. Signed-off-by: Nguyễn Thái Ngọc Duy --- merge-recursive.c | 35 ++++++++++++++++++++--------------- sequencer.c | 4 ++-- sha1-name.c | 6 ++---- shallow.c | 3 ++- 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/merge-recursive.c b/merge-recursive.c index 6d772eb0eb..12300131fc 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -465,17 +465,18 @@ static void get_files_dirs(struct merge_options *opt, struct tree *tree) { struct pathspec match_all; memset(&match_all, 0, sizeof(match_all)); - read_tree_recursive(the_repository, tree, "", 0, 0, + read_tree_recursive(opt->repo, tree, "", 0, 0, &match_all, save_files_dirs, opt); } -static int get_tree_entry_if_blob(const struct object_id *tree, +static int get_tree_entry_if_blob(struct repository *r, + const struct object_id *tree, const char *path, struct diff_filespec *dfs) { int ret; - ret = get_tree_entry(the_repository, tree, path, &dfs->oid, &dfs->mode); + ret = get_tree_entry(r, tree, path, &dfs->oid, &dfs->mode); if (S_ISDIR(dfs->mode)) { oidcpy(&dfs->oid, &null_oid); dfs->mode = 0; @@ -487,15 +488,16 @@ static int get_tree_entry_if_blob(const struct object_id *tree, * Returns an index_entry instance which doesn't have to correspond to * a real cache entry in Git's index. */ -static struct stage_data *insert_stage_data(const char *path, +static struct stage_data *insert_stage_data(struct repository *r, + const char *path, struct tree *o, struct tree *a, struct tree *b, struct string_list *entries) { struct string_list_item *item; struct stage_data *e = xcalloc(1, sizeof(struct stage_data)); - get_tree_entry_if_blob(&o->object.oid, path, &e->stages[1]); - get_tree_entry_if_blob(&a->object.oid, path, &e->stages[2]); - get_tree_entry_if_blob(&b->object.oid, path, &e->stages[3]); + get_tree_entry_if_blob(r, &o->object.oid, path, &e->stages[1]); + get_tree_entry_if_blob(r, &a->object.oid, path, &e->stages[2]); + get_tree_entry_if_blob(r, &b->object.oid, path, &e->stages[3]); item = string_list_insert(entries, path); item->util = e; return e; @@ -1900,12 +1902,13 @@ static struct diff_queue_struct *get_diffpairs(struct merge_options *opt, return ret; } -static int tree_has_path(struct tree *tree, const char *path) +static int tree_has_path(struct repository *r, struct tree *tree, + const char *path) { struct object_id hashy; unsigned short mode_o; - return !get_tree_entry(the_repository, + return !get_tree_entry(r, &tree->object.oid, path, &hashy, &mode_o); } @@ -2057,7 +2060,7 @@ static char *handle_path_level_conflicts(struct merge_options *opt, */ if (collision_ent->reported_already) { clean = 0; - } else if (tree_has_path(tree, new_path)) { + } else if (tree_has_path(opt->repo, tree, new_path)) { collision_ent->reported_already = 1; strbuf_add_separated_string_list(&collision_paths, ", ", &collision_ent->source_files); @@ -2135,7 +2138,7 @@ static void handle_directory_level_conflicts(struct merge_options *opt, string_list_append(&remove_from_merge, merge_ent->dir)->util = merge_ent; strbuf_release(&merge_ent->new_dir); - } else if (tree_has_path(head, head_ent->dir)) { + } else if (tree_has_path(opt->repo, head, head_ent->dir)) { /* 2. This wasn't a directory rename after all */ string_list_append(&remove_from_head, head_ent->dir)->util = head_ent; @@ -2149,7 +2152,7 @@ static void handle_directory_level_conflicts(struct merge_options *opt, hashmap_iter_init(dir_re_merge, &iter); while ((merge_ent = hashmap_iter_next(&iter))) { head_ent = dir_rename_find_entry(dir_re_head, merge_ent->dir); - if (tree_has_path(merge, merge_ent->dir)) { + if (tree_has_path(opt->repo, merge, merge_ent->dir)) { /* 2. This wasn't a directory rename after all */ string_list_append(&remove_from_merge, merge_ent->dir)->util = merge_ent; @@ -2478,7 +2481,7 @@ static void apply_directory_rename_modifications(struct merge_options *opt, if (pair->status == 'R') re->dst_entry->processed = 1; - re->dst_entry = insert_stage_data(new_path, + re->dst_entry = insert_stage_data(opt->repo, new_path, o_tree, a_tree, b_tree, entries); item = string_list_insert(entries, new_path); @@ -2587,14 +2590,16 @@ static struct string_list *get_renames(struct merge_options *opt, re->dir_rename_original_dest = NULL; item = string_list_lookup(entries, re->pair->one->path); if (!item) - re->src_entry = insert_stage_data(re->pair->one->path, + re->src_entry = insert_stage_data(opt->repo, + re->pair->one->path, o_tree, a_tree, b_tree, entries); else re->src_entry = item->util; item = string_list_lookup(entries, re->pair->two->path); if (!item) - re->dst_entry = insert_stage_data(re->pair->two->path, + re->dst_entry = insert_stage_data(opt->repo, + re->pair->two->path, o_tree, a_tree, b_tree, entries); else re->dst_entry = item->util; diff --git a/sequencer.c b/sequencer.c index d565fcf2b1..64428ac28f 100644 --- a/sequencer.c +++ b/sequencer.c @@ -3733,7 +3733,7 @@ static int pick_commits(struct repository *r, unlink(rebase_path_author_script()); unlink(rebase_path_stopped_sha()); unlink(rebase_path_amend()); - unlink(git_path_merge_head(the_repository)); + unlink(git_path_merge_head(r)); delete_ref(NULL, "REBASE_HEAD", NULL, REF_NO_DEREF); if (item->command == TODO_BREAK) @@ -4107,7 +4107,7 @@ static int commit_staged_changes(struct repository *r, opts, flags)) return error(_("could not commit staged changes.")); unlink(rebase_path_amend()); - unlink(git_path_merge_head(the_repository)); + unlink(git_path_merge_head(r)); if (final_fixup) { unlink(rebase_path_fixup_msg()); unlink(rebase_path_squash_msg()); diff --git a/sha1-name.c b/sha1-name.c index 3c9fa10af8..6069fe006b 100644 --- a/sha1-name.c +++ b/sha1-name.c @@ -478,7 +478,7 @@ static enum get_oid_result get_short_oid(struct repository *r, * or migrated from loose to packed. */ if (status == MISSING_OBJECT) { - reprepare_packed_git(the_repository); + reprepare_packed_git(r); find_short_object_filename(&ds); find_short_packed_object(&ds); status = finish_object_disambiguation(&ds, oid); @@ -1389,9 +1389,7 @@ int repo_get_oid_mb(struct repository *r, two = lookup_commit_reference_gently(r, &oid_tmp, 0); if (!two) return -1; - if (r != the_repository) - BUG("sorry get_merge_bases() can't take struct repository yet"); - mbs = get_merge_bases(one, two); + mbs = repo_get_merge_bases(r, one, two); if (!mbs || mbs->next) st = -1; else { diff --git a/shallow.c b/shallow.c index ce45297940..5fa2b15d37 100644 --- a/shallow.c +++ b/shallow.c @@ -248,7 +248,8 @@ static void check_shallow_file_for_update(struct repository *r) if (r->parsed_objects->is_shallow == -1) BUG("shallow must be initialized by now"); - if (!stat_validity_check(r->parsed_objects->shallow_stat, git_path_shallow(the_repository))) + if (!stat_validity_check(r->parsed_objects->shallow_stat, + git_path_shallow(r))) die("shallow file has changed since we read it"); }