Merge branch 'jl/submodule-mv'
"git mv A B" when moving a submodule A does "the right thing", inclusing relocating its working tree and adjusting the paths in the .gitmodules file. * jl/submodule-mv: (53 commits) rm: delete .gitmodules entry of submodules removed from the work tree mv: update the path entry in .gitmodules for moved submodules submodule.c: add .gitmodules staging helper functions mv: move submodules using a gitfile mv: move submodules together with their work trees rm: do not set a variable twice without intermediate reading. t6131 - skip tests if on case-insensitive file system parse_pathspec: accept :(icase)path syntax pathspec: support :(glob) syntax pathspec: make --literal-pathspecs disable pathspec magic pathspec: support :(literal) syntax for noglob pathspec kill limit_pathspec_to_literal() as it's only used by parse_pathspec() parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN parse_pathspec: make sure the prefix part is wildcard-free rename field "raw" to "_raw" in struct pathspec tree-diff: remove the use of pathspec's raw[] in follow-rename codepath remove match_pathspec() in favor of match_pathspec_depth() remove init_pathspec() in favor of parse_pathspec() remove diff_tree_{setup,release}_paths convert common_prefix() to use struct pathspec ...
This commit is contained in:
16
wt-status.c
16
wt-status.c
@ -1,4 +1,5 @@
|
||||
#include "cache.h"
|
||||
#include "pathspec.h"
|
||||
#include "wt-status.h"
|
||||
#include "object.h"
|
||||
#include "dir.h"
|
||||
@ -438,7 +439,7 @@ static void wt_status_collect_changes_worktree(struct wt_status *s)
|
||||
}
|
||||
rev.diffopt.format_callback = wt_status_collect_changed_cb;
|
||||
rev.diffopt.format_callback_data = s;
|
||||
init_pathspec(&rev.prune_data, s->pathspec);
|
||||
copy_pathspec(&rev.prune_data, &s->pathspec);
|
||||
run_diff_files(&rev, 0);
|
||||
}
|
||||
|
||||
@ -463,22 +464,20 @@ static void wt_status_collect_changes_index(struct wt_status *s)
|
||||
rev.diffopt.detect_rename = 1;
|
||||
rev.diffopt.rename_limit = 200;
|
||||
rev.diffopt.break_opt = 0;
|
||||
init_pathspec(&rev.prune_data, s->pathspec);
|
||||
copy_pathspec(&rev.prune_data, &s->pathspec);
|
||||
run_diff_index(&rev, 1);
|
||||
}
|
||||
|
||||
static void wt_status_collect_changes_initial(struct wt_status *s)
|
||||
{
|
||||
struct pathspec pathspec;
|
||||
int i;
|
||||
|
||||
init_pathspec(&pathspec, s->pathspec);
|
||||
for (i = 0; i < active_nr; i++) {
|
||||
struct string_list_item *it;
|
||||
struct wt_status_change_data *d;
|
||||
const struct cache_entry *ce = active_cache[i];
|
||||
|
||||
if (!ce_path_match(ce, &pathspec))
|
||||
if (!ce_path_match(ce, &s->pathspec))
|
||||
continue;
|
||||
it = string_list_insert(&s->change, ce->name);
|
||||
d = it->util;
|
||||
@ -493,7 +492,6 @@ static void wt_status_collect_changes_initial(struct wt_status *s)
|
||||
else
|
||||
d->index_status = DIFF_STATUS_ADDED;
|
||||
}
|
||||
free_pathspec(&pathspec);
|
||||
}
|
||||
|
||||
static void wt_status_collect_untracked(struct wt_status *s)
|
||||
@ -516,12 +514,12 @@ static void wt_status_collect_untracked(struct wt_status *s)
|
||||
dir.flags |= DIR_SHOW_IGNORED_TOO;
|
||||
setup_standard_excludes(&dir);
|
||||
|
||||
fill_directory(&dir, s->pathspec);
|
||||
fill_directory(&dir, &s->pathspec);
|
||||
|
||||
for (i = 0; i < dir.nr; i++) {
|
||||
struct dir_entry *ent = dir.entries[i];
|
||||
if (cache_name_is_other(ent->name, ent->len) &&
|
||||
match_pathspec(s->pathspec, ent->name, ent->len, 0, NULL))
|
||||
match_pathspec_depth(&s->pathspec, ent->name, ent->len, 0, NULL))
|
||||
string_list_insert(&s->untracked, ent->name);
|
||||
free(ent);
|
||||
}
|
||||
@ -529,7 +527,7 @@ static void wt_status_collect_untracked(struct wt_status *s)
|
||||
for (i = 0; i < dir.ignored_nr; i++) {
|
||||
struct dir_entry *ent = dir.ignored[i];
|
||||
if (cache_name_is_other(ent->name, ent->len) &&
|
||||
match_pathspec(s->pathspec, ent->name, ent->len, 0, NULL))
|
||||
match_pathspec_depth(&s->pathspec, ent->name, ent->len, 0, NULL))
|
||||
string_list_insert(&s->ignored, ent->name);
|
||||
free(ent);
|
||||
}
|
||||
|
Reference in New Issue
Block a user