Op 7-6-2012 9:23, Kenta Murata (村田 賢太) schreef:
Introducing --current option to git-branch builtin command. This option allows us to simply show the current branch name.
I don't know whether we would need such an option. To me it feels this is a missing option indeed, but at the same time you can use 'git status' or 'git branch' to see the current branch. It might be useful in case you have lots of branches and lots of untracked files, but in that case "git status | head -n1" or "git branch | grep '*'" would do the trick.
--- builtin/branch.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/builtin/branch.c b/builtin/branch.c index 0e060f2..21e4675 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -19,6 +19,7 @@ #include "column.h" static const char * const builtin_branch_usage[] = { + "git branch --current", "git branch [options] [-r | -a] [--merged | --no-merged]", "git branch [options] [-l] [-f]<branchname> [<start-point>]", "git branch [options] [-r] (-d | -D)<branchname>...",
git-branch has four modes: 'list', 'create', 'delete', and 'rename'. Isn't --current then just another option to the 'list'-mode? Then it would be something like:
"git branch [options] [-r | -a] [--current] [--merged | --no-merged]"
@@ -794,7 +796,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix) argc = parse_options(argc, argv, prefix, options, builtin_branch_usage, 0); - if (!delete&& !rename&& !edit_description&& argc == 0) + if (!delete&& !rename&& !edit_description&& !show_current && argc == 0) list = 1;
In line with what I wrote above, show_current should imply 'list'-mode.
if (!!delete + !!rename + !!force_create + !!list> 1) @@ -852,6 +854,12 @@ int cmd_branch(int argc, const char **argv, const char *prefix) rename_branch(argv[0], argv[1], rename> 1); else usage_with_options(builtin_branch_usage, options); + } else if (show_current) { + const char *branch_name = head; + if (detached) { + branch_name = _("(no branch)"); + } + printf("%s\n", branch_name); } else if (argc> 0&& argc<= 2) { if (kinds != REF_LOCAL_BRANCH) die(_("-a and -r options to 'git branch' do not make sense with a branch name"));
If '--current' implies the 'list'-mode, it would use 'print_ref_list'. There already is code in print_ref_list to detect whether a branch is the current one, it outputs the branch list in a formatted way, it takes care of 'columns', so wouldn't it be better to modify that code to only print the current branch ?
Vincent -- 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