All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Christian Couder <christian.couder@gmail.com>
Cc: git@vger.kernel.org, "Jeff King" <peff@peff.net>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
	"Karsten Blees" <karsten.blees@gmail.com>,
	"Nguyen Thai Ngoc Duy" <pclouds@gmail.com>,
	"Stefan Beller" <sbeller@google.com>,
	"Eric Sunshine" <sunshine@sunshineco.com>,
	"Ramsay Jones" <ramsay@ramsayjones.plus.com>,
	"Johannes Sixt" <j6t@kdbg.org>, "René Scharfe" <l.s.r@web.de>,
	"Christian Couder" <chriscool@tuxfamily.org>
Subject: Re: [PATCH v10 33/40] environment: add set_index_file()
Date: Mon, 08 Aug 2016 15:13:38 -0700	[thread overview]
Message-ID: <xmqq60raewod.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <20160808210337.5038-34-chriscool@tuxfamily.org> (Christian Couder's message of "Mon, 8 Aug 2016 23:03:30 +0200")

Christian Couder <christian.couder@gmail.com> writes:

> Now if someone really needs to use this new function, it should be
> used like this:
>
>     /* Save current index file */
>     old_index_file = get_index_file();
>     set_index_file((char *)tmp_index_file);
>
>     /* Do stuff that will use tmp_index_file as the index file */
>     ...
>
>     /* When finished reset the index file */
>     set_index_file(old_index_file);
>
> It is intended to be used by builtins commands, in fact only `git am`,
> to temporarily change the index file used by libified code.
>
> This is useful when libified code uses the global index, but a builtin
> command wants another index file to be used instead.

That is OK, but I do not think NO_THE_INDEX_COMPATIBILITY_MACROS has
much to do with this hack.  Even if you stop using the_index and
have the caller pass its own temporary index_state, that structure
does *not* know which file to read the (temporary) index from, or
which file to write the (temporary) index to.  In fact, apply.c
already does this in build_fake_ancestor():

    static int build_fake_ancestor(struct patch *list, const char *filename)
    {
            ...
            hold_lock_file_for_update(&lock, filename, LOCK_DIE_ON_ERROR);
            res = write_locked_index(&result, &lock, COMMIT_LOCK);
            ...
    }

As you can see, this function works with a non-standard/default
index file _without_ having to use non-default index_state.  What
the set_index_file() hack allows you to do is to use interface that
does *NOT* pass "filename" like the caller does to this function.

Isn't the mention on NO_THE_INDEX_COMPATIBILITY_MACROS in the added
comments (there are two) pure red-herring?

  reply	other threads:[~2016-08-08 22:13 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-08 21:02 [PATCH v10 00/40] libify apply and use lib in am, part 2 Christian Couder
2016-08-08 21:02 ` [PATCH v10 01/40] apply: make some names more specific Christian Couder
2016-08-09 14:51   ` stefan.naewe
2016-08-11  8:40     ` Christian Couder
2016-08-11  8:55       ` stefan.naewe
2016-08-08 21:02 ` [PATCH v10 02/40] apply: move 'struct apply_state' to apply.h Christian Couder
2016-08-08 21:03 ` [PATCH v10 03/40] builtin/apply: make apply_patch() return -1 or -128 instead of die()ing Christian Couder
2016-08-08 21:03 ` [PATCH v10 04/40] builtin/apply: read_patch_file() return -1 " Christian Couder
2016-08-08 21:03 ` [PATCH v10 05/40] builtin/apply: make find_header() return -128 " Christian Couder
2016-08-08 21:03 ` [PATCH v10 06/40] builtin/apply: make parse_chunk() return a negative integer on error Christian Couder
2016-08-08 21:03 ` [PATCH v10 07/40] builtin/apply: make parse_single_patch() return -1 " Christian Couder
2016-08-08 21:03 ` [PATCH v10 08/40] builtin/apply: make parse_whitespace_option() return -1 instead of die()ing Christian Couder
2016-08-08 21:03 ` [PATCH v10 09/40] builtin/apply: make parse_ignorewhitespace_option() " Christian Couder
2016-08-08 21:03 ` [PATCH v10 10/40] builtin/apply: move init_apply_state() to apply.c Christian Couder
2016-08-08 21:03 ` [PATCH v10 11/40] apply: make init_apply_state() return -1 instead of exit()ing Christian Couder
2016-08-08 21:03 ` [PATCH v10 12/40] builtin/apply: make check_apply_state() return -1 instead of die()ing Christian Couder
2016-08-08 21:03 ` [PATCH v10 13/40] builtin/apply: move check_apply_state() to apply.c Christian Couder
2016-08-08 21:03 ` [PATCH v10 14/40] builtin/apply: make apply_all_patches() return 128 or 1 on error Christian Couder
2016-08-08 21:03 ` [PATCH v10 15/40] builtin/apply: make parse_traditional_patch() return -1 " Christian Couder
2016-08-08 21:03 ` [PATCH v10 16/40] builtin/apply: make gitdiff_*() return 1 at end of header Christian Couder
2016-08-08 21:03 ` [PATCH v10 17/40] builtin/apply: make gitdiff_*() return -1 on error Christian Couder
2016-08-08 21:03 ` [PATCH v10 18/40] builtin/apply: change die_on_unsafe_path() to check_unsafe_path() Christian Couder
2016-08-08 21:03 ` [PATCH v10 19/40] builtin/apply: make build_fake_ancestor() return -1 on error Christian Couder
2016-08-08 21:03 ` [PATCH v10 20/40] builtin/apply: make remove_file() " Christian Couder
2016-08-08 21:03 ` [PATCH v10 21/40] builtin/apply: make add_conflicted_stages_file() " Christian Couder
2016-08-08 21:03 ` [PATCH v10 22/40] builtin/apply: make add_index_file() " Christian Couder
2016-08-08 21:03 ` [PATCH v10 23/40] builtin/apply: make create_file() " Christian Couder
2016-08-08 21:03 ` [PATCH v10 24/40] builtin/apply: make write_out_one_result() " Christian Couder
2016-08-08 21:03 ` [PATCH v10 25/40] builtin/apply: make write_out_results() " Christian Couder
2016-08-08 21:03 ` [PATCH v10 26/40] builtin/apply: make try_create_file() " Christian Couder
2016-08-08 21:03 ` [PATCH v10 27/40] builtin/apply: make create_one_file() " Christian Couder
2016-08-08 21:03 ` [PATCH v10 28/40] builtin/apply: rename option parsing functions Christian Couder
2016-08-09 14:55   ` stefan.naewe
2016-08-08 21:03 ` [PATCH v10 29/40] apply: rename and move opt constants to apply.h Christian Couder
2016-08-08 21:03 ` [PATCH v10 31/40] apply: make some parsing functions static again Christian Couder
2016-08-08 21:03 ` [PATCH v10 32/40] apply: use error_errno() where possible Christian Couder
2016-08-08 21:03 ` [PATCH v10 33/40] environment: add set_index_file() Christian Couder
2016-08-08 22:13   ` Junio C Hamano [this message]
2016-08-10 16:52     ` Christian Couder
2016-08-10 17:34       ` Junio C Hamano
2016-08-11 19:08         ` Christian Couder
2016-08-11 19:30           ` Junio C Hamano
2016-08-08 21:03 ` [PATCH v10 34/40] apply: make it possible to silently apply Christian Couder
2016-08-08 21:03 ` [PATCH v10 35/40] apply: don't print on stdout in verbosity_silent mode Christian Couder
2016-08-08 21:03 ` [PATCH v10 36/40] usage: add set_warn_routine() Christian Couder
2016-08-08 21:03 ` [PATCH v10 37/40] usage: add get_error_routine() and get_warn_routine() Christian Couder
2016-08-08 21:03 ` [PATCH v10 38/40] apply: change error_routine when silent Christian Couder
2016-08-08 21:03 ` [PATCH v10 39/40] apply: refactor `git apply` option parsing Christian Couder
2016-08-08 21:03 ` [PATCH v10 40/40] builtin/am: use apply api in run_apply() Christian Couder
2016-08-08 21:23 ` [PATCH v10 00/40] libify apply and use lib in am, part 2 Christian Couder
2016-08-08 22:16   ` Junio C Hamano

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=xmqq60raewod.fsf@gitster.mtv.corp.google.com \
    --to=gitster@pobox.com \
    --cc=avarab@gmail.com \
    --cc=chriscool@tuxfamily.org \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=j6t@kdbg.org \
    --cc=karsten.blees@gmail.com \
    --cc=l.s.r@web.de \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.net \
    --cc=ramsay@ramsayjones.plus.com \
    --cc=sbeller@google.com \
    --cc=sunshine@sunshineco.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.