Checkout aware of Submodules!
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v9 Latest19 patches 1 replyIn review
- v8 RFC17 patches 8 repliesSuperseded
- v7 RFC0 of 18 patches 0 repliesSuperseded
Earlier versions · 6
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v6 RFC | 18 patches | 15 replies | Superseded | |
| v5 RFC | 0 of 14 patches | 0 replies | Superseded | |
| v4 RFC | 0 of 14 patches | 4 replies | Superseded | |
| v3 RFC | 14 patches | 16 replies | Superseded | |
| v2 RFC | 17 patches | 12 replies | Superseded | |
| v1 RFC | 16 patches | 33 replies | Superseded |
Changes in v9 from the cover letter
* inderdiff to current origin/sb/checkout-recurse-submodules below
* fixed a '\' that was violating the style guide.
* reordered the patches, such that
-> the first two patches are Valerys series and could go on its own as
a cleanup
-> added a new patch "submodule.c: get_super_prefix_or_empty" to
have cleaner code.
* split up the error conditions in the test lib for readability
Patches in v9 No applies recorded yet
Reviews trailers per patch
1 of 19 patches has a Reviewed-by or Acked-by.
| Patch | Brandon Williams |
|---|---|
| 1/19 | |
| 2/19 | R-b |
| 3/19 | |
| 4/19 | |
| 5/19 | |
| 6/19 | |
| 7/19 | |
| 8/19 | |
| 9/19 | |
| 10/19 | |
| 11/19 | |
| 12/19 | |
| 13/19 | |
| 14/19 | |
| 15/19 | |
| 16/19 | |
| 17/19 | |
| 18/19 | |
| 19/19 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCHv9 00/19] Checkout aware of Submodules!
previous work:
https://public-inbox.org/git/[email protected]/
v9:
* inderdiff to current origin/sb/checkout-recurse-submodules below
* fixed a '\' that was violating the style guide.
* reordered the patches, such that
-> the first two patches are Valerys series and could go on its own as
a cleanup
-> added a new patch "submodule.c: get_super_prefix_or_empty" to
have cleaner code.
* split up the error conditions in the test lib for readability
v1..v8: see description in link to previous work above.
Thanks,
Stefan
submodule.c +16 -10
@@ -1239,6 +1239,14 @@ int bad_to_remove_submodule(const char *path, unsigned flags)return ret; } +static const char *get_super_prefix_or_empty () +{ +const char *s =get_super_prefix (); +if (!s) + s ="" ; +return s; +} +static int submodule_has_dirty_index (const struct submodule *sub) {struct child_process cp =CHILD_PROCESS_INIT ;
@@ -1246,8 +1254,8 @@ static int submodule_has_dirty_index(const struct submodule *sub)prepare_submodule_repo_env_no_git_dir (&cp.env_array); cp.git_cmd =1 ; -argv_array_pushl (&cp.args,"diff-index" ,"--quiet" , \ -"--cached" ,"HEAD" ,NULL ); +argv_array_pushl (&cp.args,"diff-index" ,"--quiet" , +"--cached" ,"HEAD" ,NULL ); cp.no_stdin =1 ; cp.no_stdout =1 ; cp.dir = sub->path;
@@ -1266,7 +1274,8 @@ static void submodule_reset_index(const char *path) cp.no_stdin =1 ; cp.dir = path; -argv_array_pushf (&cp.args,"--super-prefix=%s/" , path); +argv_array_pushf (&cp.args,"--super-prefix=%s%s/" , +get_super_prefix_or_empty (), path);argv_array_pushl (&cp.args,"read-tree" ,"-u" ,"--reset" ,NULL );argv_array_push (&cp.args,EMPTY_TREE_SHA1_HEX );
@@ -1323,7 +1332,8 @@ int submodule_move_head(const char *path, cp.no_stdin =1 ; cp.dir = path; -argv_array_pushf (&cp.args,"--super-prefix=%s/" , path); +argv_array_pushf (&cp.args,"--super-prefix=%s%s/" , +get_super_prefix_or_empty (), path);argv_array_pushl (&cp.args,"read-tree" ,NULL );if (flags &SUBMODULE_MOVE_HEAD_DRY_RUN )
@@ -1573,11 +1583,8 @@ static void relocate_single_git_dir_into_superproject(const char *prefix,die (_ ("could not create directory '%s'" ), new_git_dir); real_new_git_dir =real_pathdup (new_git_dir); -if (!prefix) - prefix =get_super_prefix (); -fprintf (stderr,_ ("Migrating git directory of '%s%s' from\n'%s' to\n'%s'\n" ), - prefix ? prefix :"" , path, +get_super_prefix_or_empty (), path, real_old_git_dir, real_new_git_dir);relocate_gitdir (path, real_old_git_dir, real_new_git_dir);
@@ -1648,8 +1655,7 @@ void absorb_git_dir_into_superproject(const char *prefix,if (flags & ~ABSORB_GITDIR_RECURSE_SUBMODULES )die ("BUG: we don't know how to pass the flags down?" ); -if (get_super_prefix ()) -strbuf_addstr (&sb,get_super_prefix ()); +strbuf_addstr (&sb,get_super_prefix_or_empty ());strbuf_addstr (&sb, path);strbuf_addch (&sb,'/' );
t/lib-submodule-update.sh +16 -11
@@ -782,15 +782,20 @@ test_submodule_forced_switch () { test_submodule_switch_recursing () { command="$1" - RESULT=success + RESULTDS=success if test "$KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS" = 1 then - RESULT=failure + RESULTDS=failure + fi + RESULTR=success + if test "$KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED" = 1 + then + RESULTR=failure fi - RESULT1=success + RESULTOI=success if test "$KNOWN_FAILURE_SUBMODULE_OVERWRITE_IGNORED_UNTRACKED" = 1 then - RESULT1=failure + RESULTOI=failure fi ######################### Appearing submodule ######################### # Switching to a commit letting a submodule appear checks it out ...
@@ -832,7 +837,7 @@ test_submodule_switch_recursing () { ) ' # ... but an ignored file is fine. - test_expect_$RESULT1 "$command: added submodule removes an untracked ignored file" ' + test_expect_$RESULTOI "$command: added submodule removes an untracked ignored file" ' test_when_finished "rm submodule_update/.git/info/exclude" && prolog && reset_work_tree_to_interested no_submodule &&
@@ -901,7 +906,7 @@ test_submodule_switch_recursing () { ' # Replacing a submodule with files in a directory must succeeds # when the submodule is clean - test_expect_$RESULT "$command: replace submodule with a directory" ' + test_expect_$RESULTDS "$command: replace submodule with a directory" ' prolog && reset_work_tree_to_interested add_sub1 && (
@@ -913,7 +918,7 @@ test_submodule_switch_recursing () { ) ' # ... absorbing a .git directory. - test_expect_$RESULT "$command: replace submodule containing a .git directory with a directory must absorb the git dir" ' + test_expect_$RESULTDS "$command: replace submodule containing a .git directory with a directory must absorb the git dir" ' prolog && reset_work_tree_to_interested add_sub1 && (
@@ -941,7 +946,7 @@ test_submodule_switch_recursing () { ' # ... must check its local work tree for untracked files - test_expect_$RESULT "$command: replace submodule with a file must fail with untracked files" ' + test_expect_$RESULTDS "$command: replace submodule with a file must fail with untracked files" ' prolog && reset_work_tree_to_interested add_sub1 && (
@@ -998,7 +1003,7 @@ test_submodule_switch_recursing () { ' # recursing deeper than one level doesn't work yet. - test_expect_failure "$command: modified submodule updates submodule recursively" ' + test_expect_$RESULTR "$command: modified submodule updates submodule recursively" ' prolog && reset_work_tree_to_interested add_nested_sub && (
@@ -1116,13 +1121,13 @@ test_submodule_forced_switch_recursing () { ) ' # Replacing a submodule with files in a directory ... - test_expect_$RESULT "$command: replace submodule with a directory" ' + test_expect_success "$command: replace submodule with a directory" ' prolog && reset_work_tree_to_interested add_sub1 && ( cd submodule_update && git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory && - test_must_fail $command replace_sub1_with_directory && + $command replace_sub1_with_directory && test_superproject_content origin/replace_sub1_with_directory ) '
t/t1013-read-tree-submodule.sh +1 -0
@@ -5,6 +5,7 @@ test_description='read-tree can handle submodules' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-submodule-update.sh +KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED=1 KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS=1 KNOWN_FAILURE_SUBMODULE_OVERWRITE_IGNORED_UNTRACKED=1
t/t2013-checkout-submodule.sh +1 -0
@@ -64,6 +64,7 @@ test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .git/ ' KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS=1 +KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED=1 test_submodule_switch_recursing "git checkout --recurse-submodules" test_submodule_forced_switch_recursing "git checkout -f --recurse-submodules"