#!/bin/bash

# READ ME:
#   Please run `git init` if you don't
#   init yet before run this script file

# C1--C2--C5--C6--C7--C10--C11--C12--C13   <- topic
#  \   \                       /
#   \   ---------C3--C4--C8--C9  
#    \
#     C14--C15                             <- master
# 
# `topic` rebase to `master`

let cm=0	# (commit)
let fc=0	# (file count)

# C1 (master, topic)
let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"
git branch topic

# C2 (topic, temp)
git checkout topic

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"
git branch temp

# C3-4
git checkout temp

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

# C5-7
git checkout topic

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

# C8-9
git checkout temp

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

# C10-11
git checkout topic

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

# C12
git checkout topic
let cm++
git merge -m "C$cm" temp
git branch -d temp

# C13
git checkout topic

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

# C14-15
git checkout master

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

let cm++; let fc++; touch "file$fc";
git add "file$fc"; git commit -m "C$cm"

#####
echo -e "\n## Before:"
git log --all --decorate --oneline --graph --pretty="format:%s%d"

echo -e "\n## In:"
git checkout topic
git rebase master

echo -e "\n## After:"
git log --all --decorate --oneline --graph --pretty="format:%s%d"
