diff --git a/diskimage_builder/elements/source-repositories/extra-data.d/98-source-repositories b/diskimage_builder/elements/source-repositories/extra-data.d/98-source-repositories
index 16df6a933..5f4703296 100755
--- a/diskimage_builder/elements/source-repositories/extra-data.d/98-source-repositories
+++ b/diskimage_builder/elements/source-repositories/extra-data.d/98-source-repositories
@@ -125,13 +125,13 @@ function get_repos_for_element(){
                 fi
 
                 if [ "$REPOREF" != "*" ] ; then
-                    HAS_REF=$(git --git-dir=$CACHE_PATH/.git name-rev $REPOREF 2>/dev/null || true)
+                    HAS_REF=$(git -C ${CACHE_PATH} name-rev $REPOREF 2>/dev/null || true)
                 fi
                 if [ -z "$DIB_OFFLINE" -o -z "${HAS_REF:-}" ] ; then
                     echo "Updating cache of $REPOLOCATION in $CACHE_PATH with ref $REPOREF"
                     # Copy named refs (which might be outside the usual heads
                     # pattern) - e.g. gerrit
-                    if [ "$REPOREF" == "*" ] || ! git --git-dir=$CACHE_PATH/.git fetch -q --prune --update-head-ok $REPOLOCATION \
+                    if [ "$REPOREF" == "*" ] || ! git -C ${CACHE_PATH} fetch -q --prune --update-head-ok $REPOLOCATION \
                             +${REPOREF}:${REPOREF} ; then
                         # Copy all heads from the remote repository - this permits
                         # using a SHA1 object reference so long as the object
@@ -139,12 +139,12 @@ function get_repos_for_element(){
                         # not permit arbitrary sha fetching from remote servers.
                         # This is a separate fetch to the prior one as the prior
                         # one will fail when REPOREF is a SHA1.
-                        git --git-dir=$CACHE_PATH/.git fetch -q --prune --update-head-ok $REPOLOCATION \
+                        git -C ${CACHE_PATH} fetch -q --prune --update-head-ok $REPOLOCATION \
                             +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
                     fi
                     # Ensure that we have a reference to the revision.
                     if [ "$REPOREF" != "*" ] ; then
-                        if ! git --git-dir=$CACHE_PATH/.git rev-parse -q --verify $REPOREF^{commit} > /dev/null; then
+                        if ! git -C ${CACHE_PATH} rev-parse -q --verify $REPOREF^{commit} > /dev/null; then
                             echo "Failed to find reference to $REPOREF"
                             exit 1
                         fi
@@ -154,7 +154,7 @@ function get_repos_for_element(){
                 echo "Cloning from $REPONAME cache and applying ref $REPOREF"
                 # If the local dir is already used, see if the pertinent details differ
                 if [[ -d $REPO_DEST ]]; then
-                    DESIRED="$(sudo git --git-dir=$REPO_DEST/.git config remote.origin.url)"
+                    DESIRED="$(sudo git -C ${REPO_DEST} config remote.origin.url)"
                     if [[ "$CACHE_PATH" != "$DESIRED" ]]; then
                         echo "REPOLOCATIONS don't match ("$CACHE_PATH" != "$DESIRED")" >&2
                         exit 1