Skip to content
  • Pete Wyckoff's avatar
    git p4: work around p4 bug that causes empty symlinks · 40f846c3
    Pete Wyckoff authored and Junio C Hamano's avatar Junio C Hamano committed
    Damien Gérard highlights an interesting problem.  Some p4
    repositories end up with symlinks that have an empty target.  It
    is not possible to create this with current p4, but they do
    indeed exist.
    
    The effect in git p4 is that "p4 print" on the symlink returns an
    empty string, confusing the curret symlink-handling code.
    
    Such broken repositories cause problems in p4 as well, even with
    no git involved.  In p4, syncing to a change that includes a
    bogus symlink causes errors:
    
        //depot/empty-symlink - updating /home/me/p4/empty-symlink
        rename: /home/me/p4/empty-symlink: No such file or directory
    
    and leaves no symlink.
    
    In git, replicate the p4 behavior by ignoring these bad symlinks.
    If, in a later p4 revision, the symlink happens to point to
    something non-null, the symlink will be replaced properly.
    
    Add a big test for all this too.
    
    This happens to be a regression introduced by 1292df11
    
     (git-p4:
    Fix occasional truncation of symlink contents., 2013-08-08) and
    appeared first in 1.8.5.  But it shows up only in p4 repositories
    of dubious character, so can wait for a proper release.
    
    Tested-by: default avatarDamien Gérard <damien@iwi.me>
    Signed-off-by: default avatarPete Wyckoff <pw@padd.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    40f846c3