From: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
To: phillip.wood@dunelm.org.uk,
Alexandr Miloslavskiy via GitGitGadget <gitgitgadget@gmail.com>,
git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH 5/5] commit: support the --pathspec-from-file option
Date: Wed, 11 Dec 2019 16:06:57 +0100 [thread overview]
Message-ID: <9d77a425-da8d-d6e7-f51f-c4ce6ee988d5@syntevo.com> (raw)
In-Reply-To: <b9454df6-7d31-e255-84bd-8a1c548cffd7@gmail.com>
On 11.12.2019 15:27, Phillip Wood wrote:
> Thanks, one other thing I forgot to mention yesterday is to ask what the
> expected behavior is if the user passes an empty file to
> --pathspec-from-file. With no pathspecs on the command line commit,
> checkout, reset and restore-files all default to operating on all paths
> but passing --pathspec-from-file implies the user wants to specify
> specific paths so I think it would perhaps be better to error out if no
> paths are given. There is a precedent for this in checkout-index which
> does nothing if no paths are given (though I can't remember if it errors
> out or not).
Back when I composed patch for `git commit`, I spent some time thinking
about this question. I agree that empty `--pathspec-from-file` is weird.
Eventually I decided that `--pathspec-from-file` shall be as close as
possible to passing pathspec args. So empty file should behave the same
way as passing zero pathspec args. It's more or less the question "if
user does something unexpected, what is expected?". I decided that
treating as zero args doesn't sound dangerous to me, and it's a very
weird case anyway, so let's just treat as zero args.
>> What I find obscure in your suggestion/patch is that innocently
>> looking `prepare_index()` suddenly clears pathspec as well. It's even
>> harder to see when called through `dry_run_commit()`.
>
> It would be easy enough to clear pathspec in cmd_commit() I just didn't
> bother to do it.
Yes, this thought also came to me after I replied. I agree that this is
viable and seems to solve most problems.
Now I'm in the situation where before me, code already wasn't perfect,
and I can continue to extend it in the same direction, or try to
refactor to make it better. I actually choose the second path: [1][2].
These were two "don't" lessons for me, as both topics now gather dust in
mail graveyard. No good deed remains unpunished, I guess?
> I think that's a bit different to
> the pathspec case as it's about the lifetime of the return value of a
> function rather than a function freeing an argument passed to it.
Both cases are about lifetime that ends where it was not expected. You
can probably agree that it never makes code easier to understand, and at
best it will be properly accounted for and does not explode. Again, both
choices were somewhat evil.
[1]
https://public-inbox.org/git/pull.479.git.1574969538.gitgitgadget@gmail.com/
[2]
https://public-inbox.org/git/pull.477.git.1574848137.gitgitgadget@gmail.com/T/#u
next prev parent reply other threads:[~2019-12-11 15:07 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-04 19:26 [PATCH 0/5] Add --pathspec-from-file option for reset, commit Alexandr Miloslavskiy via GitGitGadget
2019-11-04 19:26 ` [PATCH 1/5] pathspec: add new function to parse file Alexandr Miloslavskiy via GitGitGadget
2019-11-05 15:02 ` Phillip Wood
2019-11-05 19:14 ` Alexandr Miloslavskiy
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-11-04 19:26 ` [PATCH 2/5] doc: reset: unify <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-06 4:01 ` Junio C Hamano
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-11-07 5:46 ` Junio C Hamano
2019-11-07 11:05 ` Alexandr Miloslavskiy
2019-11-08 3:04 ` Junio C Hamano
2019-11-04 19:26 ` [PATCH 3/5] reset: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-11-05 15:03 ` Phillip Wood
2019-11-05 19:22 ` Phillip Wood
2019-11-05 19:36 ` Alexandr Miloslavskiy
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-11-05 16:14 ` Phillip Wood
2019-11-05 19:37 ` Alexandr Miloslavskiy
2019-11-06 4:40 ` Junio C Hamano
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-11-04 19:26 ` [PATCH 4/5] doc: commit: unify <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-06 4:50 ` Junio C Hamano
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-11-07 5:54 ` Junio C Hamano
2019-11-07 11:39 ` Alexandr Miloslavskiy
2019-11-04 19:26 ` [PATCH 5/5] commit: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-11-05 16:27 ` Phillip Wood
2019-11-05 19:42 ` Alexandr Miloslavskiy
2019-11-06 15:56 ` Alexandr Miloslavskiy
2019-12-10 10:42 ` Phillip Wood
2019-12-11 11:43 ` Alexandr Miloslavskiy
2019-12-11 14:27 ` Phillip Wood
2019-12-11 15:06 ` Alexandr Miloslavskiy [this message]
2019-12-11 16:14 ` Junio C Hamano
2019-12-11 16:20 ` Alexandr Miloslavskiy
2019-12-12 14:56 ` Alexandr Miloslavskiy
2019-11-06 4:51 ` Junio C Hamano
2019-11-06 15:51 ` [PATCH v2 0/6] Add --pathspec-from-file option for reset, commit Alexandr Miloslavskiy via GitGitGadget
2019-11-06 15:51 ` [PATCH v2 1/6] parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul` Alexandr Miloslavskiy via GitGitGadget
2019-11-06 15:51 ` [PATCH v2 2/6] pathspec: add new function to parse file Alexandr Miloslavskiy via GitGitGadget
2019-11-19 5:59 ` Junio C Hamano
2019-11-19 16:50 ` Alexandr Miloslavskiy
2019-11-06 15:51 ` [PATCH v2 3/6] doc: reset: unify <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-19 6:05 ` Junio C Hamano
2019-11-19 16:52 ` Alexandr Miloslavskiy
2019-11-06 15:51 ` [PATCH v2 4/6] reset: support the `--pathspec-from-file` option Alexandr Miloslavskiy via GitGitGadget
2019-11-06 15:51 ` [PATCH v2 5/6] doc: commit: unify <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-19 6:16 ` Junio C Hamano
2019-11-19 16:53 ` Alexandr Miloslavskiy
2019-11-19 17:02 ` Alexandr Miloslavskiy
2019-11-06 15:51 ` [PATCH v2 6/6] commit: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-11-19 6:10 ` Junio C Hamano
2019-11-19 16:56 ` Alexandr Miloslavskiy
2019-11-19 16:48 ` [PATCH v3 0/6] Add --pathspec-from-file option for reset, commit Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 1/6] parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul` Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 2/6] pathspec: add new function to parse file Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 3/6] doc: reset: synchronize <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 4/6] reset: support the `--pathspec-from-file` option Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 5/6] doc: commit: synchronize <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-11-19 16:48 ` [PATCH v3 6/6] commit: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-11-20 4:04 ` [PATCH v3 0/6] Add --pathspec-from-file option for reset, commit Junio C Hamano
2019-11-20 9:22 ` Alexandr Miloslavskiy
2019-12-03 14:02 ` [PATCH v4 00/13] Add --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 01/13] parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul` Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 02/13] pathspec: add new function to parse file Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 03/13] doc: reset: synchronize <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 04/13] reset: support the `--pathspec-from-file` option Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 05/13] doc: commit: synchronize <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 06/13] commit: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 07/13] cmd_add: prepare for next patch Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 08/13] add: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 09/13] doc: checkout: remove duplicate synopsis Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 10/13] doc: checkout: fix broken text reference Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 11/13] doc: checkout: synchronize <pathspec> description Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 12/13] doc: restore: " Alexandr Miloslavskiy via GitGitGadget
2019-12-03 14:02 ` [PATCH v4 13/13] checkout, restore: support the --pathspec-from-file option Alexandr Miloslavskiy via GitGitGadget
2019-12-03 16:55 ` [PATCH v4 00/13] Add " Junio C Hamano
2019-12-03 17:06 ` Alexandr Miloslavskiy
2019-12-04 19:25 ` Junio C Hamano
2019-12-05 10:43 ` Alexandr Miloslavskiy
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=9d77a425-da8d-d6e7-f51f-c4ce6ee988d5@syntevo.com \
--to=alexandr.miloslavskiy@syntevo.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=phillip.wood@dunelm.org.uk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).