diff options
author | Dmitry Lobanov <gaussblurinc@gmail.com> | 2021-05-16 17:58:15 +0300 |
---|---|---|
committer | Dmitry Lobanov <gaussblurinc@gmail.com> | 2021-05-16 17:58:15 +0300 |
commit | ea889b3e1237fc4399f0907f923c8df4fff3a72b (patch) | |
tree | 4c1fe97ba61d7f6dadcca6a91ffb42403cbd19f3 /src/branch.c | |
parent | f7c3d622ee978f9f9f10bb3098fe44a0ad436b84 (diff) | |
download | libgit2-ea889b3e1237fc4399f0907f923c8df4fff3a72b.tar.gz |
branch: git branch upstream format enum has been added.
Diffstat (limited to 'src/branch.c')
-rw-r--r-- | src/branch.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/branch.c b/src/branch.c index e32c5bd21..007b93591 100644 --- a/src/branch.c +++ b/src/branch.c @@ -468,10 +468,33 @@ cleanup: return error; } -static int git_branch_upstream_with_format(git_buf *buf, git_repository *repo, const char *refname, const char *format) +typedef enum { + GIT_BRANCH_UPSTREAM_FORMAT_REMOTE = 1, + GIT_BRANCH_UPSTREAM_FORMAT_MERGE = 2 +} git_branch_upstream_format; + +static const char* git_branch_upstream_format_string_for_id(git_branch_upstream_format id) { + switch (id) { + case GIT_BRANCH_UPSTREAM_FORMAT_REMOTE: return "branch.%s.remote"; + case GIT_BRANCH_UPSTREAM_FORMAT_MERGE: return "branch.%s.merge"; + default: return ""; // OK? + }; +} + +static const char* git_branch_upstream_format_name_for_id(git_branch_upstream_format id) { + switch (id) { + case GIT_BRANCH_UPSTREAM_FORMAT_REMOTE: return "remote"; + case GIT_BRANCH_UPSTREAM_FORMAT_MERGE: return "merge"; + default: return "UNDEFINED"; // OK? + }; +} + +static int git_branch_upstream_with_format(git_buf *buf, git_repository *repo, const char *refname, git_branch_upstream_format id) { int error; git_config *cfg; + const char *format = git_branch_upstream_format_string_for_id(id); + const char *format_name = git_branch_upstream_format_name_for_id(id); if (!git_reference__is_branch(refname)) return not_a_local_branch(refname); @@ -484,7 +507,7 @@ static int git_branch_upstream_with_format(git_buf *buf, git_repository *repo, c return error; if (git_buf_len(buf) == 0) { - git_error_set(GIT_ERROR_REFERENCE, "branch '%s' does not have an upstream remote", refname); + git_error_set(GIT_ERROR_REFERENCE, "branch '%s' does not have an upstream %s", refname, format_name); error = GIT_ENOTFOUND; git_buf_clear(buf); } @@ -494,12 +517,12 @@ static int git_branch_upstream_with_format(git_buf *buf, git_repository *repo, c int git_branch_upstream_remote(git_buf *buf, git_repository *repo, const char *refname) { - git_branch_upstream_with_format(buf, repo, refname, "branch.%s.remote"); + return git_branch_upstream_with_format(buf, repo, refname, GIT_BRANCH_UPSTREAM_FORMAT_REMOTE); } int git_branch_upstream_merge(git_buf *buf, git_repository *repo, const char *refname) { - git_branch_upstream_with_format(buf, repo, refname, "branch.%s.merge"); + return git_branch_upstream_with_format(buf, repo, refname, GIT_BRANCH_UPSTREAM_FORMAT_MERGE); } int git_branch_remote_name(git_buf *buf, git_repository *repo, const char *refname) |