Skip to content

Commit

Permalink
git p4: fix submit when no master branch
Browse files Browse the repository at this point in the history
It finds its upstream and applies the commit properly, but
the sync step will fail unless it is told which branch to
work on.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Pete Wyckoff authored and Junio C Hamano committed Jan 15, 2013
1 parent af8c009 commit 44e8d26
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
5 changes: 5 additions & 0 deletions Documentation/git-p4.txt
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,11 @@ These options can be used to modify 'git p4 submit' behavior.
to bypass the prompt, causing conflicting commits to be automatically
skipped, or to quit trying to apply commits, without prompting.

--branch <branch>::
After submitting, sync this named branch instead of the default
p4/master. See the "Sync options" section above for more
information.

Rebase options
~~~~~~~~~~~~~~
These options can be used to modify 'git p4 rebase' behavior.
Expand Down
6 changes: 5 additions & 1 deletion git-p4.py
Original file line number Diff line number Diff line change
Expand Up @@ -921,7 +921,8 @@ def __init__(self):
optparse.make_option("--dry-run", "-n", dest="dry_run", action="store_true"),
optparse.make_option("--prepare-p4-only", dest="prepare_p4_only", action="store_true"),
optparse.make_option("--conflict", dest="conflict_behavior",
choices=self.conflict_behavior_choices)
choices=self.conflict_behavior_choices),
optparse.make_option("--branch", dest="branch"),
]
self.description = "Submit changes from git to the perforce depot."
self.usage += " [name of git branch to submit into perforce depot]"
Expand All @@ -934,6 +935,7 @@ def __init__(self):
self.isWindows = (platform.system() == "Windows")
self.exportLabels = False
self.p4HasMoveCommand = p4_has_move_command()
self.branch = None

def check(self):
if len(p4CmdList("opened ...")) > 0:
Expand Down Expand Up @@ -1670,6 +1672,8 @@ def run(self, args):
print "All commits applied!"

sync = P4Sync()
if self.branch:
sync.branch = self.branch
sync.run([])

rebase = P4Rebase()
Expand Down
25 changes: 25 additions & 0 deletions t/t9806-git-p4-options.sh
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,31 @@ test_expect_success 'clone --use-client-spec' '
)
'

test_expect_success 'submit works with no p4/master' '
test_when_finished cleanup_git &&
git p4 clone --branch=b1 //depot@1,2 --destination="$git" &&
(
cd "$git" &&
test_commit submit-1-branch &&
git config git-p4.skipSubmitEdit true &&
git p4 submit --branch=b1
)
'

# The sync/rebase part post-submit will engage detect-branches
# machinery which will not do anything in this particular test.
test_expect_success 'submit works with two branches' '
test_when_finished cleanup_git &&
git p4 clone --branch=b1 //depot@1,2 --destination="$git" &&
(
cd "$git" &&
git p4 sync --branch=b2 //depot@1,3 &&
test_commit submit-2-branches &&
git config git-p4.skipSubmitEdit true &&
git p4 submit
)
'

test_expect_success 'kill p4d' '
kill_p4d
'
Expand Down

0 comments on commit 44e8d26

Please sign in to comment.