From: Jiang Xin <worldhello.net@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Eric Sunshine <sunshine@sunshineco.com>,
Matthieu Moy <Matthieu.Moy@imag.fr>,
Thomas Rast <trast@inf.ethz.ch>, Git List <git@vger.kernel.org>
Subject: Re: [PATCH v7 01/10] Add support for -i/--interactive to git-clean
Date: Fri, 10 May 2013 00:35:37 +0800 [thread overview]
Message-ID: <CANYiYbEvYXiRE0OeR5vqBAaOFFpJTPBetQbawZD5EcMCj8veFw@mail.gmail.com> (raw)
In-Reply-To: <7vr4hhflym.fsf@alter.siamese.dyndns.org>
2013/5/9 Junio C Hamano <gitster@pobox.com>:
>> @@ -15,9 +15,12 @@
>> #include "quote.h"
>>
>> static int force = -1; /* unset */
>> +static int interactive;
>> +static struct string_list del_list = STRING_LIST_INIT_DUP;
>> +static const char **the_prefix;
>
> Ehh, why?
Next reroll will save relative paths in del_list, and eliminate "**the_prefix".
>> +
>> + printf(_("Input ignore patterns>> "));
>> + if (strbuf_getline(&confirm, stdin, '\n') != EOF) {
>> + strbuf_trim(&confirm);
>> + } else {
>> + putchar('\n');
>> + break;
>
> Why break here? If we got nothing, wouldn't confirm.len be zero?
> If we did get something but the input got flushed without line-end,
> sending '\n' to the terminal may be justified, but in that case you
> would may have something useful, and asking confirm.len if it is
> empty would be the consistent way to check between two cases, no?
Yes, this break is unnecessary, it left from pervious revision.
>
> A few points:
>
> * Pass prefix as a parameter to this function, just like how
> remove_dirs() gets called, and get rid of the_prefix.
>
> * The result of quote_* is designed to avoid ambiguities, by
> applying C-style quotes like HT => \t and adding "" pair around
> it as necessary. I doubt feeding it to is_excluded() makes any
> sense. You probably meant path_relative(), but I am not sure.
Appreciated, that is what I need. I write a local version of path_relative,
a combination of path_relative (in quote.c) and relative_path (in path.c),
like this:
static const char *path_relative(const char *in, const char *prefix)
>> + for_each_string_list_item(item, &del_list) {
>> + struct stat st;
>> +
>> + if (lstat(item->string, &st))
>> + continue;
>
> Ignoring errors silently?
>
> With the "interactive" stuff, can you get into a situation where you
> originally propose to remove D and D/F but the user tells you to
> remove D (editing D/F away), or vice versa?
I can not find out such a case, that remove parent directory D,
while left file in it, such as D/F.
> I think this patch should be in at least two parts:
>
> - Introduce the two-phase "collect in del_list, remove in a
> separate loop at the end" restructuring.
>
> - (optional, if you are feeling ambitious) Change the path that is
> stored in del_list relative to the prefix, so that all functions
> that operate on the string in the del_list do not have to do
> *_relative() thing. Some functions may instead have to prepend
> prefix but if they are minority compared to the users of
> *_relative(), it may be an overall win from the readability's
> point of view.
>
> - Add the "interactively allow you to reduce the del_list" bit
> between the two phases.
>
Will send new reroll soon.
--
Jiang Xin
next prev parent reply other threads:[~2013-05-09 16:35 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-08 11:38 [PATCH v7 00/10] interactive git clean Jiang Xin
2013-05-08 11:38 ` [PATCH v7 01/10] Add support for -i/--interactive to git-clean Jiang Xin
2013-05-08 11:38 ` [PATCH v7 02/10] Show items of interactive git-clean in columns Jiang Xin
2013-05-08 11:38 ` [PATCH v7 03/10] Add colors to interactive git-clean Jiang Xin
2013-05-08 11:38 ` [PATCH v7 04/10] git-clean: use a git-add-interactive compatible UI Jiang Xin
2013-05-08 11:38 ` [PATCH v7 05/10] git-clean: interactive cleaning by select numbers Jiang Xin
2013-05-08 11:38 ` [PATCH v7 06/10] git-clean: rm -i style interactive cleaning Jiang Xin
2013-05-08 11:38 ` [PATCH v7 07/10] git-clean: update document for interactive git-clean Jiang Xin
2013-05-08 11:38 ` [PATCH v7 08/10] git-clean refactor: save some options in clean_flags Jiang Xin
2013-05-08 11:38 ` [PATCH v7 09/10] git-clean refactor: wrap in scan_clean_candidates Jiang Xin
2013-05-08 11:38 ` [PATCH v7 10/10] git-clean: change clean flags in interactive mode Jiang Xin
2013-05-08 17:02 ` [PATCH v7 04/10] git-clean: use a git-add-interactive compatible UI Junio C Hamano
2013-05-12 17:15 ` [PATCH v7 03/10] Add colors to interactive git-clean Matthieu Moy
2013-05-13 2:47 ` Jiang Xin
2013-05-13 5:28 ` Junio C Hamano
2013-05-13 6:57 ` Matthieu Moy
2013-05-08 17:02 ` [PATCH v7 02/10] Show items of interactive git-clean in columns Junio C Hamano
2013-05-12 17:09 ` Matthieu Moy
2013-05-08 16:57 ` [PATCH v7 01/10] Add support for -i/--interactive to git-clean Junio C Hamano
2013-05-09 16:35 ` Jiang Xin [this message]
2013-05-09 17:14 ` [PATCH v8 00/12] Interactive git clean Jiang Xin
2013-05-09 17:14 ` [PATCH v8 01/12] git-clean refactor: hold cleaning items in del_list Jiang Xin
2013-05-09 17:14 ` [PATCH v8 02/12] git-clean: add support for -i/--interactive Jiang Xin
2013-05-09 17:14 ` [PATCH v8 03/12] git-clean: show items of del_list in columns Jiang Xin
2013-05-09 17:14 ` [PATCH v8 04/12] git-clean: add colors to interactive git-clean Jiang Xin
2013-05-09 17:14 ` [PATCH v8 05/12] git-clean: use a git-add-interactive compatible UI Jiang Xin
2013-05-09 17:14 ` [PATCH v8 06/12] git-clean: add filter by pattern interactive action Jiang Xin
2013-05-09 17:14 ` [PATCH v8 07/12] git-clean: add select by numbers " Jiang Xin
2013-05-09 17:14 ` [PATCH v8 08/12] git-clean: add ask each " Jiang Xin
2013-05-09 17:14 ` [PATCH v8 09/12] git-clean refactor: save some options in clean_flags Jiang Xin
2013-05-09 17:14 ` [PATCH v8 10/12] git-clean refactor: add wrapper scan_clean_candidates Jiang Xin
2013-05-09 17:14 ` [PATCH v8 11/12] git-clean: add toggle flags interactive action Jiang Xin
2013-05-09 17:14 ` [PATCH v8 12/12] git-clean: update document for interactive git-clean Jiang Xin
2013-05-12 16:54 ` [PATCH v7 01/10] Add support for -i/--interactive to git-clean Matthieu Moy
2013-05-13 14:46 ` Jiang Xin
2013-05-08 15:15 ` [PATCH v7 00/10] interactive git clean Eric Sunshine
2013-05-08 15:18 ` Eric Sunshine
2013-05-08 16:08 ` Junio C Hamano
2013-05-12 17:28 ` Matthieu Moy
2013-05-13 2:34 ` Jiang Xin
2013-05-13 6:55 ` Matthieu Moy
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=CANYiYbEvYXiRE0OeR5vqBAaOFFpJTPBetQbawZD5EcMCj8veFw@mail.gmail.com \
--to=worldhello.net@gmail.com \
--cc=Matthieu.Moy@imag.fr \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=sunshine@sunshineco.com \
--cc=trast@inf.ethz.ch \
/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).