Hi, On Wed, 20 Aug 2008, Alex Riesen wrote: > Johannes Schindelin, Wed, Aug 20, 2008 21:52:23 +0200: > > On Wed, 20 Aug 2008, Alex Riesen wrote: > > > - slash = strchr(argv[0], '/'); > > > - if (slash && !prefixcmp(argv[0], "refs/")) > > > - slash = strchr(slash + 1, '/'); > > > - if (slash && !prefixcmp(argv[0], "remotes/")) > > > - slash = strchr(slash + 1, '/'); > > > > Why is this not enough? It strips refs/ if there is one, and remotes/ if > > there is one (possibly after stripping refs/). No? > > > > No. It strips refs/ OR remotes/ (because of prefixcmp with argv[0]). > And I still wanted refs/<namespace>/something... Yes, you are correct. However, to fix my thinko, I deem this preferable: -- snipsnap -- builtin-checkout.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/builtin-checkout.c b/builtin-checkout.c index e95eab9..2a076cf 100644 --- a/builtin-checkout.c +++ b/builtin-checkout.c @@ -448,8 +448,10 @@ int cmd_checkout(int argc, const char **argv, const char *prefix) if (!argc || !strcmp(argv[0], "--")) die ("--track needs a branch name"); slash = strchr(argv[0], '/'); - if (slash && !prefixcmp(argv[0], "refs/")) - slash = strchr(slash + 1, '/'); + if (slash && !prefixcmp(argv[0], "refs/")) { + argv[0] = slash + 1; + slash = strchr(argv[0], '/'); + } if (slash && !prefixcmp(argv[0], "remotes/")) slash = strchr(slash + 1, '/'); if (!slash || !slash[1]) -- 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