Skip to content

Instantly share code, notes, and snippets.

@robbat2
Last active January 29, 2016 19:33
Show Gist options
  • Select an option

  • Save robbat2/e5b7de2ae6104a6b6af1 to your computer and use it in GitHub Desktop.

Select an option

Save robbat2/e5b7de2ae6104a6b6af1 to your computer and use it in GitHub Desktop.
#!/bin/bash
set -e -x
rm -rf .git pkgdir #log.*
git init
LOGNAME=log.merge
dumplog() {
git log --format=raw
git whatchanged --pretty='%%at:%at %%ct:%ct' -m
}
time_set() {
export GIT_COMMITTER_DATE="$1 +0000"
export GIT_AUTHOR_DATE="${GIT_COMMITTER_DATE}"
}
export GIT_AUTHOR_EMAIL='dev0@example.com'
export GIT_AUTHOR_Name='Developer 0'
time_set 1400000000
mkdir -p pkgdir
touch pkgdir/metadata.xml
echo 'log.*' >.gitignore
git add testcase*sh pkgdir/metadata.xml .gitignore
git commit -s -m 'Initial commit.' -a
git checkout -b branch1 master
echo foo >pkgdir/a.ebuild
git add pkgdir/a.ebuild
export GIT_AUTHOR_EMAIL='dev1@example.com'
export GIT_AUTHOR_Name='Developer 1'
time_set 1450000000
git commit -s -m 'Dev1 commit.' pkgdir
git checkout -b branch2 master
echo bar >pkgdir/b.ebuild
git add pkgdir/b.ebuild
export GIT_AUTHOR_EMAIL='dev2@example.com'
export GIT_AUTHOR_Name='Developer 2'
time_set 1450000000
git commit -s -m 'Dev2 commit.' pkgdir
git checkout master
dumplog >${LOGNAME}.00.before-push1,before-push2
git checkout master
export GIT_AUTHOR_EMAIL='dev1@example.com'
export GIT_AUTHOR_Name='Developer 1'
unset GIT_AUTHOR_DATE GIT_COMMITTER_DATE
git merge --no-ff -m 'merge branch1' branch1
dumplog >${LOGNAME}.01.after-push1,before-push2
# This represents the second developer pushing later
sleep 2
git checkout master
export GIT_AUTHOR_EMAIL='dev2@example.com'
export GIT_AUTHOR_Name='Developer 2'
unset GIT_AUTHOR_DATE GIT_COMMITTER_DATE
git merge --no-ff -m 'merge branch2' branch2
dumplog >${LOGNAME}.02.after-push1,after-push2
#!/bin/bash
set -e -x
rm -rf .git pkgdir #log.*
git init
LOGNAME=log.rebase
dumplog() {
git log
git whatchanged --pretty='%%at:%at %%ct:%ct' -m
}
export GIT_AUTHOR_EMAIL='dev0@example.com'
export GIT_AUTHOR_Name='Developer 0'
export GIT_AUTHOR_DATE='1400000000 +0000'
export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
mkdir -p pkgdir
touch pkgdir/metadata.xml
echo 'log.*' >.gitignore
git add testcase*sh pkgdir/metadata.xml .gitignore
git commit -s -m 'Initial commit.' -a
git checkout -b branch1 master
echo foo >pkgdir/a.ebuild
git add pkgdir/a.ebuild
export GIT_AUTHOR_EMAIL='dev1@example.com'
export GIT_AUTHOR_Name='Developer 1'
export GIT_AUTHOR_DATE='1450000000 +0000'
export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
git commit -s -m 'Dev1 commit.' pkgdir
git checkout -b branch2 master
echo bar >pkgdir/b.ebuild
git add pkgdir/b.ebuild
export GIT_AUTHOR_EMAIL='dev2@example.com'
export GIT_AUTHOR_Name='Developer 2'
export GIT_AUTHOR_DATE='1450000000 +0000'
export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
git commit -s -m 'Dev2 commit.' pkgdir
git checkout master
dumplog >${LOGNAME}.00.before-push1,before-push2
git checkout master
export GIT_AUTHOR_EMAIL='dev1@example.com'
export GIT_AUTHOR_Name='Developer 1'
unset GIT_AUTHOR_DATE GIT_COMMITTER_DATE
git merge --ff-only -m 'merge branch1' branch1
dumplog >${LOGNAME}.01.after-push1,before-push2
# This represents the second developer pushing later
sleep 2
git checkout branch2
git rebase master
git checkout master
export GIT_AUTHOR_EMAIL='dev2@example.com'
export GIT_AUTHOR_Name='Developer 2'
unset GIT_AUTHOR_DATE GIT_COMMITTER_DATE
git merge --ff-only -m 'merge branch2' branch2
dumplog >${LOGNAME}.02.after-push1,after-push2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment