[[!comment format=mdwn
 username="https://launchpad.net/~r0lf"
 nickname="r0lf"
 avatar="http://cdn.libravatar.org/avatar/aa82122557e706df7ba83bd1983eb79ef1ba2e51350217850176d4f9a1bb2bc0"
 subject="try to find a better solution"
 date="2021-04-24T11:03:28Z"
 content="""
Thank you for the your comment. It certainly explains your situation back when you coded this up. I'm not sure I'm convinced it is good justification to keep things the way they are going forward.

1. The branch names aren't short
2. The branch names aren't clash-free (see my other report)
3. I switch between branches all the time, that's their purpose.

For #3, I usually rely on either mark-copy'ing the characters off the terminal with the mouse or via bash-completion. Both are broken.

Isn't it that people aren't using () for branch or filenames precisely because of the problems you will almost certainly run into?  I'm certain there is a better way.

Personally, I see the act of hiding non-local files as a temporary measure.  Maybe creating a branch for that isn't even the right thing.  Maybe \"git stash\" or a tag is a better solution.  Or maybe just remove broken links without committing the result at all. 

To expand on that idea, https://unix.stackexchange.com/a/49470 discusses how to use find and I found \"find . -maxdepth 1 -type l -exec test ! -e {} \; -delete\" to work just fine.  \"git checkout .\" then brought back those links for non-local files just fine.  How about going without any branch at all?  Obviously, in git-annex there are still some corner cases to consider.  Like making sure not to continue on master while the links to non-local files are still removed.  I haven't considered all potential pitfalls, but I feel this might be a better way to handle this need.
"""]]
