]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - setup.sh
README: Convert to asciidoc.
[config/dotfiles.git] / setup.sh
index 8bb651c8f83c50ebf0a4b621b072e730484b4d61..50df24d8ccc5223a5adb6f80b58f6641cc7abc86 100755 (executable)
--- a/setup.sh
+++ b/setup.sh
@@ -7,7 +7,7 @@
 # Creates a new git repository in $1, adds a new remote named $2 and fetches
 # the master on $3. If the git repository already exists a new remote $2 for
 # $3 is added. If the remote already exists nothing happens.
-function git_remote_init_update() {
+git_remote_init_update() {
     # Make sure the requested directory exists.
     mkdir -p "$1"
     # Go to the target directory.
@@ -28,6 +28,12 @@ function git_remote_init_update() {
         echo "Adding remote '$2' to '$1'."
         git remote add -t master "$2" "$3/$1"
         git fetch "$2" > /dev/null
+        # Remove the remote and abort if the fetch was unsuccessful.
+        if [ "$?" -ne "0" ]; then
+            git remote rm "$2"
+            exit 1
+        fi
+
         # Pushing to the remote pushes only the master branch in remotes named
         # the hostname of this machine. This makes it easy to see where
         # changes came from.
@@ -38,9 +44,10 @@ function git_remote_init_update() {
     fi
 
     # Merge with remote master if the repository was just created, otherwise
-    # the repository starts empty.
+    # the repository starts empty. Also run gc to compress the new repository.
     if [ $new = yes ]; then
         git merge "$2/master"
+        git gc > /dev/null
     fi
 
     # Go back to the starting directory.