Hi Junio, To submit changes from master branch to Perforce, new commits should be based on a remote branch p4/master:
(1)
E'---F' master
/
A---B---C---D p4/master
Commits from A to D map to Perforce changelists. These commits include
additional metadata in commit message which most important is changelist
number.
On submit git-p4 prepares changelists for commits E'-F' and submits
these to Perforce repository. After this operation it syncs back remote
branch p4/master. This is the common part for both bare and non-bare
repository.
(2)
E'---F' master
/
A---B---C---D---E---F p4/master
In non-bare repository git rebase is performed and it results in
following state:
(3)
A---B---C---D---E---F p4/master, master
In bare repository this operation cannot be performed, so it remains in
state (2).
With special care state (2) can be transformed to state (3) with manual
update of refs/heads/master with refs/remotes/p4/master.
I understand that implementing rebase for bare repository is unsafe and
it wouldn't be appreciated. Therefore we have to resort to such a
barbarity and git-p4 submit shouldn't attempt to perform a rebase
operation itself. Especially because it performs other operations before
and we end up in the intermediate state (2) anyway.
Is this explanation satisfactory? If yes, I'll include it in patch
description.
Kind regards,
--
Amadeusz Żołnowski
signature.asc
Description: PGP signature

