ingydotnet/git-subrepo — pull request #24 by AndrewSmart (2014-11-03 04:34:44+00:00)
Title: Fixes the ./test/failing/test.sh failing test case I gave you.

Previously I had solved the problem by ***caching*** when the latest "git subrepo push" command was, and used that point as the common-ancestor during the merge (in the "git subrepo pull" command).
* But that solution wasn't acceptable as the cache only stayed in the local repo- causing problems for other developers as they wouldn't recieve this cache.

Now I have solved the problem by ***searching*** for where the lastest "git subrepo push" command was done, and using that point as the common-ancestor during the merge (in the "git subrepo pull" command).
* In doing the search it was necessary to [checkout the subrepo/$subdir branch](https://github.com/AndrewSmart/git-subrepo/compare/ingydotnet:master...master?expand=1#diff-c0feec11a04cea78b3c9ec826bc6d99dR183) in the subrepo pull command.
* This search has M*N complexity.
* M (outer loop) is # of commits since last subrepo clone/pull ***in subrepo branch***.
* N (inner loop) is # of commits since last subrepo clone/pull ***in original branch***.
* The inner loop lookups can be cached for a speedup.
* This logic was placed into the get-best-common-ancestor-for-merge() function.
* This common-ancestor search is necessary as otherwise the "git merge" command with the $subrepo_parent obtained from the .gitrepo file would fail.
* This searches through the commit/tree objects, not the git log.

It's been a while as I'd been busy on other stuff! Hope this helps everyone!

Next I'll try to work on the --continue feature necessary for a hand-merge when I get time.