Draft
Conversation
dee8094 (doc: add an explanation of Git's data model, 2025-11-12) added gitdatamodel(7), documenting Git’s data model. But it is not mentioned anywhere. Let’s start by listing it under Guides in git(1) and with `git help --guides`. Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> Signed-off-by: Junio C Hamano <gitster@pobox.com>
The previous commit added the first mention of gitdatamodel(7) here, under Guides. But there are also other sections where a mention is relevant. Let’s mention it: • under Description, since it is as useful as the other tutorials already mentioned there for those who are interested; • under Terminology, since it complements gitglossary(7) as a pedagogical rather than reference source for the core terms;[1] and • under See Also, since the other tutorials (plus the user manual) are mentioned there. We don’t need to mention it under Further Documentation since we now mention it under Description. † 1: See dee8094 (doc: add an explanation of Git's data model, 2025-11-12): `gitglossary`. This makes a good effort, but it's an alphabetically ordered dictionary and a dictionary is not a good way to learn concepts. You have to jump around too much and it's not possible to present the concepts in the order that they should be explained. Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Four of the terms in the glossary are discussed in gitdatamodel(7). Let’s link to the data model page from the glossary. The phrasing needs to be tweaked based on what gitdatamodel(7) offers for each term compared to the glossary, or even other pages (see the git-reflog(1) mention). For instance, the ref/reference discussion can be called a “see also” since the glossary here already goes into detail. On the other hand, gitdatamodel(7) offers more details on the subject of “the index”. Let’s also add gitdatamodel(7) to See Also. It is at least as relevant as the other tutorial pages that are already mentioned. Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> Signed-off-by: Junio C Hamano <gitster@pobox.com>
We linked from the glossary to the data model page in the last commit. It can also be useful to link the other way for readers who might want to reference more terminology. Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> Signed-off-by: Junio C Hamano <gitster@pobox.com>
The reftable code has been optimized to avoid an unnecessary stat/reload of the stack when an addition already holds the list_file lock, reducing the number of newfstatat syscalls from linear to constant when writing refs. * kn/reftable-optimize-reloading: reftable/stack: avoid reloading the stack when already locked reftable/stack: move list lock to `struct reftable_stack` reftable/stack: rename reftable_stack_new_addition() reftable/stack: remove `REFTABLE_STACK_NEW_ADDITION_RELOAD`
'git checkout' and 'git worktree add' makes guesses based on a name of a remote-tracking branch, but does not give an error when such a remote-tracking branch cannot be uniquely identified, which has been corrected. * yn/worktree-ambiguous-remote-advice: worktree add: treat multiple matches with --guess-remote as an error worktree add: improve message for ambiguous remote branch name checkout: improve message for ambiguous remote branch name checkout: extract function to display advice for ambiguous remotes
The instructions for deprecated commands emitted by you_still_use_that() have been reworded to clarify that the removal decision is final and to provide more assertive guidance on finding a replacement. * jc/you-still-use-that: you_still_use_that(): reword the instructions
The application of the edited patch in 'git add -e' has been refactored to use the internal apply API directly, avoiding the need to spawn a 'git apply' subprocess. * gr/add-e-use-apply-api: builtin/add.c: replace run_command() with direct apply_all_patches() call
The zsh completion script (in 'contrib/') has been updated to correctly locate the Git command after global options like '-C' by properly skipping them, similar to how the bash completion does. * ll/zsh-complete-git-potty-options: completion: zsh: support completion after "git -C <path>"
The git worktree repair command failed to rewrite the .git file of a working tree from a relative path to an absolute path when the command was run in the working tree itself. The read_gitfile_gently() function was modified to also return whether the path originally recorded in the file was absolute, and this new capability is used to correctly detect such mismatches. * yn/worktree-repair-relative: worktree repair: detect relative path in .git file correctly
A few tests for the reference handling subsystem have been added to exercise the handling of forbidden characters and symbolic references. * ns/ref-symref-additional-tests: t1402: test forbidden characters in refnames t1401: check symbolic-ref failure and --quiet silence on a non-symbolic ref
GitHub Actions CI workflow runs triggered by pull requests have been configured to cancel older runs when a new push is made to the same pull request. * hn/ci-cancel-stale-pr-runs: ci: cancel stale pull request workflow runs
The string extraction logic for the branch name and worktree name from the given path in 'git worktree add' has been corrected and simplified to avoid out-of-bounds reads and improper handling of trailing slashes. * rs/worktree-add-basename-fixes: worktree add: let worktree_basename() return string copy worktree add: trim slashes when deriving branch name from path worktree add: reject separator-only path worktree add: don't read out of bounds in worktree_basename()
Various spelling mistakes in comments and test descriptions have been corrected. * hk/typofix: versioncmp: fix typo in versioncmp.c, t/t0022-crlf-rename.sh
The 'git replay' command has been taught the '--linearize' option to drop merge commits and linearize the replayed history, mimicking 'git rebase --no-rebase-merges'. * tc/replay-linearize: replay: offer an option to linearize the commit topology replay: resolve the replay base outside pick_regular_commit() replay: add helper to put entry into replayed_commits
The memory ownership of argv elements passed to the revision machinery has been made more robust by keeping logically "freed" elements alive until the rev_info struct is released, preventing use-after-free bugs when options store references to them. * jk/rev-info-argv-to-free: revision: simplify mark_argv_for_free() callers revision: hang on to "freed" argv elements
The object lookup machinery has been taught to gracefully recover when a multi-pack-index points to an owning pack that was removed during a concurrent geometric repack, and 'git replay' has been fixed to not segfault when reading such missing objects. * en/midx-missing-pack-fallback: packfile: recover when a multi-pack-index names a removed pack mktree: do not use OBJECT_INFO_QUICK when checking objects mktree: plug per-tree leak in --batch mode replay: fail gracefully when a merge input is unreadable
The CI job that builds the documentation failed because it lacked the 'gem' command. The 'asciidoc' package apparently stopped pulling in the 'ruby' package as a transitive dependency. The CI script has been updated to explicitly install 'ruby'. * ps/ci-depends-on-ruby: ci: fix missing Ruby dependency in "documentation" job
CGI helper scripts used by HTTP-related test scripts have been updated to use atomic filesystem operations, preventing race conditions when Apache handles concurrent requests. * mm/lib-httpd-cgi-safe: t/lib-httpd: document writing concurrency-safe CGI helpers t/lib-httpd: make http-429 first-request check atomic t/lib-httpd: fix apply-one-time-script race under concurrent requests
The gitdatamodel documentation page has been linked from a handful of key documentaiton pages. * kh/doc-datamodel: doc: datamodel: link to the glossary doc: glossary: link four of the terms to gitdatamodel(7) doc: git: link to the gitdatamodel(7) tutorial doc: git: list gitdatamodel(7) as a concept guide
The autostash fallback in 'git checkout -m' has been refined to only retry when there are local changes. Additionally, a blank line now visually separates autostash conflict advice from the subsequent branch-switch message. * hn/checkout-m-autostash-refine: checkout: separate autostash conflict advice from branch-switch message stash: reserve exit status 1 for conflicts
Teach 'am', 'revert', and 'rebase' that running 'commit --amend' or a partial 'commit <paths>' makes no sense during operations that stop and return control to the user to resolve conflicts left in the working tree, just like 'cherry-pick' and 'merge' do. * en/no-amend-during-conflicts: commit: refuse partial commits during conflict resolution commit: refuse to amend during conflict resolution commit: reword the empty-commit rebase amend error commit: allow a partial commit when a rebase pick becomes empty commit: clarify FROM_REBASE_PICK and is_from_rebase() names
The 'git imap-send' command has been taught to take the '--draft' option to mark uploaded messages as drafts, which helps some email clients render them properly for editing and sending. * wf/imap-send-draft: imap-send: add --draft to set IMAP \Draft flag
The CI script to install dependencies for the documentation build has been updated to install asciidoctor directly via the system package manager instead of pinning to an older version via gem. Additionally, an obsolete variable used for retired Azure Pipelines environments has been removed. * jk/ci-use-system-asciidoctor: ci: drop ALREADY_HAVE_ASCIIDOCTOR variable ci: fix missing Ruby dependency in "documentation" job
The error path in 'git submodule--helper' has been updated to plug a memory leak when a repository handle could not be obtained, leveraging an updated idempotent repo_clear(). * jk/submodule-error-leak: submodule--helper: free URL when repository setup fails repository: make repo_clear() idempotent
Two members in "struct pathspec_item" were of type "char *", but nobody updated the string through these pointers. They have been made "const char *" instead. * jc/pathspec-match-const: pathspec: match and original in pathspec_item are const
The pathspec matching logic has been updated to avoid out-of-bounds memory accesses when a negative pathspec is shorter than the common prefix of positive pathspecs. * yt/pathspec-negative-prefix: dir: find common prefix among non-exclude pathspec items dir: do not apply prefix to negative pathspecs
"git maintenance" triggered "rerere gc" in unappropriate times and interfered with "git rebase" etc. too much. The conditions "rerere gc" gets triggered have been tweaked. * ps/tune-rerere-gc: builtin/maintenance: improve heuristic for "rerere gc" rerere: extract logic to determine whether entries are stale
Running "git history" in a corrupt repository can (unsurprisingly) segfault when a necessary tree object is not found. * jc/history-missing-tree-errorfix: history: do not dereference NULL when parent tree is missing
* jk/object-size-hooks: index-pack: summarily reject non-blobs over warn-object-size receive-pack: pass receive.warnobjectsize to index-pack index-pack: Implement `--warn-object-size` index-pack: set up quarantine bits # Conflicts: # builtin/index-pack.c
Code moved to object-file.c (and we need to pass size via opts).
* jk/pager-in-use-careful: pager_in_use: make sure output is still going to pager
* jk/quiet-advice: receive-pack: disable hook advice in "quiet" mode
* jk/ref-syntax-tighten: refs: check refnames as fully qualified when resolving refs: check refnames as fully qualified when writing check_refname_format(): add FULLY_QUALIFIED flag refs: use is_root_ref_syntax() in refname_is_safe() refs: disallow dash in root ref syntax t0610: pass fully qualified branch name to update-ref t5619: use fully qualified refname for branch t0600: fix misplaced top-level ref
* jk/ref-syntax-tighten-more: refs: enforce name conventions for root refs t: adjust root refs that violate syntax rules t1400: swap out PSEUDOREF for ROOT_HEAD t9300: follow root ref syntax for TEMP_TAG t1401: avoid pointless use of root ref
* jk/ref-syntax-tighten-symref: update-ref: verify stdin refnames as fully qualified refs: check syntax of symref target t1400: fix broken target of symref update symbolic-ref: tighten syntax check of target refname t0614: use test-tool to create garbage symref t3200: fully qualify symref destination refs: check syntax of symbolic ref names refs: take transaction flags for symref updates
* jk/rename-progress: diff: turn on rename detection progress reporting show: turn on rename detection progress reporting progress: use pager's original_stderr if available pager: save the original stderr when redirecting to pager
* jk/stash-show-prefix: revision: simplify mark_argv_for_free() callers revision: hang on to "freed" argv elements
* jk/string-list-cleanups: shortlog: initialize mailmap stuff mailmap into struct mailmap: another case of raw initialization mailmap: another case of pointless strdup_strings setting mailmap: prefer initializer to manual strdup_string set mailmap: drop manual setting of strdup_strings another initializer use a few more initializer uses notes: put string_list directly in struct drop a funky strdup_strings-then-clear case convert to union convert shortlog to hash shortlog: use initializer function for string_lists shortlog: avoid tricky strdup-before-clear string_list construct shortlog: drop redundant assignment of strdup_strings shortlog: drop redundant shortlog struct initialization
This is due to an interaction with my jk/mailmap-trailers topic.
* jk/submodule-remote-leak: submodule--helper: free URL when repository setup fails repository: make repo_clear() idempotent
* jk/symlink-out-of-tree: optionally block out-of-repo symlinks
* jk/textconv-utf16:
diff: enable autoencode by default
diff: add autoencode feature
diff: add utf-{16,32} binary detection
diff: convert filespec is_binary flag to enum
diff: respect diff_options inside get_textconv()
userdiff: give textconv its own struct
fill_textconv: always check DIFF_FILE_VALID()
* jk/trace-curl-redact: curl: handle non-http protocols in trace
* jk/trace-stdin: run-command config experiment trace: add GIT_TRACE_STDIN trace: add pid to each output line trace: implement %p placeholder for filenames
* jk/update-ref-rename: teach update-ref a "--rename" option
* jk/warn-ignored-object: fast-export: leave warnings to revision code prepare_revision_walk: complain of unused objects
Co-authored-by: peff <45925+peff@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix failing GitHub Actions job for debian-11
Remove expired Debian 11 CI job
Sep 5, 2026
peff
force-pushed
the
private
branch
2 times, most recently
from
September 6, 2026 14:57
25100ff to
b83e4d7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
debian-11 (debian:11)Actions job failed during dependency installation because Debian’s expired Bullseye security repository returned 404 forlibperl5.32.