git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Luke Diamand <luke@diamand.org>
To: Pete Wyckoff <pw@padd.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
	Johannes Sixt <j.sixt@viscovery.net>
Subject: Re: [PATCHv2 04/12] git p4: move conflict prompt into run, add [q]uit input
Date: Sat, 15 Sep 2012 22:56:05 +0100	[thread overview]
Message-ID: <5054F975.6090608@diamand.org> (raw)
In-Reply-To: <1347221773-12773-5-git-send-email-pw@padd.com>


I'll need to supply a followup patch to ensure that a config option can 
override the prompt.

Ack.

On 09/09/12 21:16, Pete Wyckoff wrote:
> When applying a commit to the p4 workspace fails, a prompt
> asks what to do next.  This belongs up in run() instead
> of in applyCommit(), where run() can notice, for instance,
> that the prompt is unnecessary because this is the last commit.
>
> Offer two options about how to continue at conflict: [s]kip or
> [q]uit.  Having an explicit "quit" option gives git p4 a chance
> to clean up, show the applied-commit summary, and do tag export.
>
> Signed-off-by: Pete Wyckoff<pw@padd.com>
> ---
>   git-p4.py                     | 41 +++++++++++++++++++++++++++++------------
>   t/t9815-git-p4-submit-fail.sh | 31 +++++++++++++++++++++++++++----
>   2 files changed, 56 insertions(+), 16 deletions(-)
>
> diff --git a/git-p4.py b/git-p4.py
> index e08fea1..479f1fc 100755
> --- a/git-p4.py
> +++ b/git-p4.py
> @@ -1198,17 +1198,11 @@ class P4Submit(Command, P4UserMap):
>                       patch_succeeded = True
>
>           if not patch_succeeded:
> -            print "What do you want to do?"
> -            response = "x"
> -            while response != "s":
> -                response = raw_input("[s]kip this patch ")
> -            if response == "s":
> -                print "Skipping! Good luck with the next patches..."
> -                for f in editedFiles:
> -                    p4_revert(f)
> -                for f in filesToAdd:
> -                    os.remove(f)
> -                return False
> +            for f in editedFiles:
> +                p4_revert(f)
> +            for f in filesToAdd:
> +                os.remove(f)
> +            return False
>
>           system(applyPatchCmd)
>
> @@ -1475,11 +1469,34 @@ class P4Submit(Command, P4UserMap):
>           if gitConfig("git-p4.detectCopiesHarder", "--bool") == "true":
>               self.diffOpts += " --find-copies-harder"
>
> +        #
> +        # Apply the commits, one at a time.  On failure, ask if should
> +        # continue to try the rest of the patches, or quit.
> +        #
>           applied = []
> -        for commit in commits:
> +        last = len(commits) - 1
> +        for i, commit in enumerate(commits):
>               ok = self.applyCommit(commit)
>               if ok:
>                   applied.append(commit)
> +            else:
> +                if i<  last:
> +                    quit = False
> +                    while True:
> +                        print "What do you want to do?"
> +                        response = raw_input("[s]kip this commit but apply"
> +                                             " the rest, or [q]uit? ")
> +                        if not response:
> +                            continue
> +                        if response[0] == "s":
> +                            print "Skipping this commit, but applying the rest"
> +                            break
> +                        if response[0] == "q":
> +                            print "Quitting"
> +                            quit = True
> +                            break
> +                    if quit:
> +                        break
>
>           chdir(self.oldWorkingDirectory)
>
> diff --git a/t/t9815-git-p4-submit-fail.sh b/t/t9815-git-p4-submit-fail.sh
> index 5c36714..397b3e8 100755
> --- a/t/t9815-git-p4-submit-fail.sh
> +++ b/t/t9815-git-p4-submit-fail.sh
> @@ -18,7 +18,7 @@ test_expect_success 'init depot' '
>   	)
>   '
>
> -test_expect_success 'conflict on one commit, skip' '
> +test_expect_success 'conflict on one commit' '
>   	test_when_finished cleanup_git&&
>   	git p4 clone --dest="$git" //depot&&
>   	(
> @@ -34,12 +34,12 @@ test_expect_success 'conflict on one commit, skip' '
>   		echo line3>>file1&&
>   		git add file1&&
>   		git commit -m "line3 in file1 will conflict"&&
> -		echo s | test_expect_code 1 git p4 submit>out&&
> +		test_expect_code 1 git p4 submit>out&&
>   		test_i18ngrep "No commits applied" out
>   	)
>   '
>
> -test_expect_success 'conflict on second of two commits, skip' '
> +test_expect_success 'conflict on second of two commits' '
>   	test_when_finished cleanup_git&&
>   	git p4 clone --dest="$git" //depot&&
>   	(
> @@ -57,7 +57,7 @@ test_expect_success 'conflict on second of two commits, skip' '
>   		echo line4>>file1&&
>   		git add file1&&
>   		git commit -m "line4 in file1 will conflict"&&
> -		echo s | test_expect_code 1 git p4 submit>out&&
> +		test_expect_code 1 git p4 submit>out&&
>   		test_i18ngrep "Applied only the commits" out
>   	)
>   '
> @@ -85,6 +85,29 @@ test_expect_success 'conflict on first of two commits, skip' '
>   	)
>   '
>
> +test_expect_success 'conflict on first of two commits, quit' '
> +	test_when_finished cleanup_git&&
> +	git p4 clone --dest="$git" //depot&&
> +	(
> +		cd "$cli"&&
> +		p4 open file1&&
> +		echo line7>>file1&&
> +		p4 submit -d "line7 in file1"
> +	)&&
> +	(
> +		cd "$git"&&
> +		git config git-p4.skipSubmitEdit true&&
> +		# this submit should cause a conflict
> +		echo line8>>file1&&
> +		git add file1&&
> +		git commit -m "line8 in file1 will conflict"&&
> +		# but this commit is okay
> +		test_commit "okay_commit_after_quit"&&
> +		echo q | test_expect_code 1 git p4 submit>out&&
> +		test_i18ngrep "No commits applied" out
> +	)
> +'
> +
>   test_expect_success 'kill p4d' '
>   	kill_p4d
>   '

  reply	other threads:[~2012-09-15 21:56 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-09 20:16 [PATCHv2 00/12] git p4: submit conflict handling Pete Wyckoff
2012-09-09 20:16 ` [PATCHv2 01/12] git p4 test: remove bash-ism of combined export/assignment Pete Wyckoff
2012-09-15 21:25   ` Luke Diamand
2012-09-16  6:05     ` Junio C Hamano
2012-09-16  9:38       ` Luke Diamand
2012-09-17  4:50         ` Junio C Hamano
2012-09-17  8:13           ` Luke Diamand
2012-09-09 20:16 ` [PATCHv2 02/12] git p4: gracefully fail if some commits could not be applied Pete Wyckoff
2012-09-15 21:48   ` Luke Diamand
2012-09-09 20:16 ` [PATCHv2 03/12] git p4: remove submit failure options [a]pply and [w]rite Pete Wyckoff
2012-09-15 21:52   ` Luke Diamand
2012-09-09 20:16 ` [PATCHv2 04/12] git p4: move conflict prompt into run, add [q]uit input Pete Wyckoff
2012-09-15 21:56   ` Luke Diamand [this message]
2012-09-09 20:16 ` [PATCHv2 05/12] git p4: standardize submit cancel due to unchanged template Pete Wyckoff
2012-09-15 21:58   ` Luke Diamand
2012-09-09 20:16 ` [PATCHv2 06/12] git p4: test clean-up after failed submit, fix added files Pete Wyckoff
2012-09-09 20:16 ` [PATCHv2 07/12] git p4: rearrange submit template construction Pete Wyckoff
2012-09-09 20:16 ` [PATCHv2 08/12] git p4: revert deleted files after submit cancel Pete Wyckoff
2012-09-09 20:16 ` [PATCHv2 09/12] git p4: accept -v for --verbose Pete Wyckoff
2012-09-09 20:16 ` [PATCHv2 10/12] git p4: add submit --dry-run option Pete Wyckoff
2012-09-09 20:16 ` [PATCHv2 11/12] git p4: add submit --prepare-p4-only option Pete Wyckoff
2012-09-09 20:16 ` [PATCHv2 12/12] git-p4: add submit --conflict option and config varaiable Pete Wyckoff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5054F975.6090608@diamand.org \
    --to=luke@diamand.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j.sixt@viscovery.net \
    --cc=pw@padd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).