aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2017-02-25 19:30:37 +0100
committerKarel Kočí <cynerd@email.cz>2017-02-25 19:30:37 +0100
commite7086db0959d70e51cb04d8821d6b8b13ebf8878 (patch)
treeb7d86e619369d4286ec50c59a8074b3cb84cd373 /utils
parentff931f9bcdfb16ccb9ee0c6aa0085a5688e7d2cc (diff)
downloadmyconfigs-e7086db0959d70e51cb04d8821d6b8b13ebf8878.tar.gz
myconfigs-e7086db0959d70e51cb04d8821d6b8b13ebf8878.tar.bz2
myconfigs-e7086db0959d70e51cb04d8821d6b8b13ebf8878.zip
Update the way git repositories are handled
Diffstat (limited to 'utils')
-rw-r--r--utils/inst19
1 files changed, 14 insertions, 5 deletions
diff --git a/utils/inst b/utils/inst
index c3c26e2..cb1f658 100644
--- a/utils/inst
+++ b/utils/inst
@@ -51,12 +51,21 @@ checkdiff() {
fi
done
# Now checkout git repositories
- for g in `find "$1" -name .git -type f -printf '%h '`; do
+ for g in `find "$1" -type d -exec test -e '{}'/.git \; -print -prune`; do
G="${g#$1}"
- COMMIT=$( cd "$1/$G" && git rev-parse HEAD )
- echo "Checkout of git repository: $2/$G"
- # TODO this doesn't seems to work
- ( cd "$2/$G" && git --work-tree=. checkout -f "$COMMIT" )
+ PREV="$(pwd)"
+ cd "$2/$G"
+ # Check if we have any change at all
+ if git --work-tree=. diff --exit-code -s; then
+ echo "No difference detected in git: $2/$G"
+ else
+ echo "Checkout of git repository: $2/$G"
+ # Checkout all files to HEAD
+ git --work-tree=. checkout -f HEAD
+ # Update all submodules
+ git --work-tree=. submodule update
+ fi
+ cd "$PREV"
done
else
dodiff "$1" "$2"