Matt McCutchen <matt@xxxxxxxxxxxxxxxxx> writes: > Then the server generates a commit X3 that lists Y2 as a parent, even > though it doesn't have Y2, and advances 'x' to X3. The victim fetches > 'x': > > victim server > > Y1---Y2---- (Y2) > / \ \ > ---O---O---X1---X2---X3 ---O---O---X1---X2---X3 > > Then the server rolls back 'x' to X2: > > victim server > > Y1---Y2---- > / \ > ---O---O---X1---X2---X3 ---O---O---X1---X2 Ah, I see. My immediate reaction is that you can do worse things in the reverse direction compared to this, but your scenario does sound bad already.