git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] Updates to git-add--interactive
@ 2007-11-25 13:15 Wincent Colaiuta
  2007-11-25 13:15 ` [PATCH 1/3] Rename patch_update_file function to patch_update_pathspec Wincent Colaiuta
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Wincent Colaiuta @ 2007-11-25 13:15 UTC (permalink / raw)
  To: git; +Cc: gitster, peff

Here's an updated series, this time hopefully with the braindead
parts removed.

[PATCH 1/3] Add "--patch" option to git-add--interactive

    Unchanged.

[PATCH 2/3] Move pathspec validation into interactive_add

    Braindeadness removed.

[PATCH 3/3] Rename patch_update_file function to patch_update_pathspec

    Only modified insofar as to make it apply on top of PATCH 2.

The one remaining issue is that pathspecs like "\*.h" don't work.
But from comments earlier on in this thread I had the impression
that they should.

They don't work because such pathspecs don't work for the underlying
git-diff-files implementation that's used by git-add--interactive:

git diff-files --numstat --summary -- \*.h

Is some alternative being proposed that would allow them to work?

^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [PATCH v2] git-add--interactive pathspec and patch additions
@ 2007-11-23 21:07 Junio C Hamano
  2007-11-24 12:55 ` [PATCH 0/3] Updates to git-add--interactive Wincent Colaiuta
  0 siblings, 1 reply; 13+ messages in thread
From: Junio C Hamano @ 2007-11-23 21:07 UTC (permalink / raw)
  To: Wincent Colaiuta; +Cc: git, peff

Wincent Colaiuta <win@wincent.com> writes:

> The series implements these changes in seven steps that apply on top of
> "master"; these patches are rebased/squashed ones which *replace* the
> ones sent the other day:

That's very unfortunate, as some already usable bits from the
series are already in 'next'.

>     1. Add -q/--quiet switch to git-ls-files
>
> Needed because run_cmd_pipe() doesn't propagate the child exit status
> and system() likes to be chatty on the standard out. Of the possible
> workarounds adding this switch seems to be the cleanest and most
> portable.

I do not like this very much.  If it is a problem that
run_cmd_pipe() does not properly signal you an error, wouldn't
it be much better to fix _that_ problem?  That way we do not
have to add kludge to all commands we need to run and get the
exit status out of.

>     2. Rename patch_update_file function to patch_update_pathspec
>
> Merely cosmetic.
>
>     3. Add path-limiting to git-add--interactive
>     4. Bail if user supplies an invalid pathspec

On the first read, I did not quite like 4, but I'd agree it is
probably the cleanest implementation for 3 to reject a wrong
invocation early.

>     5. Teach builtin-add to pass path arguments to git-add--interactive

I think this is already in 'next'.

>     6. Add "--patch" option to git-add--interactive
>     7. Teach builtin-add to handle "--patch" option

These should be straightforward, but use of Getopt::Long feels
way overkill for an internal command like add--interactive which
is called by only a very limited known callers (exactly one).

If we assume "a single caller", we probably can do without 1 and
4, by making the caller in builtin-add to validate the list of
pathspecs, reusing the code for "ls-files --error-unmatch",
before calling the external helper "add--interactive".

There are functions refactored as part of the builtin-commit
series to be usable from outside "ls-files", and you can build a
imple function called from interactive_add(ac, av) using them:

static int validate_pathspec(const char *prefix, const char **pattern)
{
	int i, ret;
	char *m;

	if (!pattern || !*pattern)
        	return 0;

	for (i = 0; pattern[i]; i++)
		;
	m = xcalloc(1, i);

	for (i = 0; i < active_nr; i++) {
		struct cache_entry *ce = active_cache[i];
                (void) pathspec_match(pattern, m, ce->name, 0);
	}
        ret = report_path_error(m, pattern, prefix ? strlen(prefix) : 0);
        free(m);
        return ret;
}

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2007-11-26  4:15 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-25 13:15 [PATCH 0/3] Updates to git-add--interactive Wincent Colaiuta
2007-11-25 13:15 ` [PATCH 1/3] Rename patch_update_file function to patch_update_pathspec Wincent Colaiuta
2007-11-25 13:15   ` [PATCH 2/3] Move pathspec validation into interactive_add Wincent Colaiuta
2007-11-25 13:15     ` [PATCH 3/3] Add "--patch" option to git-add--interactive Wincent Colaiuta
2007-11-25 18:11   ` [PATCH 1/3] Rename patch_update_file function to patch_update_pathspec Junio C Hamano
2007-11-25 18:07 ` [PATCH] builtin-add: fix command line building to call interactive Junio C Hamano
2007-11-25 18:27   ` Wincent Colaiuta
2007-11-25 18:36     ` Junio C Hamano
2007-11-25 19:02       ` Wincent Colaiuta
2007-11-25 19:48         ` Junio C Hamano
2007-11-26  4:14           ` Jeff King
2007-11-25 18:10 ` [PATCH] add -i: Fix running from a subdirectory Junio C Hamano
  -- strict thread matches above, loose matches on Subject: below --
2007-11-23 21:07 [PATCH v2] git-add--interactive pathspec and patch additions Junio C Hamano
2007-11-24 12:55 ` [PATCH 0/3] Updates to git-add--interactive Wincent Colaiuta
2007-11-24 12:55   ` [PATCH 1/3] Rename patch_update_file function to patch_update_pathspec Wincent Colaiuta

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).