Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"

Since the files generated and used during a rebase are never to be
tracked, they should live in $GIT_DIR.  While at it, avoid the rather
meaningless term "dotest" to "rebase", and unhide ".dotest-merge".

This was wished for on the mailing list, but so far unimplemented.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin 2008-07-16 03:33:44 +02:00 коммит произвёл Junio C Hamano
Родитель 6c11a5fd46
Коммит 28ed6e7b32
15 изменённых файлов: 66 добавлений и 66 удалений

Просмотреть файл

@ -301,7 +301,7 @@ If it does not apply correctly, there can be various reasons.
patch appropriately. patch appropriately.
* Your MUA corrupted your patch; "am" would complain that * Your MUA corrupted your patch; "am" would complain that
the patch does not apply. Look at .dotest/ subdirectory and the patch does not apply. Look at .git/rebase/ subdirectory and
see what 'patch' file contains and check for the common see what 'patch' file contains and check for the common
corruption patterns mentioned above. corruption patterns mentioned above.

Просмотреть файл

@ -140,9 +140,9 @@ aborts in the middle,. You can recover from this in one of two ways:
the index file to bring it in a state that the patch should the index file to bring it in a state that the patch should
have produced. Then run the command with '--resolved' option. have produced. Then run the command with '--resolved' option.
The command refuses to process new mailboxes while `.dotest` The command refuses to process new mailboxes while `.git/rebase`
directory exists, so if you decide to start over from scratch, directory exists, so if you decide to start over from scratch,
run `rm -f -r .dotest` before running the command with mailbox run `rm -f -r .git/rebase` before running the command with mailbox
names. names.
Before any patches are applied, ORIG_HEAD is set to the tip of the Before any patches are applied, ORIG_HEAD is set to the tip of the

Просмотреть файл

@ -39,7 +39,7 @@ It is possible that a merge failure will prevent this process from being
completely automatic. You will have to resolve any such merge failure completely automatic. You will have to resolve any such merge failure
and run `git rebase --continue`. Another option is to bypass the commit and run `git rebase --continue`. Another option is to bypass the commit
that caused the merge failure with `git rebase --skip`. To restore the that caused the merge failure with `git rebase --skip`. To restore the
original <branch> and remove the .dotest working files, use the command original <branch> and remove the .git/rebase working files, use the command
`git rebase --abort` instead. `git rebase --abort` instead.
Assume the following history exists and the current branch is "topic": Assume the following history exists and the current branch is "topic":

Просмотреть файл

@ -2431,7 +2431,7 @@ $ git rebase origin
------------------------------------------------- -------------------------------------------------
This will remove each of your commits from mywork, temporarily saving This will remove each of your commits from mywork, temporarily saving
them as patches (in a directory named ".dotest"), update mywork to them as patches (in a directory named ".git/rebase"), update mywork to
point at the latest version of origin, then apply each of the saved point at the latest version of origin, then apply each of the saved
patches to the new mywork. The result will look like: patches to the new mywork. The result will look like:

Просмотреть файл

@ -73,26 +73,26 @@ __git_ps1 ()
if [ -n "$g" ]; then if [ -n "$g" ]; then
local r local r
local b local b
if [ -d "$g/../.dotest" ] if [ -d "$g/rebase" ]
then then
if test -f "$g/../.dotest/rebasing" if test -f "$g/rebase/rebasing"
then then
r="|REBASE" r="|REBASE"
elif test -f "$g/../.dotest/applying" elif test -f "$g/rebase/applying"
then then
r="|AM" r="|AM"
else else
r="|AM/REBASE" r="|AM/REBASE"
fi fi
b="$(git symbolic-ref HEAD 2>/dev/null)" b="$(git symbolic-ref HEAD 2>/dev/null)"
elif [ -f "$g/.dotest-merge/interactive" ] elif [ -f "$g/rebase-merge/interactive" ]
then then
r="|REBASE-i" r="|REBASE-i"
b="$(cat "$g/.dotest-merge/head-name")" b="$(cat "$g/rebase-merge/head-name")"
elif [ -d "$g/.dotest-merge" ] elif [ -d "$g/rebase-merge" ]
then then
r="|REBASE-m" r="|REBASE-m"
b="$(cat "$g/.dotest-merge/head-name")" b="$(cat "$g/rebase-merge/head-name")"
elif [ -f "$g/MERGE_HEAD" ] elif [ -f "$g/MERGE_HEAD" ]
then then
r="|MERGING" r="|MERGING"
@ -487,8 +487,8 @@ __git_whitespacelist="nowarn warn error error-all strip"
_git_am () _git_am ()
{ {
local cur="${COMP_WORDS[COMP_CWORD]}" local cur="${COMP_WORDS[COMP_CWORD]}" dir="$(__gitdir)"
if [ -d .dotest ]; then if [ -d "$dir"/rebase ]; then
__gitcomp "--skip --resolved" __gitcomp "--skip --resolved"
return return
fi fi
@ -915,7 +915,7 @@ _git_push ()
_git_rebase () _git_rebase ()
{ {
local cur="${COMP_WORDS[COMP_CWORD]}" dir="$(__gitdir)" local cur="${COMP_WORDS[COMP_CWORD]}" dir="$(__gitdir)"
if [ -d .dotest ] || [ -d "$dir"/.dotest-merge ]; then if [ -d "$dir"/rebase ] || [ -d "$dir"/rebase-merge ]; then
__gitcomp "--continue --skip --abort" __gitcomp "--continue --skip --abort"
return return
fi fi

Просмотреть файл

@ -1252,8 +1252,8 @@ Return the list of files that haven't been handled."
"\n") "\n")
(when subject (insert subject "\n\n")) (when subject (insert subject "\n\n"))
(cond (msg (insert msg "\n")) (cond (msg (insert msg "\n"))
((file-readable-p ".dotest/msg") ((file-readable-p ".git/rebase/msg")
(insert-file-contents ".dotest/msg")) (insert-file-contents ".git/rebase/msg"))
((file-readable-p ".git/MERGE_MSG") ((file-readable-p ".git/MERGE_MSG")
(insert-file-contents ".git/MERGE_MSG"))) (insert-file-contents ".git/MERGE_MSG")))
; delete empty lines at end ; delete empty lines at end
@ -1272,9 +1272,9 @@ Return the list of files that haven't been handled."
(coding-system (git-get-commits-coding-system)) (coding-system (git-get-commits-coding-system))
author-name author-email subject date) author-name author-email subject date)
(when (eq 0 (buffer-size buffer)) (when (eq 0 (buffer-size buffer))
(when (file-readable-p ".dotest/info") (when (file-readable-p ".git/rebase/info")
(with-temp-buffer (with-temp-buffer
(insert-file-contents ".dotest/info") (insert-file-contents ".git/rebase/info")
(goto-char (point-min)) (goto-char (point-min))
(when (re-search-forward "^Author: \\(.*\\)\nEmail: \\(.*\\)$" nil t) (when (re-search-forward "^Author: \\(.*\\)\nEmail: \\(.*\\)$" nil t)
(setq author-name (match-string 1)) (setq author-name (match-string 1))

Просмотреть файл

@ -119,7 +119,7 @@ It does not apply to blobs recorded in its index."
} }
prec=4 prec=4
dotest=".dotest" dotest="$GIT_DIR/rebase"
sign= utf8=t keep= skip= interactive= resolved= binary= rebasing= sign= utf8=t keep= skip= interactive= resolved= binary= rebasing=
resolvemsg= resume= resolvemsg= resume=
git_apply_opt= git_apply_opt=
@ -195,7 +195,7 @@ then
false false
;; ;;
esac || esac ||
die "previous dotest directory $dotest still exists but mbox given." die "previous rebase directory $dotest still exists but mbox given."
resume=yes resume=yes
else else
# Make sure we are not given --skip nor --resolved # Make sure we are not given --skip nor --resolved
@ -325,7 +325,7 @@ do
<"$dotest"/info >/dev/null && <"$dotest"/info >/dev/null &&
go_next && continue go_next && continue
test -s $dotest/patch || { test -s "$dotest/patch" || {
echo "Patch is empty. Was it split wrong?" echo "Patch is empty. Was it split wrong?"
stop_here $this stop_here $this
} }

Просмотреть файл

@ -53,7 +53,7 @@ if ! [ -d "$QUILT_PATCHES" ] ; then
fi fi
# Temporary directories # Temporary directories
tmp_dir=.dotest tmp_dir="$GIT_DIR"/rebase
tmp_msg="$tmp_dir/msg" tmp_msg="$tmp_dir/msg"
tmp_patch="$tmp_dir/patch" tmp_patch="$tmp_dir/patch"
tmp_info="$tmp_dir/info" tmp_info="$tmp_dir/info"

Просмотреть файл

@ -31,7 +31,7 @@ skip skip current patch and continue rebasing process
. git-sh-setup . git-sh-setup
require_work_tree require_work_tree
DOTEST="$GIT_DIR/.dotest-merge" DOTEST="$GIT_DIR/rebase-merge"
TODO="$DOTEST"/git-rebase-todo TODO="$DOTEST"/git-rebase-todo
DONE="$DOTEST"/done DONE="$DOTEST"/done
MSG="$DOTEST"/message MSG="$DOTEST"/message

Просмотреть файл

@ -14,7 +14,7 @@ It is possible that a merge failure will prevent this process from being
completely automatic. You will have to resolve any such merge failure completely automatic. You will have to resolve any such merge failure
and run git rebase --continue. Another option is to bypass the commit and run git rebase --continue. Another option is to bypass the commit
that caused the merge failure with git rebase --skip. To restore the that caused the merge failure with git rebase --skip. To restore the
original <branch> and remove the .dotest working files, use the command original <branch> and remove the .git/rebase working files, use the command
git rebase --abort instead. git rebase --abort instead.
Note that if <branch> is not specified on the command line, the Note that if <branch> is not specified on the command line, the
@ -42,7 +42,7 @@ To restore the original branch and stop rebasing run \"git rebase --abort\".
unset newbase unset newbase
strategy=recursive strategy=recursive
do_merge= do_merge=
dotest=$GIT_DIR/.dotest-merge dotest="$GIT_DIR"/rebase-merge
prec=4 prec=4
verbose= verbose=
git_am_opt= git_am_opt=
@ -150,7 +150,7 @@ while test $# != 0
do do
case "$1" in case "$1" in
--continue) --continue)
test -d "$dotest" -o -d .dotest || test -d "$dotest" -o -d "$GIT_DIR"/rebase ||
die "No rebase in progress?" die "No rebase in progress?"
git diff-files --quiet --ignore-submodules || { git diff-files --quiet --ignore-submodules || {
@ -173,15 +173,15 @@ do
finish_rb_merge finish_rb_merge
exit exit
fi fi
head_name=$(cat .dotest/head-name) && head_name=$(cat "$GIT_DIR"/rebase/head-name) &&
onto=$(cat .dotest/onto) && onto=$(cat "$GIT_DIR"/rebase/onto) &&
orig_head=$(cat .dotest/orig-head) && orig_head=$(cat "$GIT_DIR"/rebase/orig-head) &&
git am --resolved --3way --resolvemsg="$RESOLVEMSG" && git am --resolved --3way --resolvemsg="$RESOLVEMSG" &&
move_to_original_branch move_to_original_branch
exit exit
;; ;;
--skip) --skip)
test -d "$dotest" -o -d .dotest || test -d "$dotest" -o -d "$GIT_DIR"/rebase ||
die "No rebase in progress?" die "No rebase in progress?"
git reset --hard HEAD || exit $? git reset --hard HEAD || exit $?
@ -201,15 +201,15 @@ do
finish_rb_merge finish_rb_merge
exit exit
fi fi
head_name=$(cat .dotest/head-name) && head_name=$(cat "$GIT_DIR"/rebase/head-name) &&
onto=$(cat .dotest/onto) && onto=$(cat "$GIT_DIR"/rebase/onto) &&
orig_head=$(cat .dotest/orig-head) && orig_head=$(cat "$GIT_DIR"/rebase/orig-head) &&
git am -3 --skip --resolvemsg="$RESOLVEMSG" && git am -3 --skip --resolvemsg="$RESOLVEMSG" &&
move_to_original_branch move_to_original_branch
exit exit
;; ;;
--abort) --abort)
test -d "$dotest" -o -d .dotest || test -d "$dotest" -o -d "$GIT_DIR"/rebase ||
die "No rebase in progress?" die "No rebase in progress?"
git rerere clear git rerere clear
@ -217,7 +217,7 @@ do
then then
move_to_original_branch move_to_original_branch
else else
dotest=.dotest dotest="$GIT_DIR"/rebase
move_to_original_branch move_to_original_branch
fi fi
git reset --hard $(cat "$dotest/orig-head") git reset --hard $(cat "$dotest/orig-head")
@ -265,24 +265,24 @@ do
shift shift
done done
# Make sure we do not have .dotest # Make sure we do not have $GIT_DIR/rebase
if test -z "$do_merge" if test -z "$do_merge"
then then
if mkdir .dotest if mkdir "$GIT_DIR"/rebase
then then
rmdir .dotest rmdir "$GIT_DIR"/rebase
else else
echo >&2 ' echo >&2 '
It seems that I cannot create a .dotest directory, and I wonder if you It seems that I cannot create a '"$GIT_DIR"'/rebase directory, and I wonder if you
are in the middle of patch application or another rebase. If that is not are in the middle of patch application or another rebase. If that is not
the case, please rm -fr .dotest and run me again. I am stopping in case the case, please rm -fr '"$GIT_DIR"'/rebase and run me again. I am stopping in case
you still have something valuable there.' you still have something valuable there.'
exit 1 exit 1
fi fi
else else
if test -d "$dotest" if test -d "$dotest"
then then
die "previous dotest directory $dotest still exists." \ die "previous rebase directory $dotest still exists." \
'try git-rebase < --continue | --abort >' 'try git-rebase < --continue | --abort >'
fi fi
fi fi
@ -396,10 +396,10 @@ then
git am $git_am_opt --rebasing --resolvemsg="$RESOLVEMSG" && git am $git_am_opt --rebasing --resolvemsg="$RESOLVEMSG" &&
move_to_original_branch move_to_original_branch
ret=$? ret=$?
test 0 != $ret -a -d .dotest && test 0 != $ret -a -d "$GIT_DIR"/rebase &&
echo $head_name > .dotest/head-name && echo $head_name > "$GIT_DIR"/rebase/head-name &&
echo $onto > .dotest/onto && echo $onto > "$GIT_DIR"/rebase/onto &&
echo $orig_head > .dotest/orig-head echo $orig_head > "$GIT_DIR"/rebase/orig-head
exit $ret exit $ret
fi fi

Просмотреть файл

@ -50,12 +50,12 @@ test_debug \
test_expect_success \ test_expect_success \
'rebase topic branch against new master and check git-am did not get halted' \ 'rebase topic branch against new master and check git-am did not get halted' \
'git-rebase master && test ! -d .dotest' 'git-rebase master && test ! -d .git/rebase'
test_expect_success \ test_expect_success \
'rebase --merge topic branch that was partially merged upstream' \ 'rebase --merge topic branch that was partially merged upstream' \
'git-checkout -f my-topic-branch-merge && 'git-checkout -f my-topic-branch-merge &&
git-rebase --merge master-merge && git-rebase --merge master-merge &&
test ! -d .git/.dotest-merge' test ! -d .git/rebase-merge'
test_done test_done

Просмотреть файл

@ -159,19 +159,19 @@ test_expect_success 'stop on conflicting pick' '
git tag new-branch1 && git tag new-branch1 &&
test_must_fail git rebase -i master && test_must_fail git rebase -i master &&
test "$(git rev-parse HEAD~3)" = "$(git rev-parse master)" && test "$(git rev-parse HEAD~3)" = "$(git rev-parse master)" &&
test_cmp expect .git/.dotest-merge/patch && test_cmp expect .git/rebase-merge/patch &&
test_cmp expect2 file1 && test_cmp expect2 file1 &&
test "$(git-diff --name-status | test "$(git-diff --name-status |
sed -n -e "/^U/s/^U[^a-z]*//p")" = file1 && sed -n -e "/^U/s/^U[^a-z]*//p")" = file1 &&
test 4 = $(grep -v "^#" < .git/.dotest-merge/done | wc -l) && test 4 = $(grep -v "^#" < .git/rebase-merge/done | wc -l) &&
test 0 = $(grep -c "^[^#]" < .git/.dotest-merge/git-rebase-todo) test 0 = $(grep -c "^[^#]" < .git/rebase-merge/git-rebase-todo)
' '
test_expect_success 'abort' ' test_expect_success 'abort' '
git rebase --abort && git rebase --abort &&
test $(git rev-parse new-branch1) = $(git rev-parse HEAD) && test $(git rev-parse new-branch1) = $(git rev-parse HEAD) &&
test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch1" && test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch1" &&
! test -d .git/.dotest-merge ! test -d .git/rebase-merge
' '
test_expect_success 'retain authorship' ' test_expect_success 'retain authorship' '

Просмотреть файл

@ -74,7 +74,7 @@ testrebase() {
' '
} }
testrebase "" .dotest testrebase "" .git/rebase
testrebase " --merge" .git/.dotest-merge testrebase " --merge" .git/rebase-merge
test_done test_done

Просмотреть файл

@ -102,7 +102,7 @@ test_expect_success 'am applies patch correctly' '
git checkout first && git checkout first &&
test_tick && test_tick &&
git am <patch1 && git am <patch1 &&
! test -d .dotest && ! test -d .git/rebase &&
test -z "$(git diff second)" && test -z "$(git diff second)" &&
test "$(git rev-parse second)" = "$(git rev-parse HEAD)" && test "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&
test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)" test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"
@ -123,7 +123,7 @@ test_expect_success 'am changes committer and keeps author' '
test_tick && test_tick &&
git checkout first && git checkout first &&
git am patch2 && git am patch2 &&
! test -d .dotest && ! test -d .git/rebase &&
test "$(git rev-parse master^^)" = "$(git rev-parse HEAD^^)" && test "$(git rev-parse master^^)" = "$(git rev-parse HEAD^^)" &&
test -z "$(git diff master..HEAD)" && test -z "$(git diff master..HEAD)" &&
test -z "$(git diff master^..HEAD^)" && test -z "$(git diff master^..HEAD^)" &&
@ -163,7 +163,7 @@ test_expect_success 'am without --keep removes Re: and [PATCH] stuff' '
test_expect_success 'am --keep really keeps the subject' ' test_expect_success 'am --keep really keeps the subject' '
git checkout HEAD^ && git checkout HEAD^ &&
git am --keep patch4 && git am --keep patch4 &&
! test -d .dotest && ! test -d .git/rebase &&
git-cat-file commit HEAD | git-cat-file commit HEAD |
grep -q -F "Re: Re: Re: [PATCH 1/5 v2] third" grep -q -F "Re: Re: Re: [PATCH 1/5 v2] third"
' '
@ -176,19 +176,19 @@ test_expect_success 'am -3 falls back to 3-way merge' '
test_tick && test_tick &&
git commit -m "copied stuff" && git commit -m "copied stuff" &&
git am -3 lorem-move.patch && git am -3 lorem-move.patch &&
! test -d .dotest && ! test -d .git/rebase &&
test -z "$(git diff lorem)" test -z "$(git diff lorem)"
' '
test_expect_success 'am pauses on conflict' ' test_expect_success 'am pauses on conflict' '
git checkout lorem2^^ && git checkout lorem2^^ &&
! git am lorem-move.patch && ! git am lorem-move.patch &&
test -d .dotest test -d .git/rebase
' '
test_expect_success 'am --skip works' ' test_expect_success 'am --skip works' '
git am --skip && git am --skip &&
! test -d .dotest && ! test -d .git/rebase &&
test -z "$(git diff lorem2^^ -- file)" && test -z "$(git diff lorem2^^ -- file)" &&
test goodbye = "$(cat another)" test goodbye = "$(cat another)"
' '
@ -196,31 +196,31 @@ test_expect_success 'am --skip works' '
test_expect_success 'am --resolved works' ' test_expect_success 'am --resolved works' '
git checkout lorem2^^ && git checkout lorem2^^ &&
! git am lorem-move.patch && ! git am lorem-move.patch &&
test -d .dotest && test -d .git/rebase &&
echo resolved >>file && echo resolved >>file &&
git add file && git add file &&
git am --resolved && git am --resolved &&
! test -d .dotest && ! test -d .git/rebase &&
test goodbye = "$(cat another)" test goodbye = "$(cat another)"
' '
test_expect_success 'am takes patches from a Pine mailbox' ' test_expect_success 'am takes patches from a Pine mailbox' '
git checkout first && git checkout first &&
cat pine patch1 | git am && cat pine patch1 | git am &&
! test -d .dotest && ! test -d .git/rebase &&
test -z "$(git diff master^..HEAD)" test -z "$(git diff master^..HEAD)"
' '
test_expect_success 'am fails on mail without patch' ' test_expect_success 'am fails on mail without patch' '
! git am <failmail && ! git am <failmail &&
rm -r .dotest/ rm -r .git/rebase/
' '
test_expect_success 'am fails on empty patch' ' test_expect_success 'am fails on empty patch' '
echo "---" >>failmail && echo "---" >>failmail &&
! git am <failmail && ! git am <failmail &&
git am --skip && git am --skip &&
! test -d .dotest ! test -d .git/rebase
' '
test_expect_success 'am works from stdin in subdirectory' ' test_expect_success 'am works from stdin in subdirectory' '

Просмотреть файл

@ -87,7 +87,7 @@ test_expect_success 'multiple dcommit from git-svn will not clobber svn' "
" "
test_expect_success 'check that rebase really failed' 'test -d .dotest' test_expect_success 'check that rebase really failed' 'test -d .git/rebase'
test_expect_success 'resolve, continue the rebase and dcommit' " test_expect_success 'resolve, continue the rebase and dcommit' "
echo clobber and I really mean it > file && echo clobber and I really mean it > file &&