File tree Expand file tree Collapse file tree 2 files changed +52
-0
lines changed Expand file tree Collapse file tree 2 files changed +52
-0
lines changed Original file line number Diff line number Diff line change @@ -1314,6 +1314,7 @@ static int fsmonitor_run_daemon(void)
13141314 strbuf_reset (& state .path_gitdir_watch );
13151315 strbuf_addstr (& state .path_gitdir_watch ,
13161316 absolute_path (repo_get_git_dir (the_repository )));
1317+ strbuf_strip_suffix (& state .path_gitdir_watch , "/." );
13171318 state .nr_paths_watching = 2 ;
13181319 }
13191320
Original file line number Diff line number Diff line change @@ -907,6 +907,57 @@ test_expect_success "submodule absorbgitdirs implicitly starts daemon" '
907907 test_subcommand git fsmonitor--daemon start <super-sub.trace
908908'
909909
910+ start_git_in_background () {
911+ git " $@ " &
912+ git_pid=$!
913+ git_pgid=$( ps -o pgid= -p $git_pid )
914+ nr_tries_left=10
915+ while true
916+ do
917+ if test $nr_tries_left -eq 0
918+ then
919+ kill -- -$git_pgid
920+ exit 1
921+ fi
922+ sleep 1
923+ nr_tries_left=$(( $nr_tries_left - 1 ))
924+ done > /dev/null 2>&1 &
925+ watchdog_pid=$!
926+ wait $git_pid
927+ }
928+
929+ stop_git () {
930+ while kill -0 -- -$git_pgid
931+ do
932+ kill -- -$git_pgid
933+ sleep 1
934+ done
935+ }
936+
937+ stop_watchdog () {
938+ while kill -0 $watchdog_pid
939+ do
940+ kill $watchdog_pid
941+ sleep 1
942+ done
943+ }
944+
945+ test_expect_success ! MINGW " submodule implicitly starts daemon by pull" '
946+ test_atexit "stop_watchdog" &&
947+ test_when_finished "stop_git; rm -rf cloned super sub" &&
948+
949+ create_super super &&
950+ create_sub sub &&
951+
952+ git -C super submodule add ../sub ./dir_1/dir_2/sub &&
953+ git -C super commit -m "add sub" &&
954+ git clone --recurse-submodules super cloned &&
955+
956+ git -C cloned/dir_1/dir_2/sub config core.fsmonitor true &&
957+ set -m &&
958+ start_git_in_background -C cloned pull --recurse-submodules
959+ '
960+
910961# On a case-insensitive file system, confirm that the daemon
911962# notices when the .git directory is moved/renamed/deleted
912963# regardless of how it is spelled in the FS event.
You can’t perform that action at this time.
0 commit comments