git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Jason Pyeron" <jpyeron@pdinc.us>
To: "'git'" <git@vger.kernel.org>
Cc: "'Phil Hord'" <phil.hord@gmail.com>
Subject: RE: Trouble merging renamed but identical files - CONFLICT (rename/rename)
Date: Sat, 28 Jun 2014 05:46:04 -0400	[thread overview]
Message-ID: <E569F92DE6554654A2133A162EDB688E@black> (raw)
In-Reply-To: <CEAC9BE9F83B4CD0AFD73BBAC8A54232@black>

> -----Original Message-----
> From: Jason Pyeron
> Sent: Friday, June 27, 2014 20:42
> To: 'git'
> Cc: 'Phil Hord'
> Subject: RE: Trouble merging renamed but identical files - 
> CONFLICT (rename/rename)
> 
> > -----Original Message-----
> > From: Jason Pyeron 
> > Sent: Friday, June 27, 2014 18:39
> > 
> > > -----Original Message-----
> > > From: Phil Hord [mailto:phil.hord@gmail.com] 
> > > Sent: Friday, June 27, 2014 17:46
> > > To: Jason Pyeron
> > > Cc: git
> > > Subject: Re: Trouble merging renamed but identical files - 
> > > CONFLICT (rename/rename)
> > > 
> > > On Fri, Jun 27, 2014 at 4:47 PM, Jason Pyeron 
> > > <jpyeron@pdinc.us> wrote:
> > > > There are two identical files from the same original 
> > > parent, but both were
> > > > renamed in their own branches. One branch moved the file to 
> > > a new folder, the
> > > > other renamed the file in the same folder.
> > > 
> > > You have not stated what you think the issue is.  You have 
> > only stated
> > > the setup.
> > 
> > Thanks, I could have said it better. 
> > 
> > I think that git should understand that I have moved a file 
> > in path only (the tree object containing the file's entry 
> > change, but not the entry it self) and that the branch from 
> > which I want to merge back (with common ancestry) has renamed 
> > the file in the same path ( the tree object is unchanged, but 
> > the entry is) such that the object is re-parented and renamed 
> > in that path.
> > 
> > How can this be done in git or if it cannot what are the 
> > chalenges to patching git for this issue.
> > 
> > git cat-file -p b60070f4d0879e277f44d174a163bbb292325fea # 
> > tree d8df83fc6714aab1fc1df061fcb03410e1dab1e5
> > git cat-file -p d8df83fc6714aab1fc1df061fcb03410e1dab1e5 # 
> > 040000 tree 68bb8a223284e0f5057421217a5965128bf1d51a    src
> > git cat-file -p 68bb8a223284e0f5057421217a5965128bf1d51a # 
> > 100644 blob 25c7d3b12bced67046359ba1e7945f82a2640147    
> TrueCrypt.sln
> > 
> > git cat-file -p a0c84ff28f356bcb8b872a9c65a2e9bff97b3f68 # 
> > tree 7f82a6c46f19931c3c40d44dc196cbfab7feaa72
> > git cat-file -p 7f82a6c46f19931c3c40d44dc196cbfab7feaa72 # 
> > 100644 blob 25c7d3b12bced67046359ba1e7945f82a2640147    
> CipherShed.sln
> > 
> > > 
> > > 
> > > I suppose you want Git to merge without conflict in the 
> end, though,
> > > based on your script.  Is that right?
> > > 
> > > 
> > > > Steps to reproduce the issue:
> > > > git init
> > > > git fetch https://github.com/pdinc-oss/CipherShed.git
> > > > git fetch https://github.com/srguglielmo/CipherShed.git
> > > > git checkout -b test b60070f4d0879e277f44d174a163bbb292325fea
> > > > git merge a0c84ff28f356bcb8b872a9c65a2e9bff97b3f68
> > > >
> > > > CONFLICT (rename/rename): Rename 
> > > "TrueCrypt.sln"->"src/TrueCrypt.sln" in branch
> > > > "HEAD" rename "TrueCrypt.sln"->"CipherShed.sln" in
> > > > "a0c84ff28f356bcb8b872a9c65a2e9bff97b3f68"
> > > 
> > > Git seems to be doing the correct thing here.
> > > 
> > > 
> > > > git reset --hard b60070f4d0879e277f44d174a163bbb292325fea
> > > > git mv src/TrueCrypt.sln src/CipherShed.sln
> > > > git commit -m 'renamed to be congruent with a0c84ff'
> > > > git merge a0c84ff28f356bcb8b872a9c65a2e9bff97b3f68
> > > >
> > > > Sill get a CONFLICT (rename/rename): Rename
> > > > "TrueCrypt.sln"->"src/CipherShed.sln" in branch "HEAD" rename
> > > > "TrueCrypt.sln"->"CipherShed.sln" in 
> > > "a0c84ff28f356bcb8b872a9c65a2e9bff97b3f68"
> > > 
> > > Git seems to be doing the correct thing here, too.
> > > 
> > > > I will have many more to come, any suggestions?
> > > 
> > > Maybe you meant to move the renamed file to the same 
> folder where it
> > > exists in the merge target.  I do not get a conflict when 
> I do that.
> > 
> > Are you saying I should git mv src/TrueCrypt.sln CipherShed.sln ?
> > 
> > Then it will be in the wrong path as intended.
> > 
> > > 
> > >    git reset --hard b60070f4d0879e277f44d174a163bbb292325fea
> > >    git mv src/TrueCrypt.sln CipherShed.sln
> > >    git commit -m 'renamed to be congruent with a0c84ff'
> > >    git merge a0c84ff28f356bcb8b872a9c65a2e9bff97b3f68
> > > 
> > > No conflict (on that file, anyway).
> > 
> > Agreed, but not the desired end state.
> 
> Sorry for the http://pastebin.com/1R68v6jt (changes the merge to
> 1ca13ed2271d60ba93d40bcc8db17ced8545f172, and manually 
> reconciles the merge),
> but it was too long to be readable in the email.
> 
> git blame HEAD -- src/Main/Forms/CipherShed.fbp | cut -c 1-8 
> | sort -u 
> 
> Gives: 
> ac812aa3
> b50a2fb1
> 
> git blame b60070f4d0879e277f44d174a163bbb292325fea --
> src/Main/Forms/TrueCrypt.fbp | cut -c 1-8 | sort -u
> 
> Gives: 
> 07b2176f
> 0eb8b4fa
> 12c94add
> a17c95a3
> a757b4d4
> cac6cd14
> d0a9dfa8
> d94128a9
> e6b1437a
> f1bb489c
> 
> If I use cherry pick (vs merge), I can maintain the big 
> history in b60070f, but
> loose the small history in 1ca13ed
> 
>       [test]
>       /     \
>      /       \
> [b60070f] [1ca13ed]
>     |         |
>     |         |
> [65efd37]     |
>     |    \    |
>     |     \   |
> [d8da778] [39ebb06]
> 
> How do I maintain all the history including the (line) 
> changes in 1ca13ed?

# http://pastebin.com/TuqhYubH 

# do the cerry picks, then...

git merge $(echo 'Merge of 1ca13ed2271d60ba93d40bcc8db17ced8545f172 branch -
rebranding' |\
   git commit-tree -p HEAD -p rebranding \
     $(git cat-file -p HEAD | grep ^tree | sed -e 's/^tree //') )

Perfect results. This does not seem like this should be the "right" way to do
it.


Instead of git merge rebranding, which gives CONFLICT (rename/rename)....
Automatic merge failed; fix conflicts and then commit the result. Followed by
bad blame lines.

-Jason

--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-                                                               -
- Jason Pyeron                      PD Inc. http://www.pdinc.us -
- Principal Consultant              10 West 24th Street #100    -
- +1 (443) 269-1555 x333            Baltimore, Maryland 21218   -
-                                                               -
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
This message is copyright PD Inc, subject to license 20080407P00.

 

  reply	other threads:[~2014-06-28  9:46 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-27 20:47 Trouble merging renamed but identical files - CONFLICT (rename/rename) Jason Pyeron
2014-06-27 21:46 ` Phil Hord
2014-06-27 22:39   ` Jason Pyeron
2014-06-29 15:28     ` Phil Hord
     [not found]   ` <66A60DA77398CD439FA676CEF593977D52477A@exchange.1.internal.pdinc.us>
2014-06-28  0:42     ` Jason Pyeron
2014-06-28  9:46       ` Jason Pyeron [this message]
2014-06-29 15:31       ` Phil Hord
2014-06-29 20:09         ` Phil Hord
2014-06-29 20:20           ` Jason Pyeron
2014-06-29 20:26             ` Phil Hord
2014-06-29 21:13               ` Jason Pyeron
2014-06-30  1:42                 ` Phil Hord

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=E569F92DE6554654A2133A162EDB688E@black \
    --to=jpyeron@pdinc.us \
    --cc=git@vger.kernel.org \
    --cc=phil.hord@gmail.com \
    /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).