Merge branch 'master' of git://repo.or.cz/alt-git

This commit is contained in:
Johannes Sixt
2009-07-29 21:02:51 +02:00
43 changed files with 709 additions and 113 deletions

View File

@@ -459,6 +459,28 @@ EOF
test_expect_success "rename succeeded" "test_cmp expect .git/config"
cat >> .git/config << EOF
[branch "vier"] z = 1
EOF
test_expect_success "rename a section with a var on the same line" \
'git config --rename-section branch.vier branch.zwei'
cat > expect << EOF
# Hallo
#Bello
[branch "zwei"]
x = 1
[branch "zwei"]
y = 1
[branch "drei"]
weird
[branch "zwei"]
z = 1
EOF
test_expect_success "rename succeeded" "test_cmp expect .git/config"
cat >> .git/config << EOF
[branch "zwei"] a = 1 [branch "vier"]
EOF

80
t/t3414-rebase-preserve-onto.sh Executable file
View File

@@ -0,0 +1,80 @@
#!/bin/sh
#
# Copyright (c) 2009 Greg Price
#
test_description='git rebase -p should respect --onto
In a rebase with --onto, we should rewrite all the commits that
aren'"'"'t on top of $ONTO, even if they are on top of $UPSTREAM.
'
. ./test-lib.sh
. ../lib-rebase.sh
# Set up branches like this:
# A1---B1---E1---F1---G1
# \ \ /
# \ \--C1---D1--/
# H1
test_expect_success 'setup' '
test_commit A1 &&
test_commit B1 &&
test_commit C1 &&
test_commit D1 &&
git reset --hard B1 &&
test_commit E1 &&
test_commit F1 &&
test_merge G1 D1 &&
git reset --hard A1 &&
test_commit H1
'
# Now rebase merge G1 from both branches' base B1, both should move:
# A1---B1---E1---F1---G1
# \ \ /
# \ \--C1---D1--/
# \
# H1---E2---F2---G2
# \ /
# \--C2---D2--/
test_expect_success 'rebase from B1 onto H1' '
git checkout G1 &&
git rebase -p --onto H1 B1 &&
test "$(git rev-parse HEAD^1^1^1)" = "$(git rev-parse H1)" &&
test "$(git rev-parse HEAD^2^1^1)" = "$(git rev-parse H1)"
'
# On the other hand if rebase from E1 which is within one branch,
# then the other branch stays:
# A1---B1---E1---F1---G1
# \ \ /
# \ \--C1---D1--/
# \ \
# H1-----F3-----G3
test_expect_success 'rebase from E1 onto H1' '
git checkout G1 &&
git rebase -p --onto H1 E1 &&
test "$(git rev-parse HEAD^1^1)" = "$(git rev-parse H1)" &&
test "$(git rev-parse HEAD^2)" = "$(git rev-parse D1)"
'
# And the same if we rebase from a commit in the second-parent branch.
# A1---B1---E1---F1----G1
# \ \ \ /
# \ \--C1---D1-\-/
# \ \
# H1------D3------G4
test_expect_success 'rebase from C1 onto H1' '
git checkout G1 &&
git rev-list --first-parent --pretty=oneline C1..G1 &&
git rebase -p --onto H1 C1 &&
test "$(git rev-parse HEAD^2^1)" = "$(git rev-parse H1)" &&
test "$(git rev-parse HEAD^1)" = "$(git rev-parse F1)"
'
test_done

View File

@@ -154,7 +154,9 @@ create_patch () {
index e69de29..8bd6648 100644
--- a/target
+++ b/target
@@ -0,0 +1 @@
@@ -0,0 +1,3 @@
+An empty line follows
+
+A line with trailing whitespace and no newline_
\ No newline at end of file
EOF
@@ -162,8 +164,10 @@ create_patch () {
test_expect_success 'trailing whitespace & no newline at the end of file' '
>target &&
create_patch | git apply --whitespace=fix - &&
grep "newline$" target
create_patch >patch-file &&
git apply --whitespace=fix patch-file &&
grep "newline$" target &&
grep "^$" target
'
test_done

View File

@@ -149,5 +149,17 @@ test_expect_success 'local packed unreachable obs that exist in alternate ODB ar
test_must_fail git show $csha1
'
test_expect_success 'objects made unreachable by grafts only are kept' '
test_tick &&
git commit --allow-empty -m "commit 4" &&
H0=$(git rev-parse HEAD) &&
H1=$(git rev-parse HEAD^) &&
H2=$(git rev-parse HEAD^^) &&
echo "$H0 $H2" > .git/info/grafts &&
git reflog expire --expire=now --expire-unreachable=now --all &&
git repack -a -d &&
git cat-file -t $H1
'
test_done

View File

@@ -4,7 +4,7 @@ test_description='git blame encoding conversion'
. ./test-lib.sh
. "$TEST_DIRECTORY"/t8005/utf8.txt
. "$TEST_DIRECTORY"/t8005/iso8859-5.txt
. "$TEST_DIRECTORY"/t8005/euc-japan.txt
. "$TEST_DIRECTORY"/t8005/sjis.txt
test_expect_success 'setup the repository' '
@@ -13,10 +13,10 @@ test_expect_success 'setup the repository' '
git add file &&
git commit --author "$UTF8_NAME <utf8@localhost>" -m "$UTF8_MSG" &&
echo "ISO-8859-5 LINE" >> file &&
echo "EUC-JAPAN LINE" >> file &&
git add file &&
git config i18n.commitencoding ISO8859-5 &&
git commit --author "$ISO8859_5_NAME <iso8859-5@localhost>" -m "$ISO8859_5_MSG" &&
git config i18n.commitencoding eucJP &&
git commit --author "$EUC_JAPAN_NAME <euc-japan@localhost>" -m "$EUC_JAPAN_MSG" &&
echo "SJIS LINE" >> file &&
git add file &&
@@ -41,17 +41,17 @@ test_expect_success \
'
cat >expected <<EOF
author $ISO8859_5_NAME
summary $ISO8859_5_MSG
author $ISO8859_5_NAME
summary $ISO8859_5_MSG
author $ISO8859_5_NAME
summary $ISO8859_5_MSG
author $EUC_JAPAN_NAME
summary $EUC_JAPAN_MSG
author $EUC_JAPAN_NAME
summary $EUC_JAPAN_MSG
author $EUC_JAPAN_NAME
summary $EUC_JAPAN_MSG
EOF
test_expect_success \
'blame respects i18n.logoutputencoding' '
git config i18n.logoutputencoding ISO8859-5 &&
git config i18n.logoutputencoding eucJP &&
git blame --incremental file | \
egrep "^(author|summary) " > actual &&
test_cmp actual expected
@@ -76,8 +76,8 @@ test_expect_success \
cat >expected <<EOF
author $SJIS_NAME
summary $SJIS_MSG
author $ISO8859_5_NAME
summary $ISO8859_5_MSG
author $EUC_JAPAN_NAME
summary $EUC_JAPAN_MSG
author $UTF8_NAME
summary $UTF8_MSG
EOF

2
t/t8005/euc-japan.txt Normal file
View File

@@ -0,0 +1,2 @@
EUC_JAPAN_NAME="<22><><EFBFBD><EFBFBD> <20><>Ϻ"
EUC_JAPAN_MSG="<22>֥졼<D6A5><ECA1BC><EFBFBD>Υƥ<CEA5><C6A5>ȤǤ<C8A4><C7A4><EFBFBD>"

View File

@@ -1,2 +1,2 @@
SJIS_NAME="<22>I<EFBFBD>r<EFBFBD>p<EFBFBD>~ <20>P<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD>y<EFBFBD><79> <20>R<EFBFBD>y<EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r"
SJIS_MSG="<22>S<EFBFBD>u<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>u <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><71><EFBFBD>u<EFBFBD>~<7E>y<EFBFBD>u"
SJIS_NAME="<22>R<EFBFBD>c <20><><EFBFBD>Y"
SJIS_MSG="<22>u<EFBFBD><75><EFBFBD>[<EFBFBD><EFBFBD><EFBFBD>̃e<EFBFBD>X<EFBFBD>g<EFBFBD>ł<EFBFBD><EFBFBD>B"

View File

@@ -1,2 +1,2 @@
UTF8_NAME="Иван Петрович Сидоров"
UTF8_MSG="Тестовое сообщение"
UTF8_NAME="山田 太郎"
UTF8_MSG="ブレームのテストです。"

View File

@@ -0,0 +1,32 @@
#!/bin/sh
#
# Copyright (c) 2009 Eric Wong
#
test_description='git svn shallow clone'
. ./lib-git-svn.sh
test_expect_success 'setup test repository' '
svn_cmd mkdir -m "create standard layout" \
"$svnrepo"/trunk "$svnrepo"/branches "$svnrepo"/tags &&
svn_cmd cp -m "branch off trunk" \
"$svnrepo"/trunk "$svnrepo"/branches/a &&
svn_cmd co "$svnrepo"/branches/a &&
(
cd a &&
> foo &&
svn_cmd add foo &&
svn_cmd commit -m "add foo"
)
'
start_httpd
test_expect_success 'clone trunk with "-r HEAD"' '
git svn clone -r HEAD "$svnrepo/trunk" g &&
( cd g && git rev-parse --symbolic --verify HEAD )
'
stop_httpd
test_done

53
t/t9143-git-svn-gc.sh Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/sh
#
# Copyright (c) 2009 Robert Allan Zeh
test_description='git svn gc basic tests'
. ./lib-git-svn.sh
test_expect_success 'setup directories and test repo' '
mkdir import &&
mkdir tmp &&
echo "Sample text for Subversion repository." > import/test.txt &&
svn_cmd import -m "import for git svn" import "$svnrepo" > /dev/null
'
test_expect_success 'checkout working copy from svn' \
'svn_cmd co "$svnrepo" test_wc'
test_expect_success 'set some properties to create an unhandled.log file' '
(
cd test_wc &&
svn_cmd propset foo bar test.txt &&
svn_cmd commit -m "property set"
)'
test_expect_success 'Setup repo' 'git svn init "$svnrepo"'
test_expect_success 'Fetch repo' 'git svn fetch'
test_expect_success 'make backup copy of unhandled.log' '
cp .git/svn/git-svn/unhandled.log tmp
'
test_expect_success 'create leftover index' '> .git/svn/git-svn/index'
test_expect_success 'git svn gc runs' 'git svn gc'
test_expect_success 'git svn index removed' '! test -f .git/svn/git-svn/index'
if perl -MCompress::Zlib -e 0 2>/dev/null
then
test_expect_success 'git svn gc produces a valid gzip file' '
gunzip .git/svn/git-svn/unhandled.log.gz
'
else
say "Perl Compress::Zlib unavailable, skipping gunzip test"
fi
test_expect_success 'git svn gc does not change unhandled.log files' '
test_cmp .git/svn/git-svn/unhandled.log tmp/unhandled.log
'
test_done

View File

@@ -262,6 +262,94 @@ test_expect_success 'cope with tagger-less tags' '
'
test_expect_success 'setup for limiting exports by PATH' '
mkdir limit-by-paths &&
cd limit-by-paths &&
git init &&
echo hi > there &&
git add there &&
git commit -m "First file" &&
echo foo > bar &&
git add bar &&
git commit -m "Second file" &&
git tag -a -m msg mytag &&
echo morefoo >> bar &&
git add bar &&
git commit -m "Change to second file" &&
cd ..
'
cat > limit-by-paths/expected << EOF
blob
mark :1
data 3
hi
reset refs/tags/mytag
commit refs/tags/mytag
mark :2
author A U Thor <author@example.com> 1112912713 -0700
committer C O Mitter <committer@example.com> 1112912713 -0700
data 11
First file
M 100644 :1 there
EOF
test_expect_success 'dropping tag of filtered out object' '
cd limit-by-paths &&
git fast-export --tag-of-filtered-object=drop mytag -- there > output &&
test_cmp output expected &&
cd ..
'
cat >> limit-by-paths/expected << EOF
tag mytag
from :2
tagger C O Mitter <committer@example.com> 1112912713 -0700
data 4
msg
EOF
test_expect_success 'rewriting tag of filtered out object' '
cd limit-by-paths &&
git fast-export --tag-of-filtered-object=rewrite mytag -- there > output &&
test_cmp output expected &&
cd ..
'
cat > limit-by-paths/expected << EOF
blob
mark :1
data 4
foo
blob
mark :2
data 3
hi
reset refs/heads/master
commit refs/heads/master
mark :3
author A U Thor <author@example.com> 1112912713 -0700
committer C O Mitter <committer@example.com> 1112912713 -0700
data 12
Second file
M 100644 :1 bar
M 100644 :2 there
EOF
test_expect_failure 'no exact-ref revisions included' '
cd limit-by-paths &&
git fast-export master~2..master~1 > output &&
test_cmp output expected &&
cd ..
'
test_expect_success 'set-up a few more tags for tag export tests' '
git checkout -f master &&
HEAD_TREE=`git show -s --pretty=raw HEAD | grep tree | sed "s/tree //"` &&
@@ -271,8 +359,14 @@ test_expect_success 'set-up a few more tags for tag export tests' '
git tag -a tag-obj_tag-obj -m "tagging a tag" tree_tag-obj
'
test_expect_success 'tree_tag' '
mkdir result &&
(cd result && git init) &&
git fast-export tree_tag > fe-stream &&
(cd result && git fast-import < ../fe-stream)
'
# NEEDSWORK: not just check return status, but validate the output
test_expect_success 'tree_tag' 'git fast-export tree_tag'
test_expect_success 'tree_tag-obj' 'git fast-export tree_tag-obj'
test_expect_success 'tag-obj_tag' 'git fast-export tag-obj_tag'
test_expect_success 'tag-obj_tag-obj' 'git fast-export tag-obj_tag-obj'