git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Vitor Antunes <vitor.hda@gmail.com>
To: "Mazo, Andrey" <amazo@checkvideo.com>
Cc: "luke@diamand.org" <luke@diamand.org>,
	"chenbin.sh@gmail.com" <chenbin.sh@gmail.com>,
	"git@vger.kernel.org" <git@vger.kernel.org>,
	"gitster@pobox.com" <gitster@pobox.com>,
	"merlorom@yahoo.fr" <merlorom@yahoo.fr>
Subject: Re: git-p4: default behavior for handling moves?
Date: Wed, 9 Jan 2019 22:41:54 +0000	[thread overview]
Message-ID: <CAOpHH-V8XJECpekPNvS3vymGBtzfrCTZAx=U5HALUTou+cAYfg@mail.gmail.com> (raw)
In-Reply-To: <20190108005634.1647-1-amazo@checkvideo.com>

Hi everyone,

On Tue, 8 Jan 2019 at 00:56, Mazo, Andrey <amazo@checkvideo.com> wrote:
>
> > git-p4 can map a "git move" operation to a Perforce "move" operation.
> > But by default this is disabled. You then end up with a P4 commit
> > where the file is deleted, and a fresh file is created with the same
> > contents at the new location at revision #1.
> >
> > Rename detection gets enabled either with the "-M" option, or with
> > some config variables, git-p4.detectCopies and git-p4.detectRenames.
> >
> > I've been tripped up by this, and I actually know about it, and I know
> > other people have been as well.
> >
> > Should we switch the default over so that it's enabled by default? I
> > can't think of any reason why you wouldn't want it enabled.

The copy/rename detection in git is not so obvious, nor easy to understand.
Also, when you have many similar files it is possible that the source that git
detects is not the real source of the file.
Another thing is that copies are only detected if the source file was modified,
which means that detectCopies without detectCopiesHarder does not make
much sense..

Those were the reasons that I recall at the moment for not having enabled
these settings by default. But that said, I do not oppose in having them
enabled by default.

> I have it enabled in my ~/.gitconfig,
> so enabling it by default makes total sense to me.
>
> Regarding potential problems,
> I occasionally get a wrong "source" file detection.
> (e.g. there was `cp a b ; git add b`, but some other file "c" is selected as the source instead)
> Or there is a "copy/move" detected, when there was actually none.
> But I've only seen this with quite small files (like a trivial one line shell script) or binaries,
> and mostly because I have git-p4.detectCopiesHarder set as well as a pretty aggressive git-p4.detectCopies threshold.
> (normally 30%, but down to 10% at times to make sure a copy/move is really detected)
>
> But anyway, enabling both git-p4.detect{Copies,Renames}
> with default 50% similarity index makes sense to me.
>
> It's probably worth adding command-line options to override the new to-be defaults though.
>
>
> A more conservative approach like only enabling git-p4.detectRenames = 70% is an option too.

I'm using detectCopies=89% because copied/moved files, in general,
will have a very high similarity
level and I don't want to have new files with similar contents
(imagine test cases, for example) to be
automatically detected as copies.

> > I think the rename code was first introduced around 2011 by Vitor.

Time flies!
I was using a much more complex P4 setup at the time that relied a lot
on renames and copies, as
well as branches. I have a much more linear setup now.

Best regards,
Vitor

      reply	other threads:[~2019-01-09 22:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-07 12:50 git-p4: default behavior for handling moves? Luke Diamand
2019-01-08  0:56 ` Mazo, Andrey
2019-01-09 22:41   ` Vitor Antunes [this message]

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to='CAOpHH-V8XJECpekPNvS3vymGBtzfrCTZAx=U5HALUTou+cAYfg@mail.gmail.com' \
    --to=vitor.hda@gmail.com \
    --cc=amazo@checkvideo.com \
    --cc=chenbin.sh@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=luke@diamand.org \
    --cc=merlorom@yahoo.fr \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).