chiark
/
gitweb
/
~ianmdlvl
/
dgit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
git-debrebase: test suite: gdr-subcommands: split off XX
[dgit.git]
/
tests
/
tartree-edit
diff --git
a/tests/tartree-edit
b/tests/tartree-edit
index cdaade35b5e0a7daf2e332ea98c9d5d90c7f7084..40bd6e9620974f376a4cbcd57c9aaec782df7964 100755
(executable)
--- a/
tests/tartree-edit
+++ b/
tests/tartree-edit
@@
-5,7
+5,7
@@
fail () { echo >&2 "$0: $*"; exit 1; }
play=.git/tartree-edit-work
git_manip_play () {
play=.git/tartree-edit-work
git_manip_play () {
- local wd=$(pwd)
+ local wd
; wd
=$(pwd)
case "$wd" in
*.edit) fail "bad idea to run gitfetchinfo into a .edit tree!" ;;
esac
case "$wd" in
*.edit) fail "bad idea to run gitfetchinfo into a .edit tree!" ;;
esac
@@
-67,7
+67,9
@@
case "$#.$1" in
?.-*) fail "no options understood" ;;
*) fail "usage:
tartree-edit edit|done DIRECTORY|TARBALL
?.-*) fail "no options understood" ;;
*) fail "usage:
tartree-edit edit|done DIRECTORY|TARBALL
- tartree-edit gitfetchinfo DIRECTORY|TARBALL REMOTE" ;;
+ tartree-edit gitfetchinfo DIRECTORY|TARBALL REMOTE
+ tartree-edit gitfetchinfo-merge REMOTE-A REMOTE-B" ;;
+ # we don't document gitfetchinfo-diff because it's rather poor
esac
case "$arg" in
esac
case "$arg" in
@@
-125,10
+127,11
@@
tryat_gitfetchinfo () {
exec 3<&-
fi
exec 3<&-
fi
- local innerwd="$(echo $play/*)"
+ local innerwd
; innerwd
="$(echo $play/*)"
git for-each-ref --format='%(refname)' refs/remotes >$play/l
perl -w -ne '
git for-each-ref --format='%(refname)' refs/remotes >$play/l
perl -w -ne '
+ our %remerge;
use strict;
chomp;
next unless m#^refs/remotes/([^/]+)/#;
use strict;
chomp;
next unless m#^refs/remotes/([^/]+)/#;
@@
-141,25
+144,39
@@
tryat_gitfetchinfo () {
$remerge{"@ab"} = 1;
print "update refs/remotes/$_/$rhs $old\n" or die $! foreach @ab;
print "delete $old\n" or die $!;
$remerge{"@ab"} = 1;
print "update refs/remotes/$_/$rhs $old\n" or die $! foreach @ab;
print "delete $old\n" or die $!;
- ' <$play/l >$play/unmerge
+ END {
+ open REMERGE, ">&3" or die $!;
+ print REMERGE "$_\n" or die $! foreach sort keys %remerge;
+ close REMERGE or die $!;
+ }
+ ' <$play/l >$play/unmerge 3>$play/remerge
git update-ref --stdin <$play/unmerge
git remote remove "$remote" 2>/dev/null ||:
git remote add "$remote" $innerwd
git fetch --no-tags -p "$remote" \
git update-ref --stdin <$play/unmerge
git remote remove "$remote" 2>/dev/null ||:
git remote add "$remote" $innerwd
git fetch --no-tags -p "$remote" \
- +"HEAD:refs/remotes/$remote/HEAD"
+ +"HEAD:refs/remotes/$remote/
TT-
HEAD"
cd $innerwd
GIT_AUTHOR_DATE=$(git log -n1 --pretty=format:'%ai')
GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE
export GIT_COMMITTER_DATE GIT_AUTHOR_DATE
git checkout -b WORKTREE
cd $innerwd
GIT_AUTHOR_DATE=$(git log -n1 --pretty=format:'%ai')
GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE
export GIT_COMMITTER_DATE GIT_AUTHOR_DATE
git checkout -b WORKTREE
- gitfetchinfo_perhaps_commit
INDEX
+ gitfetchinfo_perhaps_commit
'UNCOMMITTED INDEX'
git add -Af .
git add -Af .
- gitfetchinfo_perhaps_commit
WORKTREE
+ gitfetchinfo_perhaps_commit
'UNCOMMITTED WORKING TREE'
cd ../../..
git fetch --no-tags "$remote" --refmap \
+"refs/*:refs/remotes/$remote/*" \
+"refs/*:refs/remotes/$remote/*"
cd ../../..
git fetch --no-tags "$remote" --refmap \
+"refs/*:refs/remotes/$remote/*" \
+"refs/*:refs/remotes/$remote/*"
+
+ exec 3<$play/remerge
+ # $play will be destroyed by what follows, but we have
+ # an fd open onto remerge, so this will work
+ while read <&3 a b; do
+ echo "Updating gitfetchinfo-merge $a $b"
+ "$0" gitfetchinfo-merge $a $b
+ done
+
exit 0
}
exit 0
}