Merge branch 'jn/submodule-b-current'
authorJunio C Hamano <gitster@pobox.com>
Thu, 16 Dec 2010 20:49:22 +0000 (12:49 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Dec 2010 20:49:22 +0000 (12:49 -0800)
* jn/submodule-b-current:
git submodule: Remove now obsolete tests before cloning a repo
git submodule -b ... of current HEAD fails

1  2 
git-submodule.sh
diff --combined git-submodule.sh
index 33bc41f069d9807285db6630132e14f8c518ce47,a84418f1aabc8416d98f9ad49fc8f459435b7e91..c21b77aee54cd045b7bb64ae7337387569bbf65a
@@@ -93,20 -93,6 +93,6 @@@ module_clone(
        url=$2
        reference="$3"
  
-       # If there already is a directory at the submodule path,
-       # expect it to be empty (since that is the default checkout
-       # action) and try to remove it.
-       # Note: if $path is a symlink to a directory the test will
-       # succeed but the rmdir will fail. We might want to fix this.
-       if test -d "$path"
-       then
-               rmdir "$path" 2>/dev/null ||
-               die "Directory '$path' exists, but is neither empty nor a git repository"
-       fi
-       test -e "$path" &&
-       die "A file already exist at path '$path'"
        if test -n "$reference"
        then
                git-clone "$reference" -n "$url" "$path"
@@@ -241,7 -227,7 +227,7 @@@ cmd_add(
                        # ash fails to wordsplit ${branch:+-b "$branch"...}
                        case "$branch" in
                        '') git checkout -f -q ;;
-                       ?*) git checkout -f -q -b "$branch" "origin/$branch" ;;
+                       ?*) git checkout -f -q -B "$branch" "origin/$branch" ;;
                        esac
                ) || die "Unable to checkout submodule '$path'"
        fi
@@@ -374,35 -360,41 +360,35 @@@ cmd_init(
  cmd_update()
  {
        # parse $args after "submodule ... update".
 -      orig_args="$@"
 +      orig_flags=
        while test $# -ne 0
        do
                case "$1" in
                -q|--quiet)
 -                      shift
                        GIT_QUIET=1
                        ;;
                -i|--init)
                        init=1
 -                      shift
                        ;;
                -N|--no-fetch)
 -                      shift
                        nofetch=1
                        ;;
                -r|--rebase)
 -                      shift
                        update="rebase"
                        ;;
                --reference)
                        case "$2" in '') usage ;; esac
                        reference="--reference=$2"
 -                      shift 2
 +                      orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
 +                      shift
                        ;;
                --reference=*)
                        reference="$1"
 -                      shift
                        ;;
                -m|--merge)
 -                      shift
                        update="merge"
                        ;;
                --recursive)
 -                      shift
                        recursive=1
                        ;;
                --)
                        break
                        ;;
                esac
 +              orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
 +              shift
        done
  
        if test -n "$init"
  
                if test -n "$recursive"
                then
 -                      (clear_local_git_env; cd "$path" && cmd_update $orig_args) ||
 +                      (clear_local_git_env; cd "$path" && eval cmd_update "$orig_flags") ||
                        die "Failed to recurse into submodule path '$path'"
                fi
        done
@@@ -729,7 -719,7 +715,7 @@@ cmd_summary() 
  cmd_status()
  {
        # parse $args after "submodule ... status".
 -      orig_args="$@"
 +      orig_flags=
        while test $# -ne 0
        do
                case "$1" in
                        break
                        ;;
                esac
 +              orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
                shift
        done
  
                                prefix="$displaypath/"
                                clear_local_git_env
                                cd "$path" &&
 -                              cmd_status $orig_args
 +                              eval cmd_status "$orig_args"
                        ) ||
                        die "Failed to recurse into submodule path '$path'"
                fi
@@@ -833,12 -822,11 +819,12 @@@ cmd_sync(
                        ;;
                esac
  
 +              say "Synchronizing submodule url for '$name'"
 +              git config submodule."$name".url "$url"
 +
                if test -e "$path"/.git
                then
                (
 -                      say "Synchronizing submodule url for '$name'"
 -                      git config submodule."$name".url "$url"
                        clear_local_git_env
                        cd "$path"
                        remote=$(get_default_remote)