From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS31976 209.132.180.0/23 X-Spam-Status: No, score=-4.3 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by dcvr.yhbt.net (Postfix) with ESMTP id E4FEC207EC for ; Wed, 12 Oct 2016 18:05:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933595AbcJLSFA (ORCPT ); Wed, 12 Oct 2016 14:05:00 -0400 Received: from pb-smtp1.pobox.com ([64.147.108.70]:60493 "EHLO sasl.smtp.pobox.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933417AbcJLSEv (ORCPT ); Wed, 12 Oct 2016 14:04:51 -0400 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by pb-smtp1.pobox.com (Postfix) with ESMTP id 11DF544179; Wed, 12 Oct 2016 13:59:49 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=0ihTBW6utYlrdoMlxCjVplZkYrY=; b=E4aJHr C7+i0EqJtmA8FnS5d2Cp5lZvm1Z0ylhKM0mRclQVT8/AO8VQUBgBWBo9vCgrnbIc CoMuZxiCJ0cWBok+G9i59p2GS3fs+JtG5MvyxzJ15ozZzawU/mm35C/rDHZXyciP GFZyNSlm/PyAZcY2XRgzGrkjc0hfyfdXPaRqs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=sasl; b=keq3OWw/H3S55I3/DKII2ITNpaNBNtgo 1TsL5CKWEd0o0W/Cw3+Z6M83COdPyonl7fifnPyCq19FpawkW1ZvsS5Ybc+2Gxkd lfZwFAuo0PM3xPkQss23dDPvtfhAYpQmnWWeRfrtkAJmgKJLQyPmo/iQ17VE0YIc +wx8sPHxnyE= Received: from pb-smtp1.nyi.icgroup.com (unknown [127.0.0.1]) by pb-smtp1.pobox.com (Postfix) with ESMTP id 080F444178; Wed, 12 Oct 2016 13:59:49 -0400 (EDT) Received: from pobox.com (unknown [104.132.0.95]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by pb-smtp1.pobox.com (Postfix) with ESMTPSA id 6961044175; Wed, 12 Oct 2016 13:59:48 -0400 (EDT) From: Junio C Hamano To: David Aguilar Cc: git@vger.kernel.org, Josef Ridky Subject: Re: [PATCH v2 2/2] Feature Request: user defined suffix for temp files created by git-mergetool References: <1329039097.128066.1475476591437.JavaMail.zimbra@redhat.com> <1499287628.1324571.1475653631366.JavaMail.zimbra@redhat.com> <1214659824.1976049.1475738509473.JavaMail.zimbra@redhat.com> <1911899288.2172724.1475757782111.JavaMail.zimbra@redhat.com> <255814448.2197583.1475759366093.JavaMail.zimbra@redhat.com> <1550673688.5271111.1476260677732.JavaMail.zimbra@redhat.com> Date: Wed, 12 Oct 2016 10:59:46 -0700 In-Reply-To: <1550673688.5271111.1476260677732.JavaMail.zimbra@redhat.com> (Josef Ridky's message of "Wed, 12 Oct 2016 04:24:37 -0400 (EDT)") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Pobox-Relay-ID: AA6A252A-90A5-11E6-9588-F99D12518317-77302942!pb-smtp1.pobox.com Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Josef Ridky writes: > This is update of the second variant for request to add option to change > suffix of name of temporary files generated by git mergetool. This > change is requested for cases, when is git mergetool used for local > comparison between two version of same package during package rebase. > > Signed-off-by: Josef Ridky > --- David, what do you think? I don't think you were ever CC'ed on any of the messages in this thread, and I don't think you've commented on the topic. The thread begins here: https://public-inbox.org/git/1329039097.128066.1475476591437.JavaMail.zimbra@redhat.com/ In any case, I suggest update to the log message to something like this: Subject: mergetool: allow custom naming for temporary files A front-end program that is spawned by "git mergetool" is given three temporary files (e.g. it may get "x_LOCAL.txt", "x_REMOTE.txt", and "x_BASE.txt" while merging "x.txt"). Custom wrappers to "git mergetool" benefits if they are allowed to rename these hardcoded suffixes to match the workflow they implement. For example, they may be used to compare and merge two versions that is available locally, and OLD/NEW may be more appropriate than LOCAL/REMOTE in such a context. primarily because "the second variant" is meaningless thing to say in our long term history, when the first variant never was recorded there. Josef may want to elaborate more on the latter paragraph. > Documentation/git-mergetool.txt | 22 ++++++++++++++- > git-mergetool.sh | 60 +++++++++++++++++++++++++++++++++++++---- > 2 files changed, 76 insertions(+), 6 deletions(-) > > diff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt > index e846c2e..a0466ac 100644 > --- a/Documentation/git-mergetool.txt > +++ b/Documentation/git-mergetool.txt > @@ -8,7 +8,7 @@ git-mergetool - Run merge conflict resolution tools to resolve merge conflicts > SYNOPSIS > -------- > [verse] > -'git mergetool' [--tool=] [-y | --[no-]prompt] [...] > +'git mergetool' [--tool=] [-y | --[no-]prompt] [--local=] [--remote=] [--backup=] [--base=] [...] > > DESCRIPTION > ----------- > @@ -79,6 +79,26 @@ success of the resolution after the custom tool has exited. > Prompt before each invocation of the merge resolution program > to give the user a chance to skip the path. > > +--local=:: > + Use string from as part of suffix of name of temporary > + file (local) for merging. If not set, default value is used. > + Default suffix is LOCAL. > + > +--remote=:: > + Use string from as part of suffix of name of temporary > + file (remote) for merging. If not set, default value is used. > + Default suffix is REMOTE. > + > +--backup=:: > + Use string from as part of suffix of name of temporary > + file (backup) for merging. If not set, default value is used. > + Default suffix is BACKUP. > + > +--base=:: > + Use string from as part of suffix of name of temporary > + file (base) for merging. If not set, default value is used. > + Default suffix is BASE. > + > TEMPORARY FILES > --------------- > `git mergetool` creates `*.orig` backup files while resolving merges. > diff --git a/git-mergetool.sh b/git-mergetool.sh > index bf86270..ed9ba82 100755 > --- a/git-mergetool.sh > +++ b/git-mergetool.sh > @@ -8,7 +8,7 @@ > # at the discretion of Junio C Hamano. > # > > -USAGE='[--tool=tool] [--tool-help] [-y|--no-prompt|--prompt] [file to merge] ...' > +USAGE='[--tool=tool] [--tool-help] [-y|--no-prompt|--prompt] [--local=name] [--remote=name] [--backup=name] [--base=name] [file to merge] ...' > SUBDIRECTORY_OK=Yes > NONGIT_OK=Yes > OPTIONS_SPEC= > @@ -16,6 +16,13 @@ TOOL_MODE=merge > . git-sh-setup > . git-mergetool--lib > > +# Can be changed by user > +LOCAL_NAME='LOCAL' > +BASE_NAME='BASE' > +BACKUP_NAME='BACKUP' > +REMOTE_NAME='REMOTE' > + > + > # Returns true if the mode reflects a symlink > is_symlink () { > test "$1" = 120000 > @@ -271,10 +278,10 @@ merge_file () { > BASE=${BASE##*/} > fi > > - BACKUP="$MERGETOOL_TMPDIR/${BASE}_BACKUP_$$$ext" > - LOCAL="$MERGETOOL_TMPDIR/${BASE}_LOCAL_$$$ext" > - REMOTE="$MERGETOOL_TMPDIR/${BASE}_REMOTE_$$$ext" > - BASE="$MERGETOOL_TMPDIR/${BASE}_BASE_$$$ext" > + BACKUP="$MERGETOOL_TMPDIR/${BASE}_${BACKUP_NAME}_$$$ext" > + LOCAL="$MERGETOOL_TMPDIR/${BASE}_${LOCAL_NAME}_$$$ext" > + REMOTE="$MERGETOOL_TMPDIR/${BASE}_${REMOTE_NAME}_$$$ext" > + BASE="$MERGETOOL_TMPDIR/${BASE}_${BASE_NAME}_$$$ext" > > base_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==1) print $1;}') > local_mode=$(git ls-files -u -- "$MERGED" | awk '{if ($3==2) print $1;}') > @@ -396,6 +403,18 @@ do > --prompt) > prompt=true > ;; > + --local=*) > + LOCAL_NAME=${1#--local=} > + ;; > + --remote=*) > + REMOTE_NAME=${1#--remote=} > + ;; > + --base=*) > + BASE_NAME=${1#--base=} > + ;; > + --backup=*) > + BACKUP_NAME=${1#--backup=} > + ;; > --) > shift > break > @@ -410,6 +429,37 @@ do > shift > done > > +# sanity check after parsing command line > +case "" in > +"$LOCAL_NAME"|"$REMOTE_NAME"|"$BASE_NAME"|"$BACKUP_NAME") > + die "You cannot set any of --local/remote/base/backup to empty." > + ;; > +esac > + > +case "$LOCAL_NAME" in > +"$REMOTE_NAME"|"$BASE_NAME"|"$BACKUP_NAME") > + die "You cannot set any of --remote/base/backup to same as --local." > + ;; > +esac > + > +case "$REMOTE_NAME" in > +"$LOCAL_NAME"|"$BASE_NAME"|"$BACKUP_NAME") > + die "You cannot set any of --local/base/backup to same as --remote." > + ;; > +esac > + > +case "$BASE_NAME" in > +"$LOCAL_NAME"|"$REMOTE_NAME"|"$BACKUP_NAME") > + die "You cannot set any of --local/remote/backup to same as --base." > + ;; > +esac > + > +case "$BACKUP_NAME" in > +"$LOCAL_NAME"|"$REMOTE_NAME"|"$BASE_NAME") > + die "You cannot set any of --local/remote/base to same as --backup." > + ;; > +esac > + > prompt_after_failed_merge () { > while true > do