X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=git-debpush;h=402b1dd6a14d5b13df45fb488f36520acbcf6319;hb=d859eec10fe463619069a01f4489b2a11af31fab;hp=5b99e72abaad4e4880ba613c796554420513aad3;hpb=224ca6b4a472fb9bb70f455bcea6733f9c9e99bc;p=dgit.git diff --git a/git-debpush b/git-debpush index 5b99e72a..402b1dd6 100755 --- a/git-debpush +++ b/git-debpush @@ -105,10 +105,15 @@ check_treesame () { shift 2 set +e - git diff --exit-code "$first".."$second" -- . "$@" + git diff --quiet --exit-code "$first".."$second" -- . "$@" git_diff_rc=$? set -e + # show the user what the difference was + if [ $git_diff_rc = 1 ]; then + git diff --compact-summary "$first".."$second" -- . "$@" + fi + if [ $git_diff_rc -le 1 ]; then return $git_diff_rc else @@ -116,6 +121,51 @@ check_treesame () { fi } +check_patches_apply () { + local should_match_branch="$1" + + local playground="$(git rev-parse --git-dir)/gdp" + local playtree="$playground/apply-patches" + local git_apply_rc=0 + + rm -rf "$playground" + mkdir -p "$playtree" + local pwd="$(pwd)" + cd "$playtree" + "$git_playtree_setup" . + + # checking out the upstream source and then d/patches on top + # ensures this check will work for a variety of quilt modes + git checkout -b upstream "$upstream_committish" + git checkout "$branch_commit" -- debian + + if [ -s "debian/patches/series" ]; then + while read patch; do + shopt -s extglob; patch="${patch%%?( )#*}"; shopt -u extglob + if [ -z "$patch" ]; then continue; fi + set +e + git apply --index "debian/patches/$patch" + git_apply_rc=$? + set -e + if ! [ $git_apply_rc = 0 ]; then + fail_check patches-applicable \ + "'git apply' failed to apply patch $patch" + break + fi + done