#!/usr/bin/env bash BLANK_DEMO=1 . demo_repo.sh trunc() { echo ... truncated output ... } trunc_command() { pcommand "$@" trunc } WS=build/whitespace_file.txt add_ws() { praw cat '>>' $WS '<> $WS } ed_ws() { echo -ne "\x1B[37;1m$ echo -e " echo -n "'$1'" echo -e " | ed $WS\x1B[m" echo -e "$1" | ed $WS 2>&1 } # needs an extra echo afterwards map() { run git map echo } ED1='/Banana\ns/Banana/Kuun\nwq' ADD1=" \"You recall what happened on Mulholland drive?\" The ceiling fan rotated slowly overhead, barely disturbing the thick cigarette smoke. No doubt was left about when the fan was last cleaned." ED2='/Kuun\ns/Kuun/Kun\nwq' ADD2=" There was an poignant pause." ADD3=" CHAPTER 3: Mr. Usagi felt that something wasn't right. Shortly after the Domo-Kun left he began feeling sick." trunc_command fetch chromium pcommand cd src comment "(only on linux)" trunc_command ./build/install-build-deps.sh comment "Pull in all dependencies for HEAD" trunc_command gclient sync comment "Let's fix something!" run git new-branch fix_typo ed_ws "$ED1" run git commit -am 'Fix terrible typo.' map run git status trunc_command git cl upload -r domo@chromium.org --send-mail comment "While we wait for feedback, let's do something else." run git new-branch chap2 run git map-branches add_ws "$ADD1" run git status comment "Someone on the code review pointed out that our typo-fix has a typo :(" comment "We're still working on 'chap2' but we really want to land" comment "'fix_typo', so let's switch over and fix it." run git freeze run git checkout fix_typo 2>&1 ed_ws "$ED2" run git upstream-diff --wordwise run git commit -am 'Fix typo for good!' trunc_command git cl upload comment "Since we got lgtm, let the CQ land it." pcommand git cl set_commit map comment "Switch back to where we were using the nav* commands (for fun..." comment "git checkout would work here too)" run git map-branches run git nav-upstream 2>&1 pcommand git nav-downstream git nav-downstream --pick 0 2>&1 run git map-branches comment "Now we can pick up on chapter2 where we left off." run git thaw run git diff add_ws "$ADD2" run git diff run git commit -am 'Finish chapter 2' map trunc_command git cl upload -r domo@chromium.org --send-mail comment "We poke a committer until they lgtm :)" pcommand git cl set_commit comment "While that runs through the CQ, let's get started on chapter 3." comment "Since we know that chapter 3 depends on chapter 2, we'll track the" comment "current chapter2 branch." run git new-branch --upstream_current chap3 add_ws "$ADD3" run git commit -am 'beginning of chapter 3' map comment "We haven't updated the code in a while, so let's do that now." pcommand git rebase-update echo Fetching origin git fetch origin 2>&1 | grep -v 'stage' | sed 's+From.*+From https://upstream+' silent git update-ref refs/remotes/origin/master stage_2 silent git tag -d $(git tag -l 'stage_*') git rebase-update --no-fetch comment "Well look at that. The CQ landed our typo and chapter2 branches " comment "already and git rebase-update cleaned them up for us." trunc_command gclient sync map comment "Someone on IRC mentions that they actually landed a chapter 3 already!" comment "We should pull their changes before continuing. Brace for" comment "a code conflict!" pcommand git rebase-update echo Fetching origin git fetch origin 2>&1 | grep -v 'stage' | sed 's+From.*+From https://upstream+' silent git tag -d $(git tag -l 'stage_*') echo Rebasing: chap2 silent git rebase-update echo ... lots of output, it\'s a conflict alright :\(... run git diff comment "Oh, well, that's not too bad. In fact... that's a terrible chapter 3!" praw \$EDITOR "$WS" echo "... /me deletes bad chapter 3 ..." silent git checkout --theirs -- "$WS" run git add "$WS" run git diff --cached comment "Much better" run git rebase --continue run git rebase-update silent git tag -d $(git tag -l 'stage_*') trunc_command gclient sync map trunc_command git cl upload