Phil Hord <ho...@cisco.com> writes:

> When handling a symlink conflict or a deleted-file conflict, mergetool
> stops to ask the user what to do. If the user chooses any option besides
> "(a)bort", then the temporary files which mergetool created in
> preparation for handling the conflict are removed.  But these temporary
> files are not removed when the user chooses to abort the operation.
>
>     $ git cherry-pick other/branch
>     error: could not apply 4e43581... Fix foo.c
>
>     $ git status --short
>     DU foo.c
>
>     $ git mergetool
>     Merging:
>     foo.c
>
>     Deleted merge conflict for 'foo.c':
>       {local}: deleted
>       {remote}: modified file
>     Use (m)odified or (d)eleted file, or (a)bort? a
>     Continue merging other unresolved paths (y/n) ? n
>
>     $ git status --short
>     DU foo.c
>     ?? foo.c.BACKUP.16929.c
>     ?? foo.c.BASE.16929.c
>     ?? foo.c.LOCAL.16929.c
>     ?? foo.c.REMOTE.16929.c
>
> These temporary files should not remain after the mergetool operation is
> completed.

Aren't there cases where people "abort" so that they can have a
chance inspect them outside mergetool program?  If there are no such
cases, then I would agree with your claim "should not remain", but
the proposed log message does not explay why it is sure that there
are no such use cases.

>
> Remove the temporary files by calling the cleanup_temp_files when the
> user chooses to abort the mergetool operation.
>
> It looks like 'cleanup_temp_files' without the --save-backups option is
> the correct thing to do, and this is how this commit is implemented. But
> some other paths do use --save-backups resulting in a foo.c.orig file
> being left behind.  That seems to be a different bug, though.
>
> Signed-off-by: Phil Hord <ho...@cisco.com>
> ---
>  git-mergetool.sh | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/git-mergetool.sh b/git-mergetool.sh
> index c50e18a..bb93b70 100755
> --- a/git-mergetool.sh
> +++ b/git-mergetool.sh
> @@ -90,6 +90,7 @@ resolve_symlink_merge () {
>                       return 0
>                       ;;
>               [aA]*)
> +                     cleanup_temp_files
>                       return 1
>                       ;;
>               esac
> @@ -118,6 +119,7 @@ resolve_deleted_merge () {
>                       return 0
>                       ;;
>               [aA]*)
> +                     cleanup_temp_files
>                       return 1
>                       ;;
>               esac
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to