On Tue, 26 Sep 2017, Junio C Hamano wrote:
quoted
quoted
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.
quoted
Ah, I misremembered.
quoted
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(-)
quoted
...<
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