On Tue, Oct 18, 2016 at 7:05 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Stefan Beller <sbeller@xxxxxxxxxx> writes: > >>> I am not sure. Certainly we would want to make sure that the normal >>> case (i.e. no funny trailing junk) to work correctly, but we do want >>> to protect the fix from future breakage as well, no? >> >> Exactly. So not intermediate "root" that we clone from, but adapting the >> relative URLs. Maybe half the broken tests can switch to 'root' and the others >> go with the current behavior of cloning . to super. >>> >>> Perhaps we can do a preliminary step to update tests to primarily >>> check the cases that do not involve URL with trailing "/." by either >>> doing that double clone, or more preferrably, clone from "$(pwd)" >>> and adjust the incorrect submodule reference that have been relying >>> on the buggy behaviour. With that "root" trick, the test would pass >>> with or without the fix under discussion, right? >> >> I assume so, (not tested). > > OK. Thanks for sticking with it. Ok, the root trick works fine without the fix, however we preferrably want to fix it without double cloning, then the fix becomes a bit harder to follow: instead of git clone . super we do git clone "$(pwd)" super && git -C super config --unset remote.origin.url && instead, such that the relative urls work the same way. (The super becomes its own authoritative source of truth with no upstream. In that case the url is relative to the superproject, e.g. git -C super submodule add ../submodule will then resolve the relative path from super/../submodule to be just as before, where we bugily used $(git config remote.origin.url = ...super/.)/../submodule, which due to the but resolved to the submodule as well (as /. was counted as a directory).