AFAICT, the rules are currently: for push, we compare the source against the list of local refs, and do some complicated stuff to figure out what it matches. Then we compare the destination against the list of remote refs (with no destination being interpreted as the full name of the source), and do the same complicated stuff. for fetch, we accept anything that starts with "refs/heads/", "refs/tags/", or "refs/remotes/"; prepend "refs/" to anything that starts with "heads/", "tags/", or "remotes/"; and prepend "refs/heads/" to anything else. (NB: I'm looking at Julian's C translation, rather than the original shell scripts, which I find inpenetrable). Is this difference simply due to the different languages the matching portions of these were originally written in? Would it be okay to change fetch to work like push? It would be nice to have a single procedure for determining which (if any) of a list of refs is the match for some string, regardless of why we're looking. -Daniel *This .sig left intentionally blank* - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html