• Jeff King's avatar
    filter-branch: return to original dir after filtering · 97276019
    Jeff King authored
    The first thing filter-branch does is to create a temporary
    directory, either ".git-rewrite" in the current directory
    (which may be the working tree or the repository if bare),
    or in a directory specified by "-d". We then chdir to
    $tempdir/t as our temporary working directory in which to run
    tree filters.
    
    After finishing the filter, we then attempt to go back to
    the original directory with "cd ../..". This works in the
    .git-rewrite case, but if "-d" is used, we end up in a
    random directory. The only thing we do after this chdir is
    to run git-read-tree, but that means that:
    
      1. The working directory is not updated to reflect the
         filtered history.
    
      2. We dump random files into "$tempdir/.." (e.g., if you
         use "-d /tmp/foo", we dump junk into /tmp).
    
    Fix it by recording the full path to the original directory
    and returning there explicitly.
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    97276019
t7003-filter-branch.sh 10.1 KB