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