git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeremy Scott <jeremy@great-scotts.org>
To: Philip Oakley <philipoakley@iee.org>
Cc: Phil Hord <phil.hord@gmail.com>, git@vger.kernel.org
Subject: Re: files deleted with no record?
Date: Fri, 27 Jun 2014 06:57:48 +1000	[thread overview]
Message-ID: <CAFDwLfwdcka25o0S_-ekb+AAFRVDADeiZD1f5kXJczqei=e3eg@mail.gmail.com> (raw)
In-Reply-To: <7298A047128B405F94F5E73903089107@PhilipOakley>

Hi. Thanks for getting back to me.

here is a screenshot from source tree to visualise the scenario:

https://drive.google.com/file/d/0B-Wn7DfHsuhyTEVkRHAzeGVZelpMWjFxZW1kbVBKVlNab3pR/edit?usp=sharing

I will attempt a script to reproduce this later today.

Thanks

On Fri, Jun 27, 2014 at 5:53 AM, Philip Oakley <philipoakley@iee.org> wrote:
> From: "Phil Hord" <phil.hord@gmail.com>
>
>> On Mon, Jun 23, 2014 at 9:15 PM, Jeremy Scott <jeremy@great-scotts.org>
>> wrote:
>>>
>>> I just encountered a situation where a merge was made, with no
>>> apparent changes in files (ie no log), but the result was that some
>>> files were deleted.
>>>
>>> person A adds some files
>>> person B adds some files from the same point
>>
>>
>> You mean from the same point in history, right?  Not files with the
>> same filename or path?
>>
>>> person B commits and pushes.
>>> person A commits -- now merge is required
>>> a few more commits on top of person B's commit
>>
>>
>> I don't understand this step.  Who adds a few more commits on top of B and
>> why?
>>
>>> person A merges - this removes the files that B added. There is no log
>>> of the files being deleted
>
>
> A similar issue, by reference, just came up on the [git-users] list. The
> reference was:
> 1. http://randyfay.com/content/avoiding-git-disasters-gory-story
>
> In that case the problem was a mixture of tools and  misunderstandings.
>
> It may not be the same as your case, but could give insights into what's
> happening between different developers.
>
> Which Tools are You, person A and Person B using, with --version?
>
>>
>> This sounds like an "evil merge" (see man gitglossary, and google),
>> but it's not clear to me how you arrived here.
>>
>> When I tried to reproduce your issue with this script, it did not
>> remove any files unexpectedly:
>> ------------------->8-----------------------
>> #!/bin/sh
>>
>> set -e
>> mkdir foo && cd foo && git init
>> echo foo > foo && git add foo && git commit -mfoo
>>
>> git checkout -b PersonA master
>> echo bar > bar && git add bar
>> git commit -m"PersonA: bar"
>>
>> git checkout -b PersonB master
>> echo baz > baz && git add baz
>> git commit -m"PersonB: baz"
>>
>> echo foo-conflict >> foo && git add foo
>> git commit -m"PersonB: foo"
>>
>> git checkout PersonA
>> echo foo-different >> foo && git add foo
>> git commit -m"PersonA: foo (conflicts with PersonB)"
>>
>> git log --oneline --all --stat
>>
>> if ! git merge PersonB ; then
>>  git checkout PersonA foo
>>  git commit --no-edit
>> fi
>> git log --oneline --graph --stat
>> ------------------->8-----------------------
>>
>> A sneaky issue with merges is that they do not have a clear way to
>> show patch information -- the diff between the commit and its ancestor
>> -- because they have multiple ancestors.  You can show diffs for a
>> merge relative to each of its parents, but it is not usually done for
>> you automatically.  This is why making changes in a merge which are
>> not actually required for the merge is bad ("evil").
>>
>>> Clearly this is possible - was this a user error?
>>
>>
>> Probably, but we'd need to see how the user got there.
>> --
>
> Philip

  reply	other threads:[~2014-06-26 20:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-24  1:15 files deleted with no record? Jeremy Scott
2014-06-26 16:47 ` Phil Hord
2014-06-26 19:53   ` Philip Oakley
2014-06-26 20:57     ` Jeremy Scott [this message]
     [not found]     ` <CAFDwLfyB+TAFQbU==YVX3W1wbpuBdigyFo5AZsk7CGAqtH4LpA@mail.gmail.com>
2014-06-26 21:00       ` Jeremy Scott

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='CAFDwLfwdcka25o0S_-ekb+AAFRVDADeiZD1f5kXJczqei=e3eg@mail.gmail.com' \
    --to=jeremy@great-scotts.org \
    --cc=git@vger.kernel.org \
    --cc=phil.hord@gmail.com \
    --cc=philipoakley@iee.org \
    /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).