chiark / gitweb /
untested git support
[bin.git] / baz-update-config
index 922b75a1b434e5b2b4542433d693a303045b6d80..71588857cf05a071aa174c184359ebe5e9f722b2 100755 (executable)
@@ -12,22 +12,45 @@ NEWLINE='
 
 IFS_SAVE="$IFS"
 IFS="$NEWLINE"
-for line in $(baz cat-config "$1"); do
+for line in $(baz cat-config "$1" 2>/dev/null || cat "$1"); do
        IFS="$IFS_SAVE"
        set -- $line
        DIR="$1"
        VERSION="$2"
 
+       echo "Updating $DIR ($VERSION) ..."
+
        case $VERSION in
-               http://*)
+               bzr+ssh://*|http://*|sftp://*)
                        if [ -d "$DIR" ]; then
                                if [ ! -d "$DIR/.bzr" ]; then
                                        echo "$DIR is not a bzr checkout; cannot update" >&2
                                        continue
+                               elif [ -f "$DIR/.bzr/branch/bound" ]; then
+                                       bzr update "$DIR"
+                               else
+                                       (cd "$DIR" && bzr pull "$VERSION")
+                               fi
+                       else
+                               case $VERSION in
+                                       bzr+ssh://*|sftp://*)
+                                               bzr checkout "$VERSION" "$DIR"
+                                               ;;
+                                       *)
+                                               bzr get "$VERSION" "$DIR"
+                                               ;;
+                               esac
+                       fi
+                       ;;
+               git://*|git+*://*)
+                       if [ -d "$DIR" ]; then
+                               if [ ! -d "$DIR/.git" ]; then
+                                       echo "$DIR is not a git checkout; cannot update" >&2
+                                       continue
                                fi
-                               (cd "$DIR" && bzr pull "$VERSION")
+                               (cd "$DIR" && git pull "$VERSION")
                        else
-                               bzr get "$VERSION" "$DIR"
+                               git clone "$VERSION" "$DIR"
                        fi
                        ;;
                *)