Thread (24 messages) flat view 24 messages, 4 authors, 2021-11-10

Re: [PATCH v4 2/4] receive-pack: Clean dead code from update_worktree()

From: Johannes Schindelin <hidden>
Date: 2021-11-09 16:16:50

Hi Anders,

looks good, just one suggestion, see inlined.

On Mon, 8 Nov 2021, Anders Kaseorg wrote:
quoted hunk ↗ jump to hunk
update_worktree() can only be called with a non-NULL worktree parameter,
because that’s the only case where we set do_update_worktree = 1.
worktree->path is always initialized to non-NULL.

Signed-off-by: Anders Kaseorg <redacted>
---
 builtin/receive-pack.c | 20 +++++---------------
 1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 49b846d960..cf575280fc 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -1449,29 +1449,19 @@ static const char *push_to_checkout(unsigned char *hash,

 static const char *update_worktree(unsigned char *sha1, const struct worktree *worktree)
 {
-	const char *retval, *work_tree, *git_dir = NULL;
+	const char *retval, *git_dir;
 	struct strvec env = STRVEC_INIT;

-	if (worktree && worktree->path)
-		work_tree = worktree->path;
-	else if (git_work_tree_cfg)
-		work_tree = git_work_tree_cfg;
-	else
-		work_tree = "..";
We might want to make sure that `worktree` and `worktree->path` are
non-`NULL`, and otherwise call a `BUG()`.
-
 	if (is_bare_repository())
Okay, I lied, I have two suggestions. Shouldn't this be turned into
`worktree->is_bare`?

Of course, `find_shared_symref()` will currently not return any worktree
with non-zero `is_bare`...
quoted hunk ↗ jump to hunk
 		return "denyCurrentBranch = updateInstead needs a worktree";
-	if (worktree)
-		git_dir = get_worktree_git_dir(worktree);
-	if (!git_dir)
-		git_dir = get_git_dir();
+	git_dir = get_worktree_git_dir(worktree);

 	strvec_pushf(&env, "GIT_DIR=%s", absolute_path(git_dir));

 	if (!hook_exists(push_to_checkout_hook))
-		retval = push_to_deploy(sha1, &env, work_tree);
+		retval = push_to_deploy(sha1, &env, worktree->path);
 	else
-		retval = push_to_checkout(sha1, &env, work_tree);
+		retval = push_to_checkout(sha1, &env, worktree->path);

 	strvec_clear(&env);
 	return retval;
@@ -1579,7 +1569,7 @@ static const char *update(struct command *cmd, struct shallow_info *si)
 	}

 	if (do_update_worktree) {
-		ret = update_worktree(new_oid->hash, find_shared_symref("HEAD", name));
+		ret = update_worktree(new_oid->hash, worktree);
Makes sense. If `worktree` is `NULL`, `do_update_worktree` won't ever be
set, and if `worktree` is not `NULL`, even before we remove that
`is_bare_repository()` ternary, it is set to `find_shared_symref("HEAD",
name)` (and `name` is not changed in the `update()` function).

Thanks,
Dscho
 		if (ret)
 			return ret;
 	}
--
2.33.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help