diff options
Diffstat (limited to 'branch.c')
-rw-r--r-- | branch.c | 45 |
1 files changed, 26 insertions, 19 deletions
@@ -87,7 +87,7 @@ static int install_branch_config_multiple_remotes(int flag, const char *local, for_each_string_list_item(item, remotes) if (skip_prefix(item->string, "refs/heads/", &shortname) && !strcmp(local, shortname)) { - warning(_("not setting branch '%s' as its own upstream."), + warning(_("not setting branch '%s' as its own upstream"), local); return 0; } @@ -159,7 +159,7 @@ static int install_branch_config_multiple_remotes(int flag, const char *local, out_err: strbuf_release(&key); - error(_("Unable to write upstream branch configuration")); + error(_("unable to write upstream branch configuration")); advise(_("\nAfter fixing the error cause you may try to fix up\n" "the remote tracking information by invoking:")); @@ -256,7 +256,7 @@ static void setup_tracking(const char *new_ref, const char *orig_ref, } if (tracking.matches > 1) - die(_("Not tracking: ambiguous information for ref %s"), + die(_("not tracking: ambiguous information for ref %s"), orig_ref); if (tracking.srcs->nr < 1) @@ -292,7 +292,7 @@ int read_branch_desc(struct strbuf *buf, const char *branch_name) int validate_branchname(const char *name, struct strbuf *ref) { if (strbuf_check_branch_ref(ref, name)) - die(_("'%s' is not a valid branch name."), name); + die(_("'%s' is not a valid branch name"), name); return ref_exists(ref->buf); } @@ -305,18 +305,23 @@ int validate_branchname(const char *name, struct strbuf *ref) */ int validate_new_branchname(const char *name, struct strbuf *ref, int force) { - const char *head; + struct worktree **worktrees; + const struct worktree *wt; if (!validate_branchname(name, ref)) return 0; if (!force) - die(_("A branch named '%s' already exists."), + die(_("a branch named '%s' already exists"), ref->buf + strlen("refs/heads/")); - head = resolve_ref_unsafe("HEAD", 0, NULL, NULL); - if (!is_bare_repository() && head && !strcmp(head, ref->buf)) - die(_("Cannot force update the current branch.")); + worktrees = get_worktrees(); + wt = find_shared_symref(worktrees, "HEAD", ref->buf); + if (wt && !wt->is_bare) + die(_("cannot force update the branch '%s' " + "checked out at '%s'"), + ref->buf + strlen("refs/heads/"), wt->path); + free_worktrees(worktrees); return 1; } @@ -336,7 +341,7 @@ static int validate_remote_tracking_branch(char *ref) } static const char upstream_not_branch[] = -N_("Cannot setup tracking information; starting point '%s' is not a branch."); +N_("cannot set up tracking information; starting point '%s' is not a branch"); static const char upstream_missing[] = N_("the requested upstream branch '%s' does not exist"); static const char upstream_advice[] = @@ -388,7 +393,7 @@ static void dwim_branch_start(struct repository *r, const char *start_name, _(upstream_advice)); exit(code); } - die(_("Not a valid object name: '%s'."), start_name); + die(_("not a valid object name: '%s'"), start_name); } switch (dwim_ref(start_name, strlen(start_name), &oid, &real_ref, 0)) { @@ -408,12 +413,12 @@ static void dwim_branch_start(struct repository *r, const char *start_name, } break; default: - die(_("Ambiguous object name: '%s'."), start_name); + die(_("ambiguous object name: '%s'"), start_name); break; } if ((commit = lookup_commit_reference(r, &oid)) == NULL) - die(_("Not a valid branch point: '%s'."), start_name); + die(_("not a valid branch point: '%s'"), start_name); if (out_real_ref) { *out_real_ref = real_ref; real_ref = NULL; @@ -667,14 +672,16 @@ void remove_branch_state(struct repository *r, int verbose) void die_if_checked_out(const char *branch, int ignore_current_worktree) { + struct worktree **worktrees = get_worktrees(); const struct worktree *wt; - wt = find_shared_symref("HEAD", branch); - if (!wt || (ignore_current_worktree && wt->is_current)) - return; - skip_prefix(branch, "refs/heads/", &branch); - die(_("'%s' is already checked out at '%s'"), - branch, wt->path); + wt = find_shared_symref(worktrees, "HEAD", branch); + if (wt && (!ignore_current_worktree || !wt->is_current)) { + skip_prefix(branch, "refs/heads/", &branch); + die(_("'%s' is already checked out at '%s'"), branch, wt->path); + } + + free_worktrees(worktrees); } int replace_each_worktree_head_symref(const char *oldref, const char *newref, |