Merge branch 'ps/worktree-refdb-initialization'
Instead of manually creating refs/ hierarchy on disk upon a creation of a secondary worktree, which is only usable via the files backend, use the refs API to populate it. * ps/worktree-refdb-initialization: builtin/worktree: create refdb via ref backend worktree: expose interface to look up worktree by name builtin/worktree: move setup of commondir file earlier refs/files: skip creation of "refs/{heads,tags}" for worktrees setup: move creation of "refs/" into the files backend refs: prepare `refs_init_db()` for initializing worktree refs
This commit is contained in:
27
worktree.c
27
worktree.c
@ -12,18 +12,23 @@
|
||||
#include "wt-status.h"
|
||||
#include "config.h"
|
||||
|
||||
void free_worktree(struct worktree *worktree)
|
||||
{
|
||||
if (!worktree)
|
||||
return;
|
||||
free(worktree->path);
|
||||
free(worktree->id);
|
||||
free(worktree->head_ref);
|
||||
free(worktree->lock_reason);
|
||||
free(worktree->prune_reason);
|
||||
free(worktree);
|
||||
}
|
||||
|
||||
void free_worktrees(struct worktree **worktrees)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
for (i = 0; worktrees[i]; i++) {
|
||||
free(worktrees[i]->path);
|
||||
free(worktrees[i]->id);
|
||||
free(worktrees[i]->head_ref);
|
||||
free(worktrees[i]->lock_reason);
|
||||
free(worktrees[i]->prune_reason);
|
||||
free(worktrees[i]);
|
||||
}
|
||||
for (i = 0; worktrees[i]; i++)
|
||||
free_worktree(worktrees[i]);
|
||||
free (worktrees);
|
||||
}
|
||||
|
||||
@ -75,8 +80,8 @@ static struct worktree *get_main_worktree(int skip_reading_head)
|
||||
return worktree;
|
||||
}
|
||||
|
||||
static struct worktree *get_linked_worktree(const char *id,
|
||||
int skip_reading_head)
|
||||
struct worktree *get_linked_worktree(const char *id,
|
||||
int skip_reading_head)
|
||||
{
|
||||
struct worktree *worktree = NULL;
|
||||
struct strbuf path = STRBUF_INIT;
|
||||
|
Reference in New Issue
Block a user