summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-03-23 14:54:24 -0700
committerJunio C Hamano <gitster@pobox.com>2011-03-23 14:54:24 -0700
commit98b256bd0857ab2192fdad27c26edbb0df3d96d1 (patch)
treeef1b9615f122d88d41a56c2424548dd66ca414e1
parent5e839c8f6d5edfaf0d2250f3c9628a238e24c6be (diff)
parent27c6000b28c89cad7af23df90d52bf33e205f61f (diff)
downloadgit-98b256bd0857ab2192fdad27c26edbb0df3d96d1.tar.gz
Merge branch 'pw/p4'
* pw/p4: git-p4: test sync new branch git-p4: fix sync new branch regression
-rwxr-xr-xcontrib/fast-import/git-p44
-rwxr-xr-xt/t9800-git-p4.sh23
2 files changed, 26 insertions, 1 deletions
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 47ba7adafb..3881515034 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -1780,7 +1780,9 @@ class P4Sync(Command):
changes.sort()
else:
- if not isinstance(self, P4Clone) and not self.p4BranchesInGit:
+ # catch "git-p4 sync" with no new branches, in a repo that
+ # does not have any existing git-p4 branches
+ if len(args) == 0 and not self.p4BranchesInGit:
die("No remote p4 branches. Perhaps you never did \"git p4 clone\" in here.");
if self.verbose:
print "Getting p4 changes for %s...%s" % (', '.join(self.depotPaths),
diff --git a/t/t9800-git-p4.sh b/t/t9800-git-p4.sh
index abe7c64ba9..a523473954 100755
--- a/t/t9800-git-p4.sh
+++ b/t/t9800-git-p4.sh
@@ -61,6 +61,29 @@ test_expect_success 'git-p4 clone @all' '
rm -rf "$git" && mkdir "$git"
'
+test_expect_success 'git-p4 sync uninitialized repo' '
+ test_create_repo "$git" &&
+ cd "$git" &&
+ test_must_fail "$GITP4" sync &&
+ rm -rf "$git" && mkdir "$git"
+'
+
+#
+# Create a git repo by hand. Add a commit so that HEAD is valid.
+# Test imports a new p4 repository into a new git branch.
+#
+test_expect_success 'git-p4 sync new branch' '
+ test_create_repo "$git" &&
+ cd "$git" &&
+ test_commit head &&
+ "$GITP4" sync --branch=refs/remotes/p4/depot //depot@all &&
+ git log --oneline p4/depot >lines &&
+ cat lines &&
+ test_line_count = 2 lines &&
+ cd .. &&
+ rm -rf "$git" && mkdir "$git"
+'
+
test_expect_success 'exit when p4 fails to produce marshaled output' '
badp4dir="$TRASH_DIRECTORY/badp4dir" &&
mkdir -p "$badp4dir" &&