test.shon commit Clarify why we can't do 'git rev-list' with a path. (1f73862)
   1#!/bin/bash -x
   2create()
   3{
   4        for d in 1 2 3 4 5 6 7 8 9 10; do
   5                echo "$1"
   6        done >"$1"
   7}
   8
   9. shellopts.sh
  10set -e
  11
  12rm -rf mainline subproj
  13mkdir mainline subproj
  14
  15cd subproj
  16git init
  17
  18create sub1
  19git add sub1
  20git commit -m 'sub1'
  21git branch sub1
  22git branch -m master subproj
  23
  24create sub2
  25git add sub2
  26git commit -m 'sub2'
  27git branch sub2
  28
  29create sub3
  30git add sub3
  31git commit -m 'sub3'
  32git branch sub3
  33
  34cd ../mainline
  35git init
  36create main4
  37git add main4
  38git commit -m 'main4'
  39git branch -m master mainline
  40
  41git fetch ../subproj sub1
  42git branch sub1 FETCH_HEAD
  43git subtree add --prefix=subdir FETCH_HEAD
  44
  45# this shouldn't actually do anything, since FETCH_HEAD is already a parent
  46git merge -m 'merge -s -ours' -s ours FETCH_HEAD
  47
  48create subdir/main-sub5
  49git add subdir/main-sub5
  50git commit -m 'main-sub5'
  51
  52create main6
  53git add main6
  54git commit -m 'main6 boring'
  55
  56create subdir/main-sub7
  57git add subdir/main-sub7
  58git commit -m 'main-sub7'
  59
  60git fetch ../subproj sub2
  61git branch sub2 FETCH_HEAD
  62git subtree merge --prefix=subdir FETCH_HEAD
  63git branch pre-split
  64
  65split1=$(git subtree split --annotate='*' --prefix subdir --onto FETCH_HEAD --rejoin)
  66echo "split1={$split1}"
  67git branch split1 "$split1"
  68
  69create subdir/main-sub8
  70git add subdir/main-sub8
  71git commit -m 'main-sub8'
  72
  73cd ../subproj
  74git fetch ../mainline split1
  75git branch split1 FETCH_HEAD
  76git merge FETCH_HEAD
  77
  78create sub9
  79git add sub9
  80git commit -m 'sub9'
  81
  82cd ../mainline
  83split2=$(git subtree split --annotate='*' --prefix subdir --rejoin)
  84git branch split2 "$split2"
  85
  86create subdir/main-sub10
  87git add subdir/main-sub10
  88git commit -m 'main-sub10'
  89
  90split3=$(git subtree split --annotate='*' --prefix subdir --rejoin)
  91git branch split3 "$split3"
  92
  93cd ../subproj
  94git fetch ../mainline split3
  95git branch split3 FETCH_HEAD
  96git merge FETCH_HEAD
  97git branch subproj-merge-split3
  98
  99cd ../mainline
 100git fetch ../subproj subproj-merge-split3
 101git branch subproj-merge-split3 FETCH_HEAD
 102git subtree pull --prefix=subdir ../subproj subproj-merge-split3