Subject: Branch Names and tracking branches

From: Troy Telford <[email-masked]>
Date: Wed, 26 May 2010 14:39:17 -0600

I've got a situation where I'm trying to integrate git into another tool, so 
that when you make a commit into a git branch, a post-receive hook will then 
push the code changes into the other tool when the user pushes their changes 
into the repository.

The problem:  The other tool uses colons in the name.  So, I looked at 'man 
git-check-ref-format', and found that the colon can't be used.

So, I looked for a substitute character that isn't likely to be used anyway -- 
semicolon seemed to be a good choice.

As I decided to use a semicolon, a conversion as needed in the post hook.  It 
works fine with the git branch names along the lines of sna;foo;bar.

But using a branch name of "sna;foo;bar" is not entirely great, as the 
semicolon has to be escaped on the command line when referencing the branch 
name.

So, I decided to use a tracking branch:
 git branch --track branch "refs/origin/sna;foo;bar"

Again, it checks out okay, and it is able to pull in changes fine.  However, 
changes can't be pushed into the remote repository at all; 'git push' simply 
returns "Everything up-to-date," even when changes are made.

This differs from the behavior I've seen in the past for tracking branches - 
I'm used to (and was expecting) the git push to push the changes into the 
remote's "refs/heads/sna;foo;bar" branch.

Using another character is, of course, an option; but the semicolon isn't 
explicitly forbidden and it works for everything I've used but 'git push'.

So am I just doing something wrong, or have I found a bug or documentation 
issue?