Signed-off-by: Nguyễn Thái Ngọc Duy <[email protected]>
---
worktree.c | 18 +++++++++++++++++-
worktree.h | 1 +
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/worktree.c b/worktree.c
index 360ba41..452f64a 100644
--- a/worktree.c
+++ b/worktree.c
@@ -2,6 +2,7 @@
#include "refs.h"
#include "strbuf.h"
#include "worktree.h"
+#include "dir.h"
void free_worktrees(struct worktree **worktrees)
{
@@ -94,6 +95,7 @@ static struct worktree *get_main_worktree(void)
worktree->is_bare = is_bare;
worktree->head_ref = NULL;
worktree->is_detached = is_detached;
+ worktree->is_current = 0;
add_head_info(&head_ref, worktree);
done:
@@ -138,6 +140,7 @@ static struct worktree *get_linked_worktree(const char *id)
worktree->is_bare = 0;
worktree->head_ref = NULL;
worktree->is_detached = is_detached;
+ worktree->is_current = 0;
add_head_info(&head_ref, worktree);
done:
@@ -150,10 +153,11 @@ done:
struct worktree **get_worktrees(void)
{
struct worktree **list = NULL;
+ struct strbuf git_dir = STRBUF_INIT;
struct strbuf path = STRBUF_INIT;
DIR *dir;
struct dirent *d;
- int counter = 0, alloc = 2;
+ int i, counter = 0, alloc = 2;
list = xmalloc(alloc * sizeof(struct worktree *));
@@ -178,6 +182,18 @@ struct worktree **get_worktrees(void)
}
ALLOC_GROW(list, counter + 1, alloc);
list[counter] = NULL;
+
+ strbuf_addstr(&git_dir, absolute_path(get_git_dir()));
+ for (i = 0; i < counter; i++) {
+ struct worktree *wt = list[i];
+ strbuf_addstr(&path, absolute_path(get_worktree_git_dir(wt)));
+ wt->is_current = !strcmp_icase(git_dir.buf, path.buf);
+ strbuf_reset(&path);
+ if (wt->is_current)
+ break;
+ }
+ strbuf_release(&git_dir);
+ strbuf_release(&path);
return list;
}
diff --git a/worktree.h b/worktree.h
index d71d7ec..625fb8d 100644
--- a/worktree.h
+++ b/worktree.h
@@ -8,6 +8,7 @@ struct worktree {
unsigned char head_sha1[20];
int is_detached;
int is_bare;
+ int is_current;
};
/* Functions for acting on the information about worktrees. */
--
2.8.0.rc0.210.gd302cd2
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html