Skip to main content

Scenario: pulled again

The monorepo and upstream both change again after the first pull. The second pull creates another merge in the rebuilt history.

Output​

setup.bash builds this state:

$ build_scenario scenario_pulled_again

Two pulls e and g in the monorepo become two merges e' and g' in the rebuilt history; g' is R

The rebuild contains one merge for each pull:

$ git splice log --graph lib
=== lib (main)
< 1b2d2ce (R) g (Test <test@example.com>)
|\
< | 597e7a6 f (Test <test@example.com>)
< | 8430dba e (Test <test@example.com>)
|\ \
< | | d4da194 d (Test <test@example.com>)
< | | 9ec734f b (Test <test@example.com>)
o | | ae8b31f k (Test <test@example.com>)
/ /
| o e22b60a (T) o (Test <test@example.com>)
|/
o df79a48 n (Test <test@example.com>)

The first parents of the two rebuilt pulls are the local histories that each pull preserved. Their second parents are the upstream commits they pulled, n and o:

$ R="$(git splice rebuild lib)" &&
> git show -s --format='g first parent: %s' "$R^1" &&
> git show -s --format='g second parent: %s' "$R^2" &&
> git show -s --format='e first parent: %s' "$R~2^1" &&
> git show -s --format='e second parent: %s' "$R~2^2"
g first parent: f
g second parent: o
e first parent: d
e second parent: n