Skip to content

Commit

Permalink
Add a script to generate the diff between 2 branches
Browse files Browse the repository at this point in the history
  • Loading branch information
Bhaal22 committed Mar 16, 2017
1 parent 31ffe53 commit d5f8b54
Showing 1 changed file with 88 additions and 0 deletions.
88 changes: 88 additions & 0 deletions bin/git-bc-diff-branch
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
#!/bin/bash
# Copyright 2017 Bright Computing Holding BV.

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

# http://www.apache.org/licenses/LICENSE-2.0

# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -e

USAGE="\
git bc-diff-branch
Generates the diff between 2 branches considering only the files
modified from the common ancestor from the left commit and
the right commit.
Usage:
git bc-diff-branch [options]
Options:
-s, --stat Enable git diff stat feature
-l, --left Left branch
-r, --right Right branch
"
SCRIPT=`readlink -f $0`
DIR=`dirname $SCRIPT`

. $DIR/bc-env.sh


STAT=0
while [ $# -gt 0 ]; do
ARG=$1
case "$ARG" in
--help|-h)
HELP=1
;;
--stat|-s)
shift
STAT=1
;;
--left|-l)
shift
LEFT_COMMIT=$1
;;
--right|-r)
shift
RIGHT_COMMIT=$1
;;
--*)
die "unrecognised option: $ARG" ;;
esac
shift
done

if [ "$HELP" -eq 1 ] || [ -z "$LEFT_COMMIT" ] || [ -z "$RIGHT_COMMIT" ]; then
usage
fi


cherrypick_merge() {
STAT=""
if [ "$1" -eq "1" ]; then
STAT="--stat"
fi

LEFT_COMMIT=$2
RIGHT_COMMIT=$3

COMMON_ANCESTOR=$(git merge-base $LEFT_COMMIT $RIGHT_COMMIT)
FILES=$(git show --pretty="" --name-only $COMMON_ANCESTOR..HEAD)

git diff $STAT $LEFT_COMMIT $RIGHT_COMMIT $FILES
}

cherrypick_merge $STAT $LEFT_COMMIT $RIGHT_COMMIT


0 comments on commit d5f8b54

Please sign in to comment.