git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 00/12] git p4: submit conflict handling

From
Luke Diamand <luke@diamand.org>
Date
Aug 17, 2012, 06:04 UTC
Message-ID
<502DDEF5.4090405@diamand.org>
In-Reply-To
<1345160114-27654-1-git-send-email-pw@padd.com>
On 17/08/12 00:35, Pete Wyckoff wrote:
Show 24 quoted lines
> These patches rework how git p4 deals with conflicts that
> arise during a "git p4 submit".  These may arise due to
> changes that happened in p4 since the last "git p4 sync".
>
> Luke: I especially wanted to get this out as you suggested
> that you had a different way of dealing with skipped commits.
>
> The part that needs the most attention is the interaction
> loop that happens when a commit failed.  Currently, three
> options are offered:
>
>      [s]kip this commit, but continue to apply others
>      [a]pply the commit forcefully, generating .rej files
>      [w]rite the commit to a patch.txt file
>      and the implicit<ctrl-c>  to stop
>
> After this series, it offers two:
>
>      [c]ontinue to apply others
>      [q]uit to stop
>
> This feels more natural to me, and I like the term "continue" rather
> than "skip" as it matches what rebase uses.  I'd like to know what
> others think of the new flow.

The skip is still needed. In my workflow, git-p4 gets run periodically and does the usual sync+rebase on behalf of all the people who have pushed to the git repo.

If someone pushes a change which conflicts with something from Perforce land, then what I want to happen is for the script to discard the offending commit (git rebase --skip) and then carry on with the others.

In 99% of cases this does exactly what I need, as conflicting commits are usually caused by people committing the same fix to both p4 and git at around the same time (someone breaks top-of-tree with an obvious error, two separate people check in slightly different fixes). Discarding the git commit then means that everything carries on working.

I've got a small patch which makes skipping work non-interactively; the thing it's missing is reporting the commits which are skipped.

Show 43 quoted lines
>
> Other observable changes are new command-line options:
>
> Alias -v for --verbose, similar to other git commands.
>
> The --dry-run option addresses Luke's concern in
>
>      http://thread.gmane.org/gmane.comp.version-control.git/201004/focus=201022
>
> when I removed an unused "self.interactive" variable
> that did a similar thing if you edited the code.  It prints
> commits that would be applied to p4.
>
> Option --prepare-p4-only is similar to --dry-run, in that
> it does not submit anything to p4, but it does prepare the
> p4 workspace, then prints long instructions about how to submit
> everything properly.  It also serves, perhaps, as a replacement for
> the [a]pply option in the submit-conflict loop.
>
> Pete Wyckoff (12):
>    git p4 test: remove bash-ism of combined export/assignment
>    git p4 test: use p4d -L option to suppress log messages
>    git p4: gracefully fail if some commits could not be applied
>    git p4: remove submit failure options [a]pply and [w]rite
>    git p4: move conflict prompt into run, use [c]ontinue and [q]uit
>    git p4: standardize submit cancel due to unchanged template
>    git p4: test clean-up after failed submit, fix added files
>    git p4: rearrange submit template construction
>    git p4: revert deleted files after submit cancel
>    git p4: accept -v for --verbose
>    git p4: add submit --dry-run option
>    git p4: add submit --prepare-p4-only option
>
>   Documentation/git-p4.txt           |  13 +-
>   git-p4.py                          | 213 +++++++++++++++------
>   t/lib-git-p4.sh                    |  10 +-
>   t/t9805-git-p4-skip-submit-edit.sh |   2 +-
>   t/t9807-git-p4-submit.sh           |  65 +++++++
>   t/t9810-git-p4-rcs.sh              |  50 +----
>   t/t9815-git-p4-submit-fail.sh      | 367 +++++++++++++++++++++++++++++++++++++
>   7 files changed, 612 insertions(+), 108 deletions(-)
>   create mode 100755 t/t9815-git-p4-submit-fail.sh
>
Previous: Pete WyckoffNext: Pete Wyckoff
Message 20 of 21 in “git p4: submit conflict handling”
  1. 00/12 git p4: submit conflict handlingPete Wyckoff, Aug 16, 2012
  2. 01/12 git p4 test: remove bash-ism of combined export/assignmentPete Wyckoff, Aug 16, 2012
  3. Junio C HamanoAug 17, 2012
  4. 02/12 git p4 test: use p4d -L option to suppress log messagesPete Wyckoff, Aug 16, 2012
  5. Luke DiamandAug 17, 2012
  6. 03/12 git p4: gracefully fail if some commits could not be appliedPete Wyckoff, Aug 16, 2012
  7. Johannes SixtAug 17, 2012
  8. Pete WyckoffAug 17, 2012
  9. Luke DiamandAug 17, 2012
  10. Pete WyckoffAug 17, 2012
  11. 04/12 git p4: remove submit failure options [a]pply and [w]ritePete Wyckoff, Aug 16, 2012
  12. 05/12 git p4: move conflict prompt into run, use [c]ontinue and [q]uitPete Wyckoff, Aug 16, 2012
  13. 06/12 git p4: standardize submit cancel due to unchanged templatePete Wyckoff, Aug 16, 2012
  14. 07/12 git p4: test clean-up after failed submit, fix added filesPete Wyckoff, Aug 16, 2012
  15. 08/12 git p4: rearrange submit template constructionPete Wyckoff, Aug 16, 2012
  16. 09/12 git p4: revert deleted files after submit cancelPete Wyckoff, Aug 16, 2012
  17. 10/12 git p4: accept -v for --verbosePete Wyckoff, Aug 16, 2012
  18. 11/12 git p4: add submit --dry-run optionPete Wyckoff, Aug 16, 2012
  19. 12/12 git p4: add submit --prepare-p4-only optionPete Wyckoff, Aug 16, 2012
  20. Luke DiamandAug 17, 2012
  21. Pete WyckoffAug 17, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.