Skip to content
Snippets Groups Projects
Commit f635b8d1 authored by Junio C Hamano's avatar Junio C Hamano
Browse files

Merge branch 'jt/submodule-pull-recurse-rebase'

"git pull -recurse-submodules --rebase", when the submodule
repository's history did not have anything common between ours and
the upstream's, failed to execute.  We need to fetch from them to
continue even in such a case.

* jt/submodule-pull-recurse-rebase:
  submodule: do not pass null OID to setup_revisions
parents c2c7d17b 4d36f88b
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -1169,8 +1169,10 @@ int submodule_touches_in_range(struct object_id *excl_oid,
 
argv_array_push(&args, "--"); /* args[0] program name */
argv_array_push(&args, oid_to_hex(incl_oid));
argv_array_push(&args, "--not");
argv_array_push(&args, oid_to_hex(excl_oid));
if (!is_null_oid(excl_oid)) {
argv_array_push(&args, "--not");
argv_array_push(&args, oid_to_hex(excl_oid));
}
 
collect_changed_submodules(&subs, &args);
ret = subs.nr;
Loading
Loading
Loading
Loading
@@ -92,7 +92,10 @@ extern int bad_to_remove_submodule(const char *path, unsigned flags);
 
int add_submodule_odb(const char *path);
 
/* Checks if there are submodule changes in a..b. */
/*
* Checks if there are submodule changes in a..b. If a is the null OID,
* checks b and all its ancestors instead.
*/
extern int submodule_touches_in_range(struct object_id *a,
struct object_id *b);
extern int find_unpushed_submodules(struct oid_array *commits,
Loading
Loading
Loading
Loading
@@ -132,4 +132,25 @@ test_expect_success 'pull rebase recursing fails with conflicts' '
test_i18ngrep "locally recorded submodule modifications" err
'
 
test_expect_success 'branch has no merge base with remote-tracking counterpart' '
rm -rf parent child &&
test_create_repo a-submodule &&
test_commit -C a-submodule foo &&
test_create_repo parent &&
git -C parent submodule add "$(pwd)/a-submodule" &&
git -C parent commit -m foo &&
git clone parent child &&
# Reset master so that it has no merge base with
# refs/remotes/origin/master.
OTHER=$(git -C child commit-tree -m bar \
$(git -C child rev-parse HEAD^{tree})) &&
git -C child reset --hard "$OTHER" &&
git -C child pull --recurse-submodules --rebase
'
test_done
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment