git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* git p4: in-place submit
@ 2012-04-30 22:58 Pete Wyckoff
  2012-05-01  5:28 ` Luke Diamand
  2012-05-01 19:27 ` Gary Gibbons
  0 siblings, 2 replies; 6+ messages in thread
From: Pete Wyckoff @ 2012-04-30 22:58 UTC (permalink / raw)
  To: git; +Cc: Luke Diamand, Vitor Antunes, Michael Horowitz, Gary Gibbons

Tell me if you think this is a good idea.

Now, submit requires a separate workspace.  You have one for git,
and a separate one used just to push files back into p4.  I'd
like to see if we can do the submit part from the git workspace
directly.

My motivation is:

    - managing both a git and a p4 workspace is extra hassle

    - $work repo is big, and having a separate copy just for
      submits is a waste of space

Setup would go something like:

        # normal clone
        git p4 clone --destination=/home/pw/p4/proj //depot/proj@all

        # build client at same location
        p4 client -i <<-EOF
        Client: pw:proj
        Description: pw proj client
        Root: /home/pw/p4/proj
        View: //depot/proj/... //pw:proj/...
        EOF

        # set config to tell git p4 what to do
        cd /home/pw/p4/proj
        git config git-p4.submit-in-place true   ;# new!
        git config git-p4.client pw:proj
        git config git-p4.useClientSpec true

but no "p4 sync".

Then use git to edit/commit, and eventually "git p4 submit" as
usual.  The new submit-in-place code would:

    - make sure everything is committed

    - find git-p4 latest change number
        - ensuring linear series of commits back to p4/master

    - warn if latest change in //depot/proj/... is greater, but proceed

    - p4 sync -k @change  ;# -k means don't touch my workspace

    - for each commit in p4/master..branch:
        - git checkout commit
        - p4 edit, move, delete, -t text+x, etc to prepare tree
        - p4 submit
        - if any files require resolution, fail
        - chmod +w affected files to undo p4 read-only changes
        - git checkout --hard HEAD to destroy RCS keyword updates

    - if fail
        - git checkout --hard HEAD
        - rebase branch onto last successful commit
    - else
        - git p4 sync (as usual)
        - update branch to p4/master
        - git checkout branch

Is this a worthwhile change?  What details have I overlooked?

                -- Pete

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-05-02 22:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-30 22:58 git p4: in-place submit Pete Wyckoff
2012-05-01  5:28 ` Luke Diamand
2012-05-01 22:18   ` Pete Wyckoff
2012-05-02 17:06     ` Gary Gibbons
2012-05-02 22:19       ` Pete Wyckoff
2012-05-01 19:27 ` Gary Gibbons

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).