diff options
author | Vincent Ambo <tazjin@google.com> | 2020-05-25T23·06+0100 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2020-05-25T23·06+0100 |
commit | 93ba78d6f4632ef1c5228965e3edc8c0faf88c1e (patch) | |
tree | 85730c182a9f5f492ade8e8ccdb1c2356f9900bd /third_party/git/worktree.c | |
parent | 6f8fbf4aa4b1654ab27d4829e114538761817de0 (diff) |
revert(3p/git): Revert merge of git upstream at v2.26.2 r/852
This causes cgit to serve error pages, which is undesirable. This reverts commit 5229c9b232de5bfa959ad6ebbb4c8192ac513352, reversing changes made to f2b211131f2347342dde63975b09cf603149f1a3.
Diffstat (limited to 'third_party/git/worktree.c')
-rw-r--r-- | third_party/git/worktree.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/third_party/git/worktree.c b/third_party/git/worktree.c index eba4fd3a0381..5b4793caa34e 100644 --- a/third_party/git/worktree.c +++ b/third_party/git/worktree.c @@ -47,13 +47,15 @@ static void add_head_info(struct worktree *wt) static struct worktree *get_main_worktree(void) { struct worktree *worktree = NULL; + struct strbuf path = STRBUF_INIT; struct strbuf worktree_path = STRBUF_INIT; strbuf_add_absolute_path(&worktree_path, get_git_common_dir()); - strbuf_strip_suffix(&worktree_path, "/."); if (!strbuf_strip_suffix(&worktree_path, "/.git")) strbuf_strip_suffix(&worktree_path, "/."); + strbuf_addf(&path, "%s/HEAD", get_git_common_dir()); + worktree = xcalloc(1, sizeof(*worktree)); worktree->path = strbuf_detach(&worktree_path, NULL); /* @@ -67,6 +69,7 @@ static struct worktree *get_main_worktree(void) is_bare_repository(); add_head_info(worktree); + strbuf_release(&path); strbuf_release(&worktree_path); return worktree; } @@ -212,6 +215,7 @@ struct worktree *find_worktree(struct worktree **list, const char *arg) { struct worktree *wt; + char *path; char *to_free = NULL; if ((wt = find_worktree_by_suffix(list, arg))) @@ -219,17 +223,11 @@ struct worktree *find_worktree(struct worktree **list, if (prefix) arg = to_free = prefix_filename(prefix, arg); - wt = find_worktree_by_path(list, arg); - free(to_free); - return wt; -} - -struct worktree *find_worktree_by_path(struct worktree **list, const char *p) -{ - char *path = real_pathdup(p, 0); - - if (!path) + path = real_pathdup(arg, 0); + if (!path) { + free(to_free); return NULL; + } for (; *list; list++) { const char *wt_path = real_path_if_valid((*list)->path); @@ -237,6 +235,7 @@ struct worktree *find_worktree_by_path(struct worktree **list, const char *p) break; } free(path); + free(to_free); return *list; } |