* files deleted with no record? @ 2014-06-24 1:15 Jeremy Scott 2014-06-26 16:47 ` Phil Hord 0 siblings, 1 reply; 5+ messages in thread From: Jeremy Scott @ 2014-06-24 1:15 UTC (permalink / raw) To: git 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 person B commits and pushes. person A commits -- now merge is required a few more commits on top of person B's commit person A merges - this removes the files that B added. There is no log of the files being deleted Clearly this is possible - was this a user error? Thanks ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: files deleted with no record? 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 0 siblings, 1 reply; 5+ messages in thread From: Phil Hord @ 2014-06-26 16:47 UTC (permalink / raw) To: Jeremy Scott; +Cc: git@vger.kernel.org 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 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. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: files deleted with no record? 2014-06-26 16:47 ` Phil Hord @ 2014-06-26 19:53 ` Philip Oakley 2014-06-26 20:57 ` Jeremy Scott [not found] ` <CAFDwLfyB+TAFQbU==YVX3W1wbpuBdigyFo5AZsk7CGAqtH4LpA@mail.gmail.com> 0 siblings, 2 replies; 5+ messages in thread From: Philip Oakley @ 2014-06-26 19:53 UTC (permalink / raw) To: Phil Hord, Jeremy Scott; +Cc: git 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: files deleted with no record? 2014-06-26 19:53 ` Philip Oakley @ 2014-06-26 20:57 ` Jeremy Scott [not found] ` <CAFDwLfyB+TAFQbU==YVX3W1wbpuBdigyFo5AZsk7CGAqtH4LpA@mail.gmail.com> 1 sibling, 0 replies; 5+ messages in thread From: Jeremy Scott @ 2014-06-26 20:57 UTC (permalink / raw) To: Philip Oakley; +Cc: Phil Hord, git 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <CAFDwLfyB+TAFQbU==YVX3W1wbpuBdigyFo5AZsk7CGAqtH4LpA@mail.gmail.com>]
* Re: files deleted with no record? [not found] ` <CAFDwLfyB+TAFQbU==YVX3W1wbpuBdigyFo5AZsk7CGAqtH4LpA@mail.gmail.com> @ 2014-06-26 21:00 ` Jeremy Scott 0 siblings, 0 replies; 5+ messages in thread From: Jeremy Scott @ 2014-06-26 21:00 UTC (permalink / raw) To: Philip Oakley; +Cc: Phil Hord, git we're all using source tree. I'm really interested to try and reproduce this so I'll find some time today to do it. Thanks again On Fri, Jun 27, 2014 at 6:56 AM, Jeremy Scott <jeremy@great-scotts.org> wrote: > 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 > > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-06-26 21:01 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 [not found] ` <CAFDwLfyB+TAFQbU==YVX3W1wbpuBdigyFo5AZsk7CGAqtH4LpA@mail.gmail.com> 2014-06-26 21:00 ` Jeremy Scott
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).