[PATCH 0/4] Create branch_checked_out() helper
- From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jun 8, 2022, 20:08 UTC
- Message-ID
- <pull.1254.git.1654718942.gitgitgadget@gmail.com>
This is a replacement for some patches from v2 of my 'git rebase --update-refs' topic [1]. After some feedback from Philip, I've decided to pull that topic while I rework how I track the refs to rewrite [2]. This series moves forward with the branch_checked_out() helper that was a bit more complicated than expected at first glance. This series is a culmination of the discussion started by Junio at [3].
[1] https://lore.kernel.org/git/pull.1247.v2.git.1654634569.gitgitgadget@gmail.com [2] https://lore.kernel.org/git/34264915-8a37-62db-f954-0b5297639b34@github.com/ [3] https://lore.kernel.org/git/xmqqr140t9am.fsf@gitster.g/
Here is the patch outline:
1. Add a basic form of branch_checked_out() that only looks at the HEAD of
each worktree. Since this doesn't look at BISECT_HEAD or REBASE_HEAD,
the helper isn't linked to any consumer in this patch. A test script is
added that verifies the current behavior checks that are implemented,
even if they are not connected yet.
2. Make branch_checked_out() actually look at BISECT_HEAD and REBASE_HEAD.
Add tests for those cases, which was previously untested in the Git test
suite. Use branch_checked_out() in 'git branch -f' to demonstrate this
helper works as expected.
3. Use branch_checked_out() in 'git fetch' when checking refs that would be
updated by the refspec. Add tests for that scenario, too.
4. Use branch_checked_out() in 'git branch -D' to prevent deleting refs
from under an existing checkout. The commit message here describes some
barriers to removing other uses of find_shared_symref() that could be
good investigations for later.Thanks, -Stolee
Derrick Stolee (4): branch: add branch_checked_out() helper branch: check for bisects and rebases fetch: use new branch_checked_out() and add tests branch: use branch_checked_out() when deleting refs
branch.c | 77 +++++++++++++++++++++++++++++++++---- branch.h | 8 ++++ builtin/branch.c | 8 ++-- builtin/fetch.c | 25 ++++++------ t/t2407-worktree-heads.sh | 81 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 173 insertions(+), 26 deletions(-) create mode 100755 t/t2407-worktree-heads.sh
base-commit: 2668e3608e47494f2f10ef2b6e69f08a84816bcb Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1254%2Fderrickstolee%2Fbranch-checked-out-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1254/derrickstolee/branch-checked-out-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/1254
-- gitgitgadget