URI: 
       tgit sanity: enforce "git checkout commithash" actually pulls commit - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit f5f3394552c4efa46b71e13d1ad3ab171936bd88
   DIR parent 661ecb2cf520e25ccdd5e01ac49d8c4884d2d09f
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Mon, 15 Jun 2020 20:01:22 +0200
       
       git sanity: enforce "git checkout commithash" actually pulls commit
       
       If there is a collision between a branch name and a commit hash, git
       will choose the branch, even if the full 40-hex-long commit hash is
       given. GitHub disallows branches/tags with such a name but git itself
       does not. By adding the `^{commit}` syntax sugar after a ref name,
       we can tell git that we want the commit hash to be preferred,
       and hence we don't need to trust GitHub (only git).
       
       see https://security.stackexchange.com/questions/225411/
       
       Diffstat:
         M contrib/android/Dockerfile          |       4 ++--
         M contrib/build-linux/appimage/build… |       2 +-
         M contrib/build-wine/prepare-wine.sh  |       8 ++++----
         M contrib/make_libsecp256k1.sh        |       2 +-
       
       4 files changed, 8 insertions(+), 8 deletions(-)
       ---
   DIR diff --git a/contrib/android/Dockerfile b/contrib/android/Dockerfile
       t@@ -154,7 +154,7 @@ RUN cd /opt \
            && cd buildozer \
            && git remote add sombernight https://github.com/SomberNight/buildozer \
            && git fetch --all \
       -    && git checkout d0323c165dd5d9aa23d5eb01044474fe006c3420 \
       +    && git checkout "d0323c165dd5d9aa23d5eb01044474fe006c3420^{commit}" \
            && python3 -m pip install --user -e .
        
        # install python-for-android
       t@@ -163,7 +163,7 @@ RUN cd /opt \
            && cd python-for-android \
            && git remote add sombernight https://github.com/SomberNight/python-for-android \
            && git fetch --all \
       -    && git checkout cef08b92268fe69ef331699c2205cbb091e730f0 \
       +    && git checkout "cef08b92268fe69ef331699c2205cbb091e730f0^{commit}" \
            && python3 -m pip install --user -e .
        
        # build env vars
   DIR diff --git a/contrib/build-linux/appimage/build.sh b/contrib/build-linux/appimage/build.sh
       t@@ -71,7 +71,7 @@ info "Building squashfskit"
        git clone "https://github.com/squashfskit/squashfskit.git" "$BUILDDIR/squashfskit"
        (
            cd "$BUILDDIR/squashfskit"
       -    git checkout "$SQUASHFSKIT_COMMIT"
       +    git checkout "${SQUASHFSKIT_COMMIT}^{commit}"
            make -C squashfs-tools mksquashfs || fail "Could not build squashfskit"
        )
        MKSQUASHFS="$BUILDDIR/squashfskit/squashfs-tools/mksquashfs"
   DIR diff --git a/contrib/build-wine/prepare-wine.sh b/contrib/build-wine/prepare-wine.sh
       t@@ -10,11 +10,11 @@ ZBAR_URL=https://sourceforge.net/projects/zbarw/files/$ZBAR_FILENAME/download
        ZBAR_SHA256=177e32b272fa76528a3af486b74e9cb356707be1c5ace4ed3fcee9723e2c2c02
        
        LIBUSB_REPO="https://github.com/libusb/libusb.git"
       -LIBUSB_COMMIT=e782eeb2514266f6738e242cdcb18e3ae1ed06fa
       +LIBUSB_COMMIT="e782eeb2514266f6738e242cdcb18e3ae1ed06fa"
        # ^ tag v1.0.23
        
        PYINSTALLER_REPO="https://github.com/SomberNight/pyinstaller.git"
       -PYINSTALLER_COMMIT=e934539374e30d1500fcdbe8e4eb0860413935b2
       +PYINSTALLER_COMMIT="e934539374e30d1500fcdbe8e4eb0860413935b2"
        # ^ tag 3.6, plus a custom commit that fixes cross-compilation with MinGW
        
        PYTHON_VERSION=3.7.7
       t@@ -88,7 +88,7 @@ info "Compiling libusb..."
            git init
            git remote add origin $LIBUSB_REPO
            git fetch --depth 1 origin $LIBUSB_COMMIT
       -    git checkout -b pinned FETCH_HEAD
       +    git checkout -b pinned "${LIBUSB_COMMIT}^{commit}"
            echo "libusb_1_0_la_LDFLAGS += -Wc,-static" >> libusb/Makefile.am
            ./bootstrap.sh || fail "Could not bootstrap libusb"
            host="i686-w64-mingw32"
       t@@ -119,7 +119,7 @@ info "Building PyInstaller."
            git init
            git remote add origin $PYINSTALLER_REPO
            git fetch --depth 1 origin $PYINSTALLER_COMMIT
       -    git checkout -b pinned FETCH_HEAD
       +    git checkout -b pinned "${$PYINSTALLER_COMMIT}^{commit}"
            rm -fv PyInstaller/bootloader/Windows-*/run*.exe || true
            # add reproducible randomness. this ensures we build a different bootloader for each commit.
            # if we built the same one for all releases, that might also get anti-virus false positives
   DIR diff --git a/contrib/make_libsecp256k1.sh b/contrib/make_libsecp256k1.sh
       t@@ -35,7 +35,7 @@ info "Building $pkgname..."
            fi
            git reset --hard
            git clean -f -x -q
       -    git checkout $LIBSECP_VERSION
       +    git checkout "${LIBSECP_VERSION}^{commit}"
        
            if ! [ -x configure ] ; then
                echo "libsecp256k1_la_LDFLAGS = -no-undefined" >> Makefile.am