threads / discuss / 37305

glob escaping doesn't work with git mv

Subject: glob escaping doesn't work with git mv

## tl;dr

2 messages between Aug 7, 2014 and Aug 7, 2014.

replies: 1people: 2as markdown or json

Alan Grover· Aug 7, 2014, 01:52 UTC · lore

I tried using escaped globs with git mv, but globs don't seem to be expanded with git mv.

So, for example, I've got files file1 & file2, and have been editing them, so I've got file1~ and file2~ also, and *~ is in .gitignore.

If I do:

$ mkdir newdir $ git mv file* newdir

I get a 'fatal: not in repository' error because I'm trying to move untracked files.

Since we can do git add file\*, I tried:
$ git mv file\* newdir

I get a 'bad source, source=file* destination=file*' error. It seems to be looking for a file named 'file*' rather than performing glob expansion.

If I do:

$ rm *~ $ git mv file* newdir

Everything works as expected. It would be convenient if git mv expanded escaped globs.

Thanks!
Duy Nguyen· Aug 7, 2014, 02:10 UTC · re: Alan Grover · lore

Re: glob escaping doesn't work with git mv

On Thu, Aug 7, 2014 at 8:52 AM, Alan Grover <alan.grover@gmail.com> wrote:
Show 7 quoted lines
> Since we can do git add file\*, I tried:
>
> $ git mv file\* newdir
>
> I get a 'bad source, source=file* destination=file*' error. It seems
> to be looking for a file named 'file*' rather than performing glob
> expansion.

This is a known problem (to me at least). Source path processing in git-mv is a bit complicated and it scared me away from converting to using pathspec (which supports globbing and stuff). But perhaps if I just expand pathspec and feed the final path list to git-mv (pretty much like how shells expand glob) then it probably works..

-- 
Duy

← back to recent threads