Merge branch 'jc/checkout-from-tree-keep-local-changes' into maint
* jc/checkout-from-tree-keep-local-changes: checkout $tree $path: do not clobber local changes in $path not in $tree
This commit is contained in:
@ -71,7 +71,7 @@ static int update_some(const unsigned char *sha1, const char *base, int baselen,
|
||||
hashcpy(ce->sha1, sha1);
|
||||
memcpy(ce->name, base, baselen);
|
||||
memcpy(ce->name + baselen, pathname, len - baselen);
|
||||
ce->ce_flags = create_ce_flags(len, 0);
|
||||
ce->ce_flags = create_ce_flags(len, 0) | CE_UPDATE;
|
||||
ce->ce_mode = create_ce_mode(mode);
|
||||
add_cache_entry(ce, ADD_CACHE_OK_TO_ADD | ADD_CACHE_OK_TO_REPLACE);
|
||||
return 0;
|
||||
@ -228,6 +228,8 @@ static int checkout_paths(struct tree *source_tree, const char **pathspec,
|
||||
|
||||
for (pos = 0; pos < active_nr; pos++) {
|
||||
struct cache_entry *ce = active_cache[pos];
|
||||
if (source_tree && !(ce->ce_flags & CE_UPDATE))
|
||||
continue;
|
||||
match_pathspec(pathspec, ce->name, ce_namelen(ce), 0, ps_matched);
|
||||
}
|
||||
|
||||
@ -266,6 +268,8 @@ static int checkout_paths(struct tree *source_tree, const char **pathspec,
|
||||
state.refresh_cache = 1;
|
||||
for (pos = 0; pos < active_nr; pos++) {
|
||||
struct cache_entry *ce = active_cache[pos];
|
||||
if (source_tree && !(ce->ce_flags & CE_UPDATE))
|
||||
continue;
|
||||
if (match_pathspec(pathspec, ce->name, ce_namelen(ce), 0, NULL)) {
|
||||
if (!ce_stage(ce)) {
|
||||
errs |= checkout_entry(ce, &state, NULL);
|
||||
|
Reference in New Issue
Block a user