On Mon, Feb 18, 2019 at 10:09 PM <hi-angel@xxxxxxxxx> wrote: > > > > On Пн, Feb 18, 2019 at 6:02 PM, Duy Nguyen <pclouds@xxxxxxxxx> wrote: > > On Mon, Feb 18, 2019 at 9:44 PM <hi-angel@xxxxxxxxx> wrote: > >> > >> # Steps to reproduce (in terms of terminal commands) > >> > >> $ mkdir foo > >> $ cd foo > >> $ git init > >> Initialized empty Git repository in /tmp/foo/.git/ > >> $ echo hello > testfile > >> $ git add testfile && git commit -m "my commit1" > >> [master (root-commit) d5f0b47] my commit1 > >> 1 file changed, 1 insertion(+) > >> create mode 100644 testfile > >> $ git checkout -b bar > >> Switched to a new branch 'bar' > >> $ git worktree add ../bar\ \(worktree\) master > >> Preparing worktree (checking out 'master') > >> HEAD is now at d5f0b47 my commit1 > >> $ git gc > >> error: cannot lock ref 'worktrees/bar (worktree)/HEAD': unable > >> to > >> resolve reference 'worktrees/bar (worktree)/HEAD': Invalid argument > > > > Thanks for reporting. This is not a valid reference and causes the > > problem. The worktree's name has to sanitized. I'll fix it tomorrow. > >> > > You mean, you want to prohibit such directory names as a worktree? But > it's a proper directory naming, can perhaps git do the sanitizing > transparently for end-user? No, not inhibiting. When you do "git add ../(abc)" then the internal name could be simply "abc" or something like that instead of "(abc)" which is invalid to reflog and other commands. The worktree's location is still '(abc)'. There's also a work-in-progress option to let the user control this worktree name directly. -- Duy