Browse Source

Merge branch 'jc/subdir'

* jc/subdir:
  Allow whole-tree operations to be started from a subdirectory
  Use cd_to_toplevel in scripts that implement it by hand.
  Define cd_to_toplevel shell function in git-sh-setup
maint
Junio C Hamano 18 years ago
parent
commit
3681d40b96
  1. 6
      git-checkout.sh
  2. 22
      git-commit.sh
  3. 6
      git-fetch.sh
  4. 4
      git-merge.sh
  5. 4
      git-pull.sh
  6. 3
      git-rebase.sh
  7. 6
      git-reset.sh
  8. 3
      git-revert.sh
  9. 11
      git-sh-setup.sh

6
git-checkout.sh

@ -135,11 +135,7 @@ fi


# We are switching branches and checking out trees, so # We are switching branches and checking out trees, so
# we *NEED* to be at the toplevel. # we *NEED* to be at the toplevel.
cdup=$(git-rev-parse --show-cdup) cd_to_toplevel
if test ! -z "$cdup"
then
cd "$cdup"
fi


[ -z "$new" ] && new=$old && new_name="$old_name" [ -z "$new" ] && new=$old && new_name="$old_name"



22
git-commit.sh

@ -316,22 +316,16 @@ esac
################################################################ ################################################################
# Prepare index to have a tree to be committed # Prepare index to have a tree to be committed


TOP=`git-rev-parse --show-cdup`
if test -z "$TOP"
then
TOP=./
fi

case "$all,$also" in case "$all,$also" in
t,) t,)
save_index && save_index &&
( (
cd "$TOP" cd_to_toplevel &&
GIT_INDEX_FILE="$NEXT_INDEX" GIT_INDEX_FILE="$NEXT_INDEX" &&
export GIT_INDEX_FILE export GIT_INDEX_FILE &&
git-diff-files --name-only -z | git-diff-files --name-only -z |
git-update-index --remove -z --stdin git-update-index --remove -z --stdin
) ) || exit
;; ;;
,t) ,t)
save_index && save_index &&
@ -339,11 +333,11 @@ t,)


git-diff-files --name-only -z -- "$@" | git-diff-files --name-only -z -- "$@" |
( (
cd "$TOP" cd_to_toplevel &&
GIT_INDEX_FILE="$NEXT_INDEX" GIT_INDEX_FILE="$NEXT_INDEX" &&
export GIT_INDEX_FILE export GIT_INDEX_FILE &&
git-update-index --remove -z --stdin git-update-index --remove -z --stdin
) ) || exit
;; ;;
,) ,)
case "$#" in case "$#" in

6
git-fetch.sh

@ -5,12 +5,8 @@ USAGE='<fetch-options> <repository> <refspec>...'
SUBDIRECTORY_OK=Yes SUBDIRECTORY_OK=Yes
. git-sh-setup . git-sh-setup
set_reflog_action "fetch $*" set_reflog_action "fetch $*"
cd_to_toplevel ;# probably unnecessary...


TOP=$(git-rev-parse --show-cdup)
if test ! -z "$TOP"
then
cd "$TOP"
fi
. git-parse-remote . git-parse-remote
_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"

4
git-merge.sh

@ -5,12 +5,14 @@


USAGE='[-n] [--no-commit] [--squash] [-s <strategy>] [-m=<merge-message>] <commit>+' USAGE='[-n] [--no-commit] [--squash] [-s <strategy>] [-m=<merge-message>] <commit>+'


SUBDIRECTORY_OK=Yes
. git-sh-setup . git-sh-setup
set_reflog_action "merge $*" set_reflog_action "merge $*"
require_work_tree require_work_tree
cd_to_toplevel


test -z "$(git ls-files -u)" || test -z "$(git ls-files -u)" ||
die "You are in a middle of conflicted merge." die "You are in the middle of a conflicted merge."


LF=' LF='
' '

4
git-pull.sh

@ -6,12 +6,14 @@


USAGE='[-n | --no-summary] [--no-commit] [-s strategy]... [<fetch-options>] <repo> <head>...' USAGE='[-n | --no-summary] [--no-commit] [-s strategy]... [<fetch-options>] <repo> <head>...'
LONG_USAGE='Fetch one or more remote refs and merge it/them into the current HEAD.' LONG_USAGE='Fetch one or more remote refs and merge it/them into the current HEAD.'
SUBDIRECTORY_OK=Yes
. git-sh-setup . git-sh-setup
set_reflog_action "pull $*" set_reflog_action "pull $*"
require_work_tree require_work_tree
cd_to_toplevel


test -z "$(git ls-files -u)" || test -z "$(git ls-files -u)" ||
die "You are in a middle of conflicted merge." die "You are in the middle of a conflicted merge."


strategy_args= no_summary= no_commit= squash= strategy_args= no_summary= no_commit= squash=
while case "$#,$1" in 0) break ;; *,-*) ;; *) break ;; esac while case "$#,$1" in 0) break ;; *,-*) ;; *) break ;; esac

3
git-rebase.sh

@ -27,9 +27,12 @@ Example: git-rebase master~1 topic
/ --> / / --> /
D---E---F---G master D---E---F---G master D---E---F---G master D---E---F---G master
' '

SUBDIRECTORY_OK=Yes
. git-sh-setup . git-sh-setup
set_reflog_action rebase set_reflog_action rebase
require_work_tree require_work_tree
cd_to_toplevel


RESOLVEMSG=" RESOLVEMSG="
When you have resolved this problem run \"git rebase --continue\". When you have resolved this problem run \"git rebase --continue\".

6
git-reset.sh

@ -53,11 +53,7 @@ then
exit exit
fi fi


TOP=$(git-rev-parse --show-cdup) cd_to_toplevel
if test ! -z "$TOP"
then
cd "$TOP"
fi


if test "$reset_type" = "--hard" if test "$reset_type" = "--hard"
then then

3
git-revert.sh

@ -19,8 +19,11 @@ case "$0" in
echo >&2 "What are you talking about?" echo >&2 "What are you talking about?"
exit 1 ;; exit 1 ;;
esac esac

SUBDIRECTORY_OK=Yes ;# we will cd up
. git-sh-setup . git-sh-setup
require_work_tree require_work_tree
cd_to_toplevel


no_commit= no_commit=
while case "$#" in 0) break ;; esac while case "$#" in 0) break ;; esac

11
git-sh-setup.sh

@ -36,6 +36,17 @@ is_bare_repository () {
esac esac
} }


cd_to_toplevel () {
cdup=$(git-rev-parse --show-cdup)
if test ! -z "$cdup"
then
cd "$cdup" || {
echo >&2 "Cannot chdir to $cdup, the toplevel of the working tree"
exit 1
}
fi
}

require_work_tree () { require_work_tree () {
test $(is_bare_repository) = false || test $(is_bare_repository) = false ||
die "fatal: $0 cannot be used without a working tree." die "fatal: $0 cannot be used without a working tree."

Loading…
Cancel
Save