Re: git-svn failure when symlink added in svn

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: git-svn failure when symlink added in svn

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:07

Seth Falcon [off-list ref] writes:
Junio C Hamano [off-list ref] writes:
...
quoted
Then I suspect the following could be less invasive and more
efficient fix for the problem.  I do not have an access to MacOS
box, and I do not have a working sync with any SVN repository,
so I cannot test it myself, though...
This also works as a fix for me on OS X and obviously is nicer than
resorting to temp files.  Again, with this patch against git master
the test case that Eric posted passes as does one of my own examples.
Well, I think the sysseek should be done only when we did read
'link ' from the beginning and not in other cases, so in that
sense my patch is very broken.  Probably the sysseek() needs to
be done inside the "if ($fb->mode_b} == 120000)" part, after it
checks for 'link '.

By the way.

I admit I have never given a serious look at the code of
git-svn.perl until now.

It has comparison with 120000 and 100644 all over with ==/!=.
Even though these originally come from parse result of textual
output from ls-tree and diff-tree, and the code never treats
$mode strings as octal integer, I would feel better if the
literals were quoted and comparison done with eq/ne.

Re: git-svn failure when symlink added in svn

From: Eric Wong <hidden>
Date: 2016-06-15 22:43:07

Alexander: please don't drop me from the Cc next time, thanks.

Junio C Hamano [off-list ref] wrote:
Seth Falcon [off-list ref] writes:
quoted
Junio C Hamano [off-list ref] writes:
...
quoted
Then I suspect the following could be less invasive and more
efficient fix for the problem.  I do not have an access to MacOS
box, and I do not have a working sync with any SVN repository,
so I cannot test it myself, though...
This also works as a fix for me on OS X and obviously is nicer than
resorting to temp files.  Again, with this patch against git master
the test case that Eric posted passes as does one of my own examples.
Well, I think the sysseek should be done only when we did read
'link ' from the beginning and not in other cases, so in that
sense my patch is very broken.  Probably the sysseek() needs to
be done inside the "if ($fb->mode_b} == 120000)" part, after it
checks for 'link '.
Yes, don't add the new sysseek there.  All the reads and seeks in that
block of code should probably be sysreads and sysseeks instead.  Feel
free to patch and test this as I don't have time at the moment.
By the way.

I admit I have never given a serious look at the code of
git-svn.perl until now.

It has comparison with 120000 and 100644 all over with ==/!=.
Even though these originally come from parse result of textual
output from ls-tree and diff-tree, and the code never treats
$mode strings as octal integer, I would feel better if the
literals were quoted and comparison done with eq/ne.
It works either way as stringifying those would be unambiguous,
although I understand strings can be considered better style...
Feel free to change this.

-- 
Eric Wong
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help