Hi,
Scenario:
trunk remote
|
\/
trunk local
\
`--> tree A
\
`--> tree BFigure 1.
This is the dependecny since project B depends on project A introduced in tree A. And merging is done as follows (branch per directory; everything but HEAD and index is shared):
cd trunk && git pull trunk cd ../treeA && git merge "merge trunk" HEAD trunk cd ../treeB && git merge "merge tree A" HEAD treeA
But this isn't the only way to do it since tree B depends only on the introduced into tree A project A, and both project A and project B depend on the trunk, as follows:
trunk remote
|
\/
trunk local
\ \
\ `--> tree A
\ \
`--------> `--> tree BFigure 2.
So at point in time t where tree B had been synced with tree A, and tree A had been synced with trunk, but trunk had _not_ been synced with remote trunk, a merge was done following Figure 2:
cd trunk && git pull trunk cd ../treeA && git merge "merge trunk" HEAD trunk cd ../treeB && git merge "merge trunk" HEAD trunk git merge "merge tree A" HEAD treeA
Now the last merge introduced an empty commit, since tree A and tree B had been in sync (only local and remote trunk had been out of sync). While it was expected that no commit would be introduced since they were in sync.
Was the empty commit correct behavior?
Thanks, Luben