Re: [PATCH] packed_ref_store: handle a packed-refs file that is a symlink
- From
Stefan Beller <sbeller@google.com>
- Date
- Jul 27, 2017, 00:15 UTC
- Message-ID
- <CAGZ79ka+BDqSpQtMPhFjuJrGb+eT=oPNeMEhFavg43TbPVerbw@mail.gmail.com>
- In-Reply-To
- <d0da02a8b6f0272fa70ae3b1dc80fee6c6ee8d18.1501111803.git.mhagger@alum.mit.edu>
On Wed, Jul 26, 2017 at 4:39 PM, Michael Haggerty <mhagger@alum.mit.edu> wrote:
Show 28 quoted lines
> One of the tricks that `contrib/workdir/git-new-workdir` plays is to
> making `packed-refs` in the new workdir a symlink to the `packed-refs`
> file in the original repository. Before
> 42dfa7ecef ("commit_packed_refs(): use a staging file separate from
> the lockfile", 2017-06-23), a lockfile was used as the staging file,
> and because the `LOCK_NO_DEREF` was not used, the pointed-to file was
> locked and modified.
>
> But after that commit, the staging file was created using a tempfile,
> with the end result that rewriting the `packed-refs` file in the
> workdir overwrote the symlink rather than the original `packed-refs`
> file.
>
> Change `commit_packed_refs()` to use `get_locked_file_path()` to find
> the path of the file that it should overwrite. Since that path was
> properly resolved when the lockfile was created, this restores the
> pre-42dfa7ecef behavior.
>
> Also add a test case to document this use case and prevent a
> regression like this from recurring.
>
> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
> ---
> Sorry for the slow response; I've been traveling and very busy.
>
> I didn't even know that a symlinked `packed-refs` file is a thing. The
> attached patch should fix the problem. It applies on top of v3 of
> mh/packed-ref-store [1] (which is already in next).Thanks for providing a fix. Code looks good to me, I wonder if the test needs SYMLINKS special treatment though?
Stefan