Skip to content

Commit

Permalink
Merge branch 'nd/magic-pathspec'
Browse files Browse the repository at this point in the history
Use "struct pathspec" interface in more places, instead of array of
characters, the latter of which cannot express magic pathspecs
(e.g. ":(icase)makefile" that matches both Makefile and makefile).

* nd/magic-pathspec:
  add: lift the pathspec magic restriction on "add -p"
  pathspec: catch prepending :(prefix) on pathspec with short magic
  • Loading branch information
Junio C Hamano committed Sep 9, 2013
2 parents af226bf + 625c330 commit fadf96a
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 16 deletions.
8 changes: 1 addition & 7 deletions builtin/add.c
Original file line number Diff line number Diff line change
Expand Up @@ -270,13 +270,7 @@ int interactive_add(int argc, const char **argv, const char *prefix, int patch)
{
struct pathspec pathspec;

/*
* git-add--interactive itself does not parse pathspec. It
* simply passes the pathspec to other builtin commands. Let's
* hope all of them support all magic, or we'll need to limit
* the magic here.
*/
parse_pathspec(&pathspec, PATHSPEC_ALL_MAGIC & ~PATHSPEC_FROMTOP,
parse_pathspec(&pathspec, 0,
PATHSPEC_PREFER_FULL |
PATHSPEC_SYMLINK_LEADING_PATH |
PATHSPEC_PREFIX_ORIGIN,
Expand Down
7 changes: 0 additions & 7 deletions builtin/checkout.c
Original file line number Diff line number Diff line change
Expand Up @@ -1146,13 +1146,6 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
}

if (argc) {
/*
* In patch mode (opts.patch_mode != 0), we pass the
* pathspec to an external program, git-add--interactive.
* Do not accept any kind of magic that that program
* cannot handle. Magic mask is pretty safe to be
* lifted for new magic when opts.patch_mode == 0.
*/
parse_pathspec(&opts.pathspec, 0,
opts.patch_mode ? PATHSPEC_PREFIX_ORIGIN : 0,
prefix, argv);
Expand Down
4 changes: 3 additions & 1 deletion pathspec.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,9 @@ static unsigned prefix_pathspec(struct pathspec_item *item,
const char *start = elt;
if (prefixlen && !literal_global) {
/* Preserve the actual prefix length of each pattern */
if (long_magic_end) {
if (short_magic)
die("BUG: prefixing on short magic is not supported");
else if (long_magic_end) {
strbuf_add(&sb, start, long_magic_end - start);
strbuf_addf(&sb, ",prefix:%d", prefixlen);
start = long_magic_end;
Expand Down
2 changes: 1 addition & 1 deletion pathspec.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
PATHSPEC_GLOB | \
PATHSPEC_ICASE)

#define PATHSPEC_ONESTAR 1 /* the pathspec pattern sastisfies GFNM_ONESTAR */
#define PATHSPEC_ONESTAR 1 /* the pathspec pattern satisfies GFNM_ONESTAR */

struct pathspec {
const char **_raw; /* get_pathspec() result, not freed by free_pathspec() */
Expand Down

0 comments on commit fadf96a

Please sign in to comment.