From: Stephen Haberman Date: Tue, 11 Nov 2008 22:42:37 +0000 (-0600) Subject: Cleaning up scripts to only include useful stuff. X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=11d32d723cbf49f139e866cda193ca374a3b6b80;p=git-central.git Cleaning up scripts to only include useful stuff. --- diff --git a/scripts/README.markdown b/scripts/README.markdown index c00bec2..8630c70 100644 --- a/scripts/README.markdown +++ b/scripts/README.markdown @@ -1,66 +1,24 @@ -gc-add -====== +checkout +======== -`gc-add ...` - -* If no arguments, adds all new, adds all changed, removes all removed -* If arguments, passes through to `git add` - -gc-checkout -=========== - -`gc-checkout ` +`checkout ` * If `branch` already exists locally, check it out * If `branch` already exists remotely, check it out * If `branch` is new, create it locally and remotely -gc-commit -========= - -`gc-commit` - -* Passes through to `git commit` - -gc-diff -======= - -`gc-diff` - -* Passes through to `git diff` - -gc-pull -======= +pull +==== -`gc-pull` +`pull` * Passes through to `git pull` but with `--rebase` flag -gc-push -======= +push +==== -`gc-push` +`push` * Pushes only the current branch to `origin` -gc-remerge -========== - -* Work in progress, not done - -gc-rm -===== - -`gc-rm` - -* Passes through to `git rm` - -gc-status -========= - -`gc-status` - -* Passes through to `git status` - - diff --git a/scripts/checkout b/scripts/checkout new file mode 100644 index 0000000..5f50c26 --- /dev/null +++ b/scripts/checkout @@ -0,0 +1,26 @@ +#!/bin/sh + +branch_name=$1 + +# See if it already exists +git rev-parse --verify --quiet $branch_name >/dev/null +if [[ $? -eq 0 ]] ; then + # Just checkout what they asked + git checkout "$branch_name" +else + # Make sure we have the latest origin/$branch_name to branch + git fetch + exists_remote=$(git branch -r | grep -x " origin/$branch_name" | wc -l) + if [[ $exists_remote -eq 0 ]] ; then + # Specifying stable to get the last released code + git checkout -b "$branch_name" origin/stable + # Go ahead and put the branch out on the server + git push origin "$branch_name" + # Setup the merge property so that pulls come from the right place (instead of stable) + git config --replace-all "branch.$branch_name.merge" "refs/heads/$branch_name" + else + # Do the checkout + git checkout -b "$branch_name" "origin/$branch_name" + fi +fi + diff --git a/scripts/create-gitconfig b/scripts/create-gitconfig new file mode 100644 index 0000000..5556038 --- /dev/null +++ b/scripts/create-gitconfig @@ -0,0 +1,19 @@ +#!/bin/sh + +# Create an empty file object +empty_file_hash=$(git hash-object -w --stdin </dev/null -if [[ $? -eq 0 ]] ; then - # Just checkout what they asked - git checkout "$branch_name" -else - # Make sure we have the latest origin/$branch_name to branch - git fetch - exists_remote=$(git branch -r | grep -x " origin/$branch_name" | wc -l) - if [[ $exists_remote -eq 0 ]] ; then - # Specifying stable to get the last released code - git checkout -b "$branch_name" origin/stable - # Go ahead and put the branch out on the server - git push origin "$branch_name" - # Setup the merge property so that pulls come from the right place (instead of stable) - git config --replace-all "branch.$branch_name.merge" "refs/heads/$branch_name" - else - # Do the checkout - git checkout -b "$branch_name" "origin/$branch_name" - fi -fi - diff --git a/scripts/gc-pull b/scripts/gc-pull deleted file mode 100644 index c2313ba..0000000 --- a/scripts/gc-pull +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -branch_name=$(git symbolic-ref --quiet HEAD) -if [[ $? -ne 0 ]] ; then - echo "not on a branch" - exit 1 -fi - -branch_name=${branch_name/refs\/heads\//} - -git fetch -if [[ $? -ne 0 ]] ; then - exit $? -fi - -GIT_EDITOR=: git rebase -p -i "origin/$branch_name" - diff --git a/scripts/gc-push b/scripts/gc-push deleted file mode 100644 index 26ffa7b..0000000 --- a/scripts/gc-push +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -. $(dirname $0)/functions - -set_branch_name -if [ "$branch_name" == "" ] ; then - echo "Not on a branch" - exit 1 -fi - -git push origin $branch_name -if [[ $? -ne 0 ]] ; then - exit $? -fi - -# ...tags... - diff --git a/scripts/gc-refollow b/scripts/gc-refollow deleted file mode 100644 index 35a6369..0000000 --- a/scripts/gc-refollow +++ /dev/null @@ -1,87 +0,0 @@ -#!/bin/sh - -# -# Goes through the ensure-follows branches and makes sure -# the non-excused branches have it merged. -# - -die() { - echo >&2 "$@" - exit 1 -} - -attempt_merge() { - source_branch=$1 - remote_branch=$2 - - if [ "$source_branch" == "$remote_branch" ] ; then - return - fi - if [[ $excused =~ " $remote_branch " ]] ; then - return - fi - git branch -r --contains "$source_branch" | grep --quiet "origin/$remote_branch" - if [ $? -eq 0 ] ; then - return - fi - - echo -n "Merging $source_branch into $remote_branch..." - - baserev=$(git merge-base "$source_branch" "origin/$remote_branch") - git read-tree -m --trivial $baserev "origin/$remote_branch" "$source_branch" - if [ $? -ne 0 ] ; then - echo "failed merge" - return - fi - - new_tree=$(git write-tree) - new_commit=$(git commit-tree $new_tree -p "origin/$remote_branch" -p "$source_branch" </dev/null 2>/dev/null - if [ $? -ne 0 ] ; then - echo "failed push" - return - fi - - echo "succeeded" -} - -gitconfig=$(git rev-parse origin/gitconfig) -if [ $? -ne 0 ] ; then - echo "gitconfig branch not found" - exit 1 -fi - -# The source branches -config_hash=$(git ls-tree $gitconfig | grep config | grep -oP '\w{40}') -branches=$(git cat-file blob "$config_hash" | grep hooks.update-ensure-follows.branches) -branches=("${branches#*=}") -excused=$(git cat-file blob "$config_hash" | grep hooks.update-ensure-follows.excused) -excused=" ${excused#*=} " - -# We're going to merge stuff into the index, so make sure it's okay -git diff-index --cached --quiet HEAD -- || die "refusing to refollow--your index is not clean" - -# Get the latest remote refs -git fetch - -# So we can put the index back after we screw with it -original_head=$(git rev-parse HEAD) - -for source_branch in ${branches[@]} ; do - git branch -r | grep -v HEAD | while read line ; do - if [[ "$line" =~ origin/(.*) ]] ; then - attempt_merge $source_branch ${BASH_REMATCH[1]} - fi - done -done - -# Put the index back -git read-tree "$original_head" - diff --git a/scripts/gc-remerge b/scripts/gc-remerge deleted file mode 100644 index 99d868b..0000000 --- a/scripts/gc-remerge +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -git rev-list --first-parent "origin/stable..HEAD" | while read commit ; do - number_of_parents=$(git rev-list -n 1 --parents $commit | sed 's/ /\n/g' | grep -v $commit | wc -l) - if [[ $number_of_parents > 1 ]] ; then - # For each parent - git rev-list --no-walk --parents $commit | sed 's/ /\n/g' | grep -v $commit | while read parent ; do - echo "merge=$commit parent=$parent" - # Does this parent have any children besides us? - # - # List the parents of all branch commits (after stable/parent), find - # those that include our parent, get their sha1, remove our merge - git rev-list --parents --branches ^stable "^$parent" | grep $parent | gawk '{print $1}' | grep -v $commit | while read child ; do - echo "child $child" - git rev-list "$child" "^$commit" - done - # Find any commits in the parent (and another branch) but not us--that means we need it - # number_missing=$(git rev-list "$parent" --branches "^HEAD" | wc -l) - # if [[ $number_missing > 0 ]] ; then - # git rev-list "$parent" --branches "^HEAD" | xargs git name-rev - # fi - done - fi -done - diff --git a/scripts/gc-tattoo b/scripts/gc-tattoo deleted file mode 100644 index f1bd3a1..0000000 --- a/scripts/gc-tattoo +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -. $(dirname $0)/functions - -git fetch - -set_branch_name - -echo "branch_name='$branch_name'" - -if [ "$branch_name" == "" ] ; then - echo "Not on a branch (for $branch_name)" - exit 1 -fi - -describe=$(git describe --tags --always HEAD) -case "$describe" in - r/*) - describe=${describe##r\/} - echo "$branch_name-$describe" - ;; - *) - echo "No commit number tag found" - exit 1 - ;; -esac - diff --git a/scripts/make-gitconfig-branch b/scripts/make-gitconfig-branch deleted file mode 100644 index 5556038..0000000 --- a/scripts/make-gitconfig-branch +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -# Create an empty file object -empty_file_hash=$(git hash-object -w --stdin <&2 "$@" + exit 1 +} + +attempt_merge() { + source_branch=$1 + remote_branch=$2 + + if [ "$source_branch" == "$remote_branch" ] ; then + return + fi + if [[ $excused =~ " $remote_branch " ]] ; then + return + fi + git branch -r --contains "$source_branch" | grep --quiet "origin/$remote_branch" + if [ $? -eq 0 ] ; then + return + fi + + echo -n "Merging $source_branch into $remote_branch..." + + baserev=$(git merge-base "$source_branch" "origin/$remote_branch") + git read-tree -m --trivial $baserev "origin/$remote_branch" "$source_branch" + if [ $? -ne 0 ] ; then + echo "failed merge" + return + fi + + new_tree=$(git write-tree) + new_commit=$(git commit-tree $new_tree -p "origin/$remote_branch" -p "$source_branch" </dev/null 2>/dev/null + if [ $? -ne 0 ] ; then + echo "failed push" + return + fi + + echo "succeeded" +} + +gitconfig=$(git rev-parse origin/gitconfig) +if [ $? -ne 0 ] ; then + echo "gitconfig branch not found" + exit 1 +fi + +# The source branches +config_hash=$(git ls-tree $gitconfig | grep config | grep -oP '\w{40}') +branches=$(git cat-file blob "$config_hash" | grep hooks.update-ensure-follows.branches) +branches=("${branches#*=}") +excused=$(git cat-file blob "$config_hash" | grep hooks.update-ensure-follows.excused) +excused=" ${excused#*=} " + +# We're going to merge stuff into the index, so make sure it's okay +git diff-index --cached --quiet HEAD -- || die "refusing to refollow--your index is not clean" + +# Get the latest remote refs +git fetch + +# So we can put the index back after we screw with it +original_head=$(git rev-parse HEAD) + +for source_branch in ${branches[@]} ; do + git branch -r | grep -v HEAD | while read line ; do + if [[ "$line" =~ origin/(.*) ]] ; then + attempt_merge $source_branch ${BASH_REMATCH[1]} + fi + done +done + +# Put the index back +git read-tree "$original_head" + diff --git a/tests/t5000-checkout.sh b/tests/t5000-checkout.sh new file mode 100644 index 0000000..c9ce960 --- /dev/null +++ b/tests/t5000-checkout.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +test_description='script checkout' + +. ./test-lib.sh + +export PATH=$PATH:../../scripts + +test_expect_success 'setup' ' + echo "setup" >a && + git add a && + git commit -m "setup" && + git clone ./. server && + rm -fr server/.git/hooks && + git remote add origin ./server + git checkout -b stable && + git push origin stable +' + +test_expect_success 'checkout a new branch clones stable' ' + gc-checkout topic1 && + git branch | grep topic1 && + git branch -r | grep origin/topic1 && + git config --list | grep "branch.topic1.merge=refs/heads/topic1" +' + +test_expect_success 'checkout an existing remote branch' ' + cd server && + git checkout -b topic2 stable && + echo "$test_name on server" >a && + git commit -a -m "Made topic2 on server" && + cd .. && + + ! git branch | grep topic2 && + gc-checkout topic2 && + git branch | grep topic2 && + git branch -r | grep origin/topic2 && + git config --list | grep "branch.topic2.merge=refs/heads/topic2" && + + echo "$test_name on client" >a && + git commit -a -m "Move topic2 on client" && + git push origin topic2 +' + +test_expect_success 'checkout an existing local branch' ' + gc-checkout topic1 +' + +test_expect_success 'checkout a revision does not create a new branch' ' + echo "$test_name" >a && + git commit -a -m "$test_name" && + + prior=$(git rev-parse HEAD^) && + gc-checkout $prior && + git branch | grep "no branch" +' + +test_done + diff --git a/tests/t5000-script-checkout.sh b/tests/t5000-script-checkout.sh deleted file mode 100644 index c9ce960..0000000 --- a/tests/t5000-script-checkout.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh - -test_description='script checkout' - -. ./test-lib.sh - -export PATH=$PATH:../../scripts - -test_expect_success 'setup' ' - echo "setup" >a && - git add a && - git commit -m "setup" && - git clone ./. server && - rm -fr server/.git/hooks && - git remote add origin ./server - git checkout -b stable && - git push origin stable -' - -test_expect_success 'checkout a new branch clones stable' ' - gc-checkout topic1 && - git branch | grep topic1 && - git branch -r | grep origin/topic1 && - git config --list | grep "branch.topic1.merge=refs/heads/topic1" -' - -test_expect_success 'checkout an existing remote branch' ' - cd server && - git checkout -b topic2 stable && - echo "$test_name on server" >a && - git commit -a -m "Made topic2 on server" && - cd .. && - - ! git branch | grep topic2 && - gc-checkout topic2 && - git branch | grep topic2 && - git branch -r | grep origin/topic2 && - git config --list | grep "branch.topic2.merge=refs/heads/topic2" && - - echo "$test_name on client" >a && - git commit -a -m "Move topic2 on client" && - git push origin topic2 -' - -test_expect_success 'checkout an existing local branch' ' - gc-checkout topic1 -' - -test_expect_success 'checkout a revision does not create a new branch' ' - echo "$test_name" >a && - git commit -a -m "$test_name" && - - prior=$(git rev-parse HEAD^) && - gc-checkout $prior && - git branch | grep "no branch" -' - -test_done - diff --git a/tests/t5100-push.sh b/tests/t5100-push.sh new file mode 100644 index 0000000..587e036 --- /dev/null +++ b/tests/t5100-push.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +test_description='script create branch' + +. ./test-lib.sh + +export PATH=$PATH:../../scripts + +test_expect_success 'setup' ' + echo "setup" >a && + git add a && + git commit -m "setup" && + git clone ./. server && + rm -fr server/.git/hooks && + git remote add origin ./server && + git config branch.master.remote origin && + git config branch.master.merge refs/heads/master && + git fetch && + + git checkout -b stable && + git push origin stable +' + +test_expect_success 'push only does one branch' ' + checkout topic1 && + echo "$test_name" >a && + git commit -a -m "move topic1" && + git rev-parse HEAD >head.topic1 && + + checkout topic2 && + echo "$test_name" >a && + git commit -a -m "move topic2" && + git rev-parse HEAD >head.topic2 && + + push && + git rev-parse origin/topic2 >head.origin.topic2 && + git rev-parse origin/topic1 >head.origin.topic1 && + + test_cmp head.topic2 head.origin.topic2 && + ! test_cmp head.topic2 head.origin.topic1 +' + +test_done + diff --git a/tests/t5100-script-push.sh b/tests/t5100-script-push.sh deleted file mode 100644 index 7ca75e8..0000000 --- a/tests/t5100-script-push.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh - -test_description='script create branch' - -. ./test-lib.sh - -export PATH=$PATH:../../scripts - -test_expect_success 'setup' ' - echo "setup" >a && - git add a && - git commit -m "setup" && - git clone ./. server && - rm -fr server/.git/hooks && - git remote add origin ./server && - git config --add branch.master.remote origin && - git config --add branch.master.merge refs/heads/master && - git fetch && - - git checkout -b stable && - git push origin stable -' - -test_expect_success 'push only does one branch' ' - gc-checkout topic1 && - echo "$test_name" >a && - git commit -a -m "move topic1" && - git rev-parse HEAD >head.topic1 && - - gc-checkout topic2 && - echo "$test_name" >a && - git commit -a -m "move topic2" && - git rev-parse HEAD >head.topic2 && - - gc-push && - git rev-parse origin/topic2 >head.origin.topic2 && - git rev-parse origin/topic1 >head.origin.topic1 && - - test_cmp head.topic2 head.origin.topic2 && - ! test_cmp head.topic2 head.origin.topic1 -' - -test_done - diff --git a/tests/t5200-pull.sh b/tests/t5200-pull.sh new file mode 100644 index 0000000..6fdfb07 --- /dev/null +++ b/tests/t5200-pull.sh @@ -0,0 +1,70 @@ +#!/bin/sh + +test_description='script pull' + +. ./test-lib.sh + +export PATH=$PATH:../../scripts + +test_expect_success 'setup' ' + echo "setup" >a && + git add a && + git commit -m "setup" && + git clone ./. server && + rm -fr server/.git/hooks && + git remote add origin ./server && + git checkout -b stable && + git push origin stable +' + +test_expect_success 'pull does a rebase' ' + checkout topic1 && + echo "$test_name" >a.topic1 && + git add a.topic1 && + git commit -m "move topic1" && + + # Move topic1 on the server + cd server && + git checkout topic1 && + echo "$test_name" >a && + git commit -a -m "move topic1 on the server" && + cd .. && + + # Only one parent + pull && + test 1 = $(git cat-file commit $(git rev-parse HEAD) | grep parent | wc -l) +' + +test_expect_success 'pull does a rebase but does not fuck up merges' ' + checkout topic2 && + echo "$test_name on topic2" >a.topic2 && + git add a.topic2 && + git commit -a -m "create topic2" && + git push origin topic2 && + + # Move stable + git checkout stable && + echo "$test_name on stable" >a && + git commit -a -m "move stable that will not be replayed" && + git push origin stable && + + # And merge stable into topic2 + git checkout topic2 && + git merge stable && + + # Move topic2 on the server + cd server && + git checkout topic2 && + echo "$test_name" >a.topic2.server && + git add a.topic2.server && + git commit -m "move topic2 on the server" && + cd .. && + + # Merge stable locally too--should conflict + git checkout topic2 && + pull && + test 1 = $(git rev-list --all --pretty=oneline | grep "replayed" | wc -l) +' + +test_done + diff --git a/tests/t5200-script-pull.sh b/tests/t5200-script-pull.sh deleted file mode 100644 index 39e660d..0000000 --- a/tests/t5200-script-pull.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh - -test_description='script pull' - -. ./test-lib.sh - -export PATH=$PATH:../../scripts - -test_expect_success 'setup' ' - echo "setup" >a && - git add a && - git commit -m "setup" && - git clone ./. server && - rm -fr server/.git/hooks && - git remote add origin ./server && - git checkout -b stable && - git push origin stable -' - -test_expect_success 'pull does a rebase' ' - gc-checkout topic1 && - echo "$test_name" >a.topic1 && - git add a.topic1 && - git commit -m "move topic1" && - - # Move topic1 on the server - cd server && - git checkout topic1 && - echo "$test_name" >a && - git commit -a -m "move topic1 on the server" && - cd .. && - - # Only one parent - gc-pull && - test 1 = $(git cat-file commit $(git rev-parse HEAD) | grep parent | wc -l) -' - -test_expect_success 'pull does a rebase but does not fuck up merges' ' - gc-checkout topic2 && - echo "$test_name on topic2" >a.topic2 && - git add a.topic2 && - git commit -a -m "create topic2" && - git push origin topic2 && - - # Move stable - git checkout stable && - echo "$test_name on stable" >a && - git commit -a -m "move stable that will not be replayed" && - git push origin stable && - - # And merge stable into topic2 - git checkout topic2 && - git merge stable && - - # Move topic2 on the server - cd server && - git checkout topic2 && - echo "$test_name" >a.topic2.server && - git add a.topic2.server && - git commit -m "move topic2 on the server" && - cd .. && - - # Merge stable locally too--should conflict - git checkout topic2 && - gc-pull && - test 1 = $(git rev-list --all --pretty=oneline | grep "replayed" | wc -l) -' - -test_done - diff --git a/tests/t5300-script-add.sh b/tests/t5300-script-add.sh deleted file mode 100644 index 76fdca2..0000000 --- a/tests/t5300-script-add.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh - -test_description='script add' - -. ./test-lib.sh - -export PATH=$PATH:../../scripts - -test_expect_success 'setup' ' - echo "setup" >a && - git add a && - git commit -m "setup" && - git clone ./. server && - rm -fr server/.git/hooks && - git remote add origin ./server && - git checkout -b stable && - git push origin stable -' - -test_expect_success 'add picks up new files' ' - echo "$test_name" >a.new && - gc-add && - git commit -m "add" -' - -test_expect_success 'add picks up changed files' ' - echo "$test_name" >a.new && - gc-add && - git commit -m "change" -' - -test_expect_success 'add picks up removed files' ' - rm a.new && - gc-add && - git commit -m "remove" -' - -test_done - diff --git a/tests/t5400-refollow.sh b/tests/t5400-refollow.sh new file mode 100644 index 0000000..70e90d4 --- /dev/null +++ b/tests/t5400-refollow.sh @@ -0,0 +1,103 @@ +#!/bin/sh + +test_description='script refollow' + +. ./test-lib.sh + +export PATH=$PATH:../../scripts + +test_expect_success 'setup' ' + echo "setup" >a && + git add a && + git commit -m "setup" && + git clone ./. server && + rm -fr server/.git/hooks && + git remote add origin ./server && + git checkout -b stable && + git push origin stable +' + +test_expect_success 'setup gitconfig' ' + make-gitconfig-branch && + git checkout gitconfig && + echo "hooks.update-ensure-follows.branches=stable" >>config && + echo "hooks.update-ensure-follows.excused=master gitconfig" >>config && + git commit -a -m "enable update-ensure-follows" && + git push origin gitconfig +' + +test_expect_success 'make topic1 then move stable' ' + git checkout -b topic1 stable && + echo "$test_name" >a.topic1 && + git add a.topic1 && + git commit -m "$test_name on topic1" && + git push origin topic1 && + + git checkout stable && + echo "$test_name" >a && + git commit -a -m "$test_name on stable" && + git push +' + +test_expect_success 'refollow fails with dirty index' ' + echo "$test_name" >a && + git add a && + ! refollow 2>refollow.err && + cat refollow.err | grep "refusing to refollow--your index is not clean" && + ! git reset a +' + +test_expect_success 'refollow topic1 onto stable' ' + echo "$test_name" >a && + git commit -a -m "move stable" && + git push origin stable && + refollow >refollow.out && + cat refollow.out | grep "Merging stable into topic1...succeeded" + + git checkout topic1 && + git pull origin topic1 && + cat a | grep "$test_name" +' + +test_expect_success 'refollow does not double tap' ' + # Still on topic1 + head=$(git rev-parse HEAD) && + refollow && + git pull origin topic1 && + git rev-parse HEAD | grep $head +' + +test_expect_success 'refollow respects excused' ' + git checkout gitconfig && + head=$(git rev-parse HEAD) && + + git checkout stable && + echo "$test_name" >a && + git commit -a -m "move stable" && + git push origin stable && + + refollow && + + git checkout gitconfig && + git pull origin gitconfig && + git rev-parse HEAD | grep $head +' + +test_expect_success 'refollow continues on conflict' ' + git checkout -b topic2 stable && + echo "$test_name" >a && + git commit -a -m "create topic2" && + git push origin topic2 && + + git checkout stable && + echo "$test_name" >a && + git commit -a -m "move stable" && + git push origin stable && + + refollow > refollow.out && + cat refollow.out | grep "Merging stable into topic1...succeeded" + cat refollow.out | grep "Merging stable into topic2...failed merge" +' + +test_done + diff --git a/tests/t5400-script-refollow.sh b/tests/t5400-script-refollow.sh deleted file mode 100644 index 911f177..0000000 --- a/tests/t5400-script-refollow.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/sh - -test_description='script refollow' - -. ./test-lib.sh - -export PATH=$PATH:../../scripts - -test_expect_success 'setup' ' - echo "setup" >a && - git add a && - git commit -m "setup" && - git clone ./. server && - rm -fr server/.git/hooks && - git remote add origin ./server && - git checkout -b stable && - git push origin stable -' - -test_expect_success 'setup gitconfig' ' - make-gitconfig-branch && - git checkout gitconfig && - echo "hooks.update-ensure-follows.branches=stable" >>config && - echo "hooks.update-ensure-follows.excused=master gitconfig" >>config && - git commit -a -m "enable update-ensure-follows" && - git push origin gitconfig -' - -test_expect_success 'make topic1 then move stable' ' - git checkout -b topic1 stable && - echo "$test_name" >a.topic1 && - git add a.topic1 && - git commit -m "$test_name on topic1" && - git push origin topic1 && - - git checkout stable && - echo "$test_name" >a && - git commit -a -m "$test_name on stable" && - git push -' - -test_expect_success 'refollow fails with dirty index' ' - echo "$test_name" >a && - git add a && - ! gc-refollow 2>refollow.err && - cat refollow.err | grep "refusing to refollow--your index is not clean" && - ! git reset a -' - -test_expect_success 'refollow topic1 onto stable' ' - echo "$test_name" >a && - git commit -a -m "move stable" && - git push origin stable && - gc-refollow >refollow.out && - cat refollow.out | grep "Merging stable into topic1...succeeded" - - git checkout topic1 && - git pull origin topic1 && - cat a | grep "$test_name" -' - -test_expect_success 'refollow does not double tap' ' - # Still on topic1 - head=$(git rev-parse HEAD) && - gc-refollow && - git pull origin topic1 && - git rev-parse HEAD | grep $head -' - -test_expect_success 'refollow respects excused' ' - git checkout gitconfig && - head=$(git rev-parse HEAD) && - - git checkout stable && - echo "$test_name" >a && - git commit -a -m "move stable" && - git push origin stable && - - gc-refollow && - - git checkout gitconfig && - git pull origin gitconfig && - git rev-parse HEAD | grep $head -' - -test_expect_success 'refollow continues on conflict' ' - git checkout -b topic2 stable && - echo "$test_name" >a && - git commit -a -m "create topic2" && - git push origin topic2 && - - git checkout stable && - echo "$test_name" >a && - git commit -a -m "move stable" && - git push origin stable && - - gc-refollow > refollow.out && - cat refollow.out | grep "Merging stable into topic1...succeeded" - cat refollow.out | grep "Merging stable into topic2...failed merge" -' - -test_done - diff --git a/tests/t5500-script-tattoo.sh b/tests/t5500-script-tattoo.sh deleted file mode 100644 index 561b4bf..0000000 --- a/tests/t5500-script-tattoo.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh - -test_description='script tattoo' - -. ./test-lib.sh - -export PATH=$PATH:../../scripts - -test_expect_success 'setup' ' - echo "setup" >a && - git add a && - git commit -m "setup" && - git clone ./. server && - rm -fr server/.git/hooks && - git remote add origin ./server && - git checkout -b stable && - git push origin stable -' - -# tattoo makes assumptions based on the update stable hook sanity checks -install_update_hook 'update-stable' -install_post_receive_hook 'post-receive-assign-commit-numbers' - -test_expect_success 'tattoo of unpublished commit fails' ' - gc-tattoo | grep "No commit number tag found" -' - -test_done - -test_expect_success 'tattoo 1' ' - git checkout -b topic1 && - echo "$test_name" >a.topic1 && - git add a.topic1 && - git commit -a -m "move topic1-1" && - git push origin topic1 && - gc-tattoo | grep topic1-1 -' - -test_expect_success 'tattoo 2' ' - echo "$test_name" >a && - git commit -a -m "make topic1-2" && - git push origin topic1 && - gc-tattoo | grep topic1-2 -' - -test_expect_success 'merge topic2 into topic1 as tattoo 3' ' - git checkout -b topic2 stable && - echo "$test_name" >a.topic2 && - git add a.topic2 && - git commit -m "make topic2-1" && - git push origin topic2 && - gc-tattoo | grep topic2-1 && - - git checkout topic1 && - git merge topic2 && - git push origin topic1 && - gc-tattoo | grep topic1-3 && - - git checkout topic2 && - gc-tattoo | grep topic2-1 -' - -test_expect_success 'fails if not pushed' ' - git checkout topic1 && - echo "$test_name" >a && - git commit -a -m "make topic1-4" && - head=$(git rev-parse HEAD) && - gc-tattoo | grep "$head has not been pushed" && - git push origin topic1 && - gc-tattoo | grep topic1-4 -' - -test_expect_success 'stable fails if not pushed' ' - git checkout stable && - git merge --no-ff topic1 && - head=$(git rev-parse HEAD) && - gc-tattoo | grep "$head has not been pushed" && - git push && - gc-tattoo | grep "stable-$head" -' - -test_expect_success 'stable without a tag' ' - git checkout stable && - head=$(git rev-parse HEAD) && - gc-tattoo | grep "stable-$head" -' - -test_expect_success 'stable with a tag' ' - git tag -m "1.0" 1.0 && - gc-tattoo | grep "1.0" -' - -test_expect_success 'use origin stable not local' ' - git checkout origin/stable && - git branch -d stable && - git checkout topic2 && - gc-tattoo | grep "topic2-1" -' - -test_done -