On Sun, Sep 23, 2018 at 10:25 AM Eric Sunshine <sunsh...@sunshineco.com> wrote:
> > @@ -487,6 +487,28 @@ int submodule_uses_worktrees(const char *path)
> > +void strbuf_worktree_ref(const struct worktree *wt,
> > +                        struct strbuf *sb,
> > +                        const char *refname)
> > +{
> > +       if (wt && !wt->is_current) {
> > +               if (is_main_worktree(wt))
> > +                       strbuf_addstr(sb, "main/");
> > +               else
> > +                       strbuf_addf(sb, "worktrees/%s/", wt->id);
> > +       }
> > +       strbuf_addstr(sb, refname);
> > +}
>
> Seeing this use worktree->id to construct "worktrees/<id>/<refname>"
> makes me wonder how the user is going to know the ID of a worktree in
> order to specify such refs in the first place. For example, how is the
> user going to know the <id> in "git rev-parse worktrees/<id>/HEAD"? I
> don't think we print the worktree ID anywhere, do we? Certainly, "git
> worktree list" doesn't show it, and "git worktree add" stopped showing
> it as of 2c27002a0a (worktree: improve message when creating a new
> worktree, 2018-04-24).

Oh yes I forgot to point this out. With this approach we have to have
an id, and the directory name inside $GIT_DIR/worktrees seems a
natural choice. I was hoping to go with extended ref syntax instead
[1] which gives us more flexibility in identifying a worktree. But I
don't think that's going to happen. "git worktree" would need some
improvements to show this id, specify it at "git worktree add" and
potentially rename it even.

[1] 
https://public-inbox.org/git/cacsjy8bovu_z-ulrfmzfyrymxhndfc_fun_4i4nnvxwosha...@mail.gmail.com/
-- 
Duy

Reply via email to