On Wed, Apr 27, 2016 at 1:31 AM, Andrew J <andj2223@xxxxxxxxx> wrote: > I've noticed some strangeness with git-add and nested repos. > > This tar.gz has a reproduction script, parent repo, and nested repo > that exhibits the issue: > https://drive.google.com/uc?export=download&id=0Bwjufq6oAZMfcGVxZ2dlMElEVlE > > If you extract the archive and do the following (on linux please, I > haven't even tried this on Windows): > cd git-add-bug > ./bad-git-add.sh > (Examine the script before running, please) > > It will echo what I'm encountering to the screen, so it should be > straightforward to follow, but I will summarize here: > If I run a git-add command where one or more of the files live in > nested repositories, like so (command is shortened here, includes more > files in the script): > git add -v -f -- > src/chromium/src/third_party/libFuzzer/src/FuzzerInterface.h testfile > As confirmed by git-status, this results in testfile being added, but > FuzzerInterface.h not being added. > FuzzerInterface.h is inside of a nested repository > (src/chromium/src/third_party/libFuzzer/src/), while testfile is in > the current main repository. > > On the other hand, the following command: > git add -v -f -- src/chromium/src/third_party/libFuzzer/src/FuzzerInterface.h > Results in FuzzerInterface.h being added, as confirmed by git-status. > Excluding testfile from the git-add command seems to do the trick. > > My expectation: > Both testfile and FuzzerInterface.h should be added if they are > specified in the git-add command, regardless of whether they are > specified along with another file that doesn't happen to live in a > nested repository ("testfile" in this example). I would call it a bug. [This use case is interesting for working with submodules (though your nested repositories do not seem to be submodules), so worth looking at for me.] > > If someone could help me understand what's going on here, I'd appreciate it. I think (pure speculation), that it the error is in the context (repository) switching logic. What happens if you alter the order, i.e. give testfile first and then the files in the nested repos? git add -- file path/to/subdir/file should do internally IMHO: git add file git -C path-to-subdir add file Thanks, Stefan > > Thanks, > > Andrew > -- > 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 -- 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