Re: Parallel worktree checkouts result in index.lock exists

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2023-02-21 at 17:33:28, Raul E Rangel wrote:
> Hello,
> I'm trying to extract multiple trees in parallel so I can create a
> tarball of the trees. I can't use `git archive` since it doesn't
> currently produce hermetic output, and I need to support older git
> versions.
> 
> In essence what I'm trying to do is:
> 
>     git --work-tree ~/tmp/bob1 checkout ff27f5415797ead8bc775518a08f3a4ab24abd53 -- . &
>     git --work-tree ~/tmp/bob2 checkout e70ebd7c76b9f9ad44b59e3002a5c57be5b9dc12 -- . &
> 
> When I do this though, I get the following error:
>     [1] 4027482
>     [2] 4027483
>     fatal: Unable to create '/home/rrangel/cros-bazel/.repo/project-objects/chromiumos/platform/vboot_reference.git/./index.lock': File exists.
>     
>     Another git process seems to be running in this repository, e.g.
>     an editor opened by 'git commit'. Please make sure all processes
>     are terminated then try again. If it still fails, a git process
>     may have crashed in this repository earlier:
>     remove the file manually to continue.
> 
> Is this expected? I'm not sure why the index is coming into play here.
> Is there another method I should be using to extract a tree into a
> directory?

This is expected because when you do a checkout, the timestamps and
other metadata of the files are written into the index.  This is what
makes `git status` work quickly: if the metadata of the files hasn't
changed, Git doesn't have to re-read them to verify their contents.  You
definitely don't want to delete that because you'll likely end up with
corrupt data.

If you want to create multiple worktrees, use `git worktree add`, which
can create multiple worktrees that each have their own index, but share
the object store.  When you're done with it, run `git worktree remove`,
and everything will be cleaned up.

Note that with worktrees, you can have at most one worktree with a given
branch (or detached head) checked out at a time.
-- 
brian m. carlson (he/him or they/them)
Toronto, Ontario, CA

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux