Hello all,
First of all, I would like to tell that this happened completely by
accident and it's partly my mistake. Here's what happened.
I recently started creating 'feature branches' a lot for the few
patches that I sent to this mailing list. To identify the status of the
patch corresponding to that branch I prefixed them with special unicode
characters like ✓, ˅ etc. instead of using conventional hierarchical
names like, 'done/', 'archived/'.
Then I started finding it difficult to distinguish these unicode-
prefixed names probably because they had only one unicode character in
common. So, I thought of switching to the conventional way of using
scoped branch names (old is gold, you see). I wrote a tiny script to
rename the branches by replacing a specific unicode prefix with a
corresponding hierachy. For example, the script would convert a branch
named '✓doc-fix' to 'done/doc-fix'.
I made a small assumption in the script which turned out to be false. I
thought the unicode prefixes I used corresponded to only two bytes.
This lead to the issue. The unicode character '✓' corresponds to three
characters and as a result instead of removing it, my script replaced
it with the unknown character '�'. So, the branch named '✓doc-fix'
became 'done/�doc-fix'. Here's the issue. I couldn't use
$ git branch -m done/�doc-fix done/dic-fix
to rename the branch. Nor could I refer to it in anyway. Git simply
says,
error: pathspec 'done/�doc-fix' did not match any file(s) known to git.
It's not a big issue as I haven't lost anything out of it. The branches
have been merged into 'master'.
I just wanted to know why git accepted a branch name which it can't
identify later?
If it had rejected that name in the first place it would have been
better. In case you would like to know how I got that weird name,
here's a way to get that
$ echo '✓doc-fix' | cut -c3-100
--
Kaartic