David Aguilar <davvid@xxxxxxxxx> writes: > When a submodule's URL changes upstream, existing submodules > will be out of sync since their remote.origin.url will still > be set to the old value. Ok. > +# > +# Sync git urls for submodules > +# This makes the value for remote.origin.url match the value > +# specified in .gitmodules. > +# > +cmd_sync() > +{ > + while test $# -ne 0 > + do > + case "$1" in > + -q|--quiet) > + quiet=1 > + ;; > + -*) > + usage > + ;; > + --) > + shift > + break > + ;; > + *) > + break > + ;; > + esac > + shift > + done > + > + cd_to_toplevel > + > + module_list "$@" | > + while read mode sha1 stage path > + do > + ! test -f "$path"/.git/config && > + echo "Warn: submodule at path '$path' does not exist." > + test -f "$path"/.git/config || continue > + name=$(module_name "$path") > + url=$(git config -f .gitmodules --get submodule."$name".url) > + say "Synchronizing submodule url for '$name'" > + git config -f "$path"/.git/config remote.origin.url "$url" > + done > +} Hmm. I do not quite like this. We allow using a gitfile for submodule $GIT_DIR; checking for file existence of "$path/.git/config" does not work for such a configuration. Neither does 'git config -f "$path/.git/config"' work. I think it should be more like: ( unset GIT_DIR; cd "$path" && git config remote.origin.url "$url" ) It is a norm not to have any interest in a submodule that appears in the index of a superproject. You shouldn't get as many warnings as you have submodules in such a repository. You should just skip them (which you already do, but see above), or at least honor "$quiet". I also think the warning should be sent to the standard error stream. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html