Re: -X theirs does not resolve symlink conflict Was: BUG: merge -s theirs is not in effect
- From
Yaroslav Halchenko <yoh@onerussian.com>
- Date
- Sep 26, 2017, 13:37 UTC
- Message-ID
- <20170926133703.7gtk5ztkhqvfxszh@hopa.kiewit.dartmouth.edu>
- In-Reply-To
- <xmqqa81ichdu.fsf@gitster.mtv.corp.google.com>
On Tue, 26 Sep 2017, Junio C Hamano wrote:
> >> I do not recall people talking about symbolic links but the case of > >> binary files has been on the wishlist for a long time, and I do not > >> know of anybody who is working on (or is planning to work on) it.
> > Ah, I misremembered.
Show 5 quoted lines
> > We've addressed the "binary files" case back in 2012 with a944af1d
> > ("merge: teach -Xours/-Xtheirs to binary ll-merge driver",
> > 2012-09-08). I do not know offhand if it is just as easy to plumb
> > the MERGE_FAVOR_{OURS,THEIRS} bits thru the symbolic link codepath,
> > like that patch did to the binary file codepath.> Perhaps the attached (totally untested) patch might be a good > starting point. I do not know if you are interested in hacking on > Git, and I do not feel offended if you are not, but perhaps somebody
I would have felt honored to "hack on Git" but neither my C-foo is up to par, neither there would be more time I could adequately allocate for such endeavor. So meanwhile I am trying to contribute in hopefully constructive "whining" while exploiting git.
> else might get interested in seeing if this #leftoverbits is a good > direction to go in, and finishing it with docs and tests if it is > ;-)
> merge-recursive.c | 17 +++++++++++++---- > 1 file changed, 13 insertions(+), 4 deletions(-)
> >...<
This patch worked beautifully in my usecase!:
$> rm -rf /tmp/repo1; mkdir /tmp/repo1; cd /tmp/repo1; git init .; ln -s sym1 link; echo 1 > file; git add file link; git commit -m 'common'; git co -b b1 ; ln -sf b1link link; echo "b1 file" >| file; git commit -m 'b2 changes' -a; git co master; ln -sf masterlink link; echo "master file" >| file; git commit -m 'also modified in master' -a; git merge -X theirs --no-edit b1; ls -l link; cat file warning: templates not found /home/yoh/share/git-core/templates Initialized empty Git repository in /tmp/repo1/.git/ [master (root-commit) d2e9010] common 2 files changed, 2 insertions(+) create mode 100644 file create mode 120000 link Switched to a new branch 'b1' [b1 a2b1321] b2 changes 2 files changed, 2 insertions(+), 2 deletions(-) Switched to branch 'master' [master fbb4ba7] also modified in master 2 files changed, 2 insertions(+), 2 deletions(-) Auto-merging link Auto-merging file Merge made by the 'recursive' strategy. file | 2 +- link | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) lrwxrwxrwx 1 yoh yoh 6 Sep 26 09:32 link -> b1link b1 file
I also tried -s ours and no explicit -s, and they did as prescribed as well
PS thanks for the CCs
-- Yaroslav O. Halchenko Center for Open Neuroscience http://centerforopenneuroscience.org Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755 Phone: +1 (603) 646-9834 Fax: +1 (603) 646-1419 WWW: http://www.linkedin.com/in/yarik