What's cooking in git.git (Jul 2022, #01; Fri, 1)
Here are the topics that have been cooking in my tree. Commits prefixed with '+' are in 'next' (being in 'next' is a sign that a topic is stable enough to be used and are candidate to be in a future release). Commits prefixed with '-' are only in 'seen', and aren't considered "accepted" at all.
Git 2.37 final was released, many in the northan hemisphere are about to be in summer vacation week. We probably will have a small update 2.37.1 near mid July to deal with a small "regression" in 2.37 but otherwise things are expected to be slow, and slow is good ;-)
Copies of the source code to Git live in many repositories, and the following is a list of the ones I push into or their mirrors. Some repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/ git://repo.or.cz/alt-git.git/ https://kernel.googlesource.com/pub/scm/git/git/ https://github.com/git/git/ https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format are not sources, they are published in these repositories for convenience (replace "htmldocs" with "manpages" for the manual pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[New Topics]
* ds/git-rebase-doc-markup (2022-06-30) 1 commit
- git-rebase.txt: use back-ticks consistently
Correct "git rebase" documentation mark-up.
Will merge to 'next'.
source: <[email protected]>
* ds/rebase-update-ref (2022-06-28) 8 commits
- rebase: add rebase.updateRefs config option
- rebase: update refs from 'update-ref' commands
- rebase: add --update-refs option
- sequencer: add update-ref command
- sequencer: define array with enum values
- rebase-interactive: update 'merge' description
- branch: consider refs under 'update-refs'
- t2407: test branches currently using apply backend (this branch uses ds/branch-checked-out.)
"git rebase -i" learns to update branches whose tip appear in the rebased range.
Will merge to 'next'?
source: <[email protected]>
* ds/vscode-settings (2022-06-27) 1 commit
- vscode: improve tab size and wrapping
source: <[email protected]>
* js/add-i-delete (2022-06-28) 1 commit
(merged to 'next' on 2022-06-28 at 8ac04bfd24)
+ add --interactive: allow update to stage deleted files
Rewrite of "git add -i" in C that appeared in Git 2.25 didn't correctly record a removed file to the index, which was fixed.
Will merge to 'master'.
source: <[email protected]>
* tb/pack-objects-remove-pahole-comment (2022-06-28) 1 commit
- pack-objects.h: remove outdated pahole results
Comment fix.
Will merge to 'next'.
source: <1379af2e9d271b501ef3942398e7f159a9c77973.1656440978.git.me@ttaylorr.com>
* ab/leakfix (2022-07-01) 11 commits
- pull: fix a "struct oid_array" memory leak
- cat-file: fix a common "struct object_context" memory leak
- gc: fix a memory leak
- checkout: avoid "struct unpack_trees_options" leak
- merge-file: fix memory leaks on error path
- merge-file: refactor for subsequent memory leak fix
- cat-file: fix a memory leak in --batch-command mode
- revert: free "struct replay_opts" members
- submodule.c: free() memory from xgetcwd()
- clone: fix memory leak in wanted_peer_refs()
- check-ref-format: fix trivial memory leak
Plug various memory leaks.
source: <[email protected]>
* ab/test-tool-leakfix (2022-07-01) 9 commits
- test-tool delta: fix a memory leak
- test-tool ref-store: fix a memory leak
- test-tool bloom: fix memory leaks
- test-tool json-writer: fix memory leaks
- test-tool regex: call regfree(), fix memory leaks
- test-tool urlmatch-normalization: fix a memory leak
- test-tool {dump,scrap}-cache-tree: fix memory leaks
- test-tool path-utils: fix a memory leak
- test-tool test-hash: fix a memory leak
Plug various memory leaks in test-tool commands.
source: <[email protected]>
* en/t6429-test-must-be-empty-fix (2022-06-30) 1 commit
- t6429: fix use of non-existent function
A test fix.
Will merge to 'next'.
source: <[email protected]>
* gc/submodule-use-super-prefix (2022-06-30) 8 commits
- submodule--helper: remove display path helper
- submodule--helper update: use --super-prefix
- submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
- submodule--helper: use correct display path helper
- submodule--helper: don't recreate recursive prefix
- submodule--helper update: use display path helper
- submodule--helper tests: add missing "display path" coverage
- Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix (this branch uses ab/submodule-cleanup.)
Another step to rewrite more parts of "git submodule" in C.
Will merge to 'next'?
source: <[email protected]>
* hx/lookup-commit-in-graph-fix (2022-06-30) 1 commit
- commit-graph.c: no lazy fetch in lookup_commit_in_graph()
A corner case bug where lazily fetching objects from a promisor remote resulted in infinite recursion has been corrected.
Will merge to 'next'.
source: <96d4bb71505d87ed501c058bbd89bfc13d08b24a.1656593279.git.hanxin.hx@bytedance.com>
* ll/ls-files-tests-update (2022-07-01) 1 commit
- ls-files: update test style
Test update.
Will merge to 'next'.
source: <[email protected]>
* pw/xdiff-alloc (2022-06-30) 3 commits
- xdiff: introduce XDL_ALLOC_GROW()
- xdiff: introduce XDL_CALLOC_ARRAY()
- xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part, to make it easier to share with the libgit2 project.
Waiting for review responses.
source: <[email protected]>
* sy/mv-out-of-cone (2022-07-01) 8 commits
- mv: add check_dir_in_index() and solve general dir check issue
- mv: use flags mode for update_mode
- mv: check if <destination> exists in index to handle overwriting
- mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
- mv: decouple if/else-if checks using goto
- mv: update sparsity after moving from out-of-cone to in-cone
- t1092: mv directory from out-of-cone to in-cone
- t7002: add tests for moving out-of-cone file/directory
"git mv A B" in a sparsely populated working tree can be asked to move a path between directories that are "in cone" (i.e. expected to be materialized in the working tree) and "out of cone" (i.e. expected to be hidden). The handling of such cases has been improved.
Will merge to 'next'.
source: <[email protected]>
--------------------------------------------------
[Stalled]
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <[email protected]>
source: <[email protected]>
* cw/remote-object-info (2022-05-06) 11 commits
- SQUASH??? coccicheck
- SQUASH??? ensure that coccicheck is happy
- SQUASH??? compilation fix
- cat-file: add --batch-command remote-object-info command
- cat-file: move parse_cmd and DEFAULT_FORMAT up
- transport: add object-info fallback to fetch
- transport: add client side capability to request object-info
- object-info: send attribute packet regardless of object ids
- object-store: add function to free object_info contents
- fetch-pack: move fetch default settings
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
source: <[email protected]>
--------------------------------------------------
[Cooking]
* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit . trace2: don't include "fsync" events in all trace2 logs
Omit fsync-related trace2 entries when their values are all zero.
Breaks tests in hx/unpack-streaming with an interesting interaction.
source: <[email protected]>
* cl/grep-max-count (2022-06-22) 1 commit
- grep: add --max-count command line option
"git grep -m<max-hits>" is a way to limit the hits shown per file.
Will merge to 'next'.
source: <[email protected]>
* jk/revisions-doc-markup-fix (2022-06-22) 1 commit
- revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
Documentation mark-up fix.
Will merge to 'next'.
source: <[email protected]>
* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
- rev-parse: documentation adjustment - mention remote tracking with @{u}
Doc update.
Will merge to 'next'.
source: <[email protected]>
* en/merge-tree (2022-06-22) 17 commits
- git-merge-tree.txt: add a section on potentional usage mistakes
- merge-tree: add a --allow-unrelated-histories flag
- merge-tree: allow ls-files -u style info to be NUL terminated
- merge-ort: optionally produce machine-readable output
- merge-ort: store more specific conflict information
- merge-ort: make path_messages a strmap to a string_list
- merge-ort: store messages in a list, not in a single strbuf
- merge-tree: provide easy access to ls-files -u style info
- merge-tree: provide a list of which files have conflicts
- merge-ort: remove command-line-centric submodule message from merge-ort
- merge-ort: provide a merge_get_conflicted_files() helper function
- merge-tree: support including merge messages in output
- merge-ort: split out a separate display_update_messages() function
- merge-tree: implement real merges
- merge-tree: add option parsing and initial shell for real merge function
- merge-tree: move logic for existing merge into new function
- merge-tree: rename merge_trees() to trivial_merge_trees()
A new command is introduced that takes two commits and computes a tree that would be contained in the resulting merge commit, if the histories leading to these two commits were to be merged, and is added as a new mode of "git merge-tree" subcommand.
Will merge to 'next'.
source: <[email protected]>
* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
- i18n: mark message helpers prefix for translation
Give _() markings to fatal/warning/usage: that is shown in front of these messages.
Will merge to 'next'.
source: <[email protected]>
* ds/t5510-brokequote (2022-06-21) 1 commit
- t5510: replace 'origin' with URL more carefully
Test fix.
source: <[email protected]>
* en/merge-restore-to-pristine (2022-06-21) 6 commits
- merge: do not exit restore_state() prematurely
- merge: ensure we can actually restore pre-merge state
- merge: make restore_state() restore staged state too
- merge: fix save_state() to work when there are racy-dirty files
- merge: remove unused variable
- t6424: make sure a failed merge preserves local changes
When "git merge" finds that it cannot perform a merge, it should restore the working tree to the state before the command was initiated, but in some corner cases it didn't.
Needs review.
source: <[email protected]>
* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
- combine-diff: abort if --output is given
- combine-diff: abort if --ignore-matching-lines is given
Certain diff options are currently ignored when combined-diff is shown; mark them as incompatible with the feature.
Will merge to 'next'.
source: <[email protected]>
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a case-insensitive filesystem.
Needs review.
source: <[email protected]>
* zh/ls-files-format (2022-06-27) 1 commit
- ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Expecting a reroll.
cf. <CAOLTT8Tc95-aUE+uN2d8QjTJpGpGw6cBJfG+bpmyE55OcXTSRA@mail.gmail.com>
source: <[email protected]>
* ab/test-quoting-fix (2022-06-30) 3 commits
- config tests: fix harmless but broken "rm -r" cleanup
- test-lib.sh: fix prepend_var() quoting issue
- tests: add missing double quotes to included library paths
Fixes for tests when the source directory has unusual characters in its path, e.g. whitespaces, double-quotes, etc.
Will merge to 'next'.
source: <[email protected]>
* en/merge-dual-dir-renames-fix (2022-06-30) 5 commits
- merge-ort: fix issue with dual rename and add/add conflict
- merge-ort: shuffle the computation and cleanup of potential collisions
- merge-ort: make a separate function for freeing struct collisions
- merge-ort: small cleanups of check_for_directory_rename
- t6423: add tests of dual directory rename plus add/add conflict
Fixes a long-standing corner case bug around directory renames in the merge-ort strategy.
Will merge to 'next'?
source: <[email protected]>
* cr/setup-bug-typo (2022-06-17) 1 commit
(merged to 'next' on 2022-06-17 at 8834ffe0ab)
+ setup: fix function name in a BUG() message
Typofix in a BUG() message.
Will cook in 'next'.
source: <[email protected]>
* zk/push-use-bitmaps (2022-06-17) 1 commit
- send-pack.c: add config push.useBitmaps
"git push" sometimes perform poorly when reachability bitmaps are used, even in a repository where other operations are helped by bitmaps. The push.useBitmaps configuration variable is introduced to allow disabling use of reachability bitmaps only for "git push".
Will merge to 'next'.
source: <[email protected]>
* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
- remote: handle negative refspecs in git remote show (this branch is used by jk/t5505-restructure.)
"git remote show [-n] frotz" now pays attention to negative pathspecs.
Will merge to 'next'.
source: <[email protected]>
* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
- commit-graph: refactor to avoid prepare_repo_settings
Expecting a reroll.
source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>
* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit (merged to 'next' on 2022-06-16 at ce0712a74c)
+ is_promisor_object(): walk promisor packs in pack-order
Collection of what is referenced by objects in promisor packs have been optimized to inspect these objects in the in-pack order.
Will cook in 'next'.
source: <[email protected]>
* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
- mktree: do not check type of remote objects
"git mktree --missing" lazily fetched objects that are missing from the local object store, which was totally unnecessary.
Will merge to 'next'.
source: <[email protected]>
* ll/curl-accept-language (2022-06-13) 2 commits
- PREP??? give initializer to rpc_state
- remote-curl: send Accept-Language header to server
source: <[email protected]>
* pb/diff-doc-raw-format (2022-06-13) 3 commits
- diff-index.txt: update raw output format in examples
- diff-format.txt: correct misleading wording
- diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
source: <[email protected]>
* rs/archive-with-internal-gzip (2022-06-15) 6 commits (merged to 'next' on 2022-06-17 at ab5af6acd1)
+ archive-tar: use internal gzip by default
+ archive-tar: use OS_CODE 3 (Unix) for internal gzip
+ archive-tar: add internal gzip implementation
+ archive-tar: factor out write_block()
+ archive: rename archiver data field to filter_command
+ archive: update format documentation
Teach "git archive" to (optionally and then by default) avoid spawning an external "gzip" process when creating ".tar.gz" (and ".tgz") archives.
Will cook in 'next'.
source: <[email protected]>
* ds/branch-checked-out (2022-06-21) 7 commits (merged to 'next' on 2022-06-21 at e42bc4566f)
+ branch: drop unused worktrees variable
+ fetch: stop passing around unused worktrees variable (merged to 'next' on 2022-06-17 at c881874257)
+ branch: fix branch_checked_out() leaks
+ branch: use branch_checked_out() when deleting refs
+ fetch: use new branch_checked_out() and add tests
+ branch: check for bisects and rebases
+ branch: add branch_checked_out() helper (this branch is used by ds/rebase-update-ref.)
Introduce a helper to see if a branch is already being worked on (hence should not be newly checked out in a working tree), which performs much better than the existing find_shared_symref() to replace many uses of the latter.
Will cook in 'next'.
source: <[email protected]>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the objects it obtained from the other side, but it is not necessarily because the remote failed to send necessary objects. Reword the messages in an attempt to help users explore other possibilities when they hit this error.
Expecting a reroll.
source: <[email protected]>
* ab/submodule-cleanup (2022-06-28) 12 commits
- git-sh-setup.sh: remove "say" function, change last users
- git-submodule.sh: use "$quiet", not "$GIT_QUIET"
- submodule--helper: eliminate internal "--update" option
- submodule--helper: understand --checkout, --merge and --rebase synonyms
- submodule--helper: report "submodule" as our name in some "-h" output
- submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
- submodule update: remove "-v" option
- submodule--helper: have --require-init imply --init
- git-submodule.sh: remove unused top-level "--branch" argument
- git-submodule.sh: make the "$cached" variable a boolean
- git-submodule.sh: remove unused $prefix variable
- git-submodule.sh: remove unused sanitize_submodule_env() (this branch is used by gc/submodule-use-super-prefix.)
Further preparation to turn git-submodule.sh into a builtin.
Will merge to 'next'.
source: <[email protected]>
* jc/resolve-undo (2022-06-09) 1 commit
(merged to 'next' on 2022-06-15 at c195e5a2d9)
+ revision: mark blobs needed for resolve-undo as reachable
The resolve-undo information in the index was not protected against GC, which has been corrected.
Will cook in 'next'.
source: <[email protected]>
* ab/build-gitweb (2022-06-28) 8 commits
- gitweb/Makefile: add a "NO_GITWEB" parameter
- Makefile: build 'gitweb' in the default target
- gitweb/Makefile: include in top-level Makefile
- gitweb: remove "test" and "test-installed" targets
- gitweb/Makefile: prepare to merge into top-level Makefile
- gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
- gitweb/Makefile: add a $(GITWEB_ALL) variable
- gitweb/Makefile: define all .PHONY prerequisites inline
Teach "make all" to build gitweb as well.
source: <[email protected]>
* ab/test-without-templates (2022-06-06) 7 commits
- tests: don't assume a .git/info for .git/info/sparse-checkout
- tests: don't assume a .git/info for .git/info/exclude
- tests: don't assume a .git/info for .git/info/refs
- tests: don't assume a .git/info for .git/info/attributes
- tests: don't assume a .git/info for .git/info/grafts
- tests: don't depend on template-created .git/branches
- t0008: don't rely on default ".git/info/exclude"
Tweak tests so that they still work when the "git init" template did not create .git/info directory.
Will merge to 'next'?
source: <[email protected]>
* ac/bitmap-format-doc (2022-06-16) 3 commits
(merged to 'next' on 2022-06-16 at 5591d11601)
+ bitmap-format.txt: add information for trailing checksum
+ bitmap-format.txt: fix some formatting issues
+ bitmap-format.txt: feed the file to asciidoc to generate html
Adjust technical/bitmap-format to be formatted by AsciiDoc, and add some missing information to the documentation.
Will cook in 'next'.
source: <[email protected]>
* hx/unpack-streaming (2022-06-13) 6 commits
- unpack-objects: use stream_loose_object() to unpack large objects
- core doc: modernize core.bigFileThreshold documentation
- object-file.c: add "stream_loose_object()" to handle large object
- object-file.c: factor out deflate part of write_loose_object()
- object-file.c: refactor write_loose_object() to several steps
- unpack-objects: low memory footprint for get_data() in dry_run mode
Allow large objects read from a packstream to be streamed into a loose object file straight, without having to keep it in-core as a whole.
Will merge to 'next'.
source: <[email protected]>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with --count
- builtin/show-ref.c: rename found_match to matches_nr
"git show-ref" learned to stop after emitting N refs with the new "--count=N" option.
Expecting a reroll.
cf. <[email protected]>
source: <[email protected]>
* ds/bundle-uri-more (2022-06-06) 6 commits
- fetch: add 'refs/bundle/' to log.excludeDecoration
- bundle-uri: add support for http(s):// and file://
- fetch: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <[email protected]>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over .git/head-name files
- bisect: remove Cogito-related code
- Turn git bisect into a full built-in
- bisect: move even the command-line parsing to bisect--helper
- bisect: teach the bisect--helper command to show the correct usage strings
- bisect--helper: return only correct exit codes in cmd_*()
- bisect--helper: move the BISECT_STATE case to the end
- bisect--helper: make --bisect-state optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using --bisect-state without an argument is a bug
- bisect--helper: really retire --bisect-autostart
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
source: <[email protected]>
* gc/bare-repo-discovery (2022-06-30) 5 commits
- setup.c: create discovery.bare
- safe.directory: use git_protected_config()
- config: learn git_protected_config()
- Documentation: define protected configuration
- Documentation/git-config.txt: add SCOPES section
Introduce a discovery.barerepository configuration variable that allows users to forbid discovery of bare repositories.
Will merge to 'next'?
source: <[email protected]>
* gg/worktree-from-the-above (2022-06-21) 2 commits
- dir: minor refactoring / clean-up
- dir: traverse into repository
With a non-bare repository, with core.worktree pointing at a directory that has the repository as its subdirectory, regressed in Git 2.27 days.
Will merge to 'next'.
source: <[email protected]>
source: <[email protected]>
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
- send-email: always confirm by default
"git send-email" is changed so that by default it asks for confirmation before sending each message out.
Will discard.
I wanted to like this, and had it in the version of Git I use myself for daily work, but the prompting turned out to be somewhat distracting.
Thoughts?
source: <[email protected]>
gc/submodule-use-super-prefix & ab/submodule-cleanup (was: What's cooking in git.git (Jul 2022, #01; Fri, 1))
Quoted 15 lines · Junio C Hamano
* gc/submodule-use-super-prefix (2022-06-30) 8 commits
- submodule--helper: remove display path helper
- submodule--helper update: use --super-prefix
- submodule--helper: remove unusedSUPPORT_SUPER_PREFIXflags
- submodule--helper: use correct display path helper
- submodule--helper: don't recreate recursive prefix
- submodule--helper update: use display path helper
- submodule--helper tests: add missing "display path" coverage
- Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix (this branch uses ab/submodule-cleanup.)Another step to rewrite more parts of "git submodule" in C.
Will merge to 'next'?
source: <[email protected]>
[...]
Quoted 15 lines
* ab/submodule-cleanup (2022-06-28) 12 commits
-git-sh-setup.sh: remove "say" function, change last users
-git-submodule.sh: use "$quiet", not "$GIT_QUIET"
- submodule--helper: eliminate internal "--update" option
- submodule--helper: understand --checkout, --merge and --rebase synonyms
- submodule--helper: report "submodule" as our name in some "-h" output
- submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
- submodule update: remove "-v" option
- submodule--helper: have --require-init imply --init
-git-submodule.sh: remove unused top-level "--branch" argument
-git-submodule.sh: make the "$cached" variable a boolean
-git-submodule.sh: remove unused $prefix variable
-git-submodule.sh: remove unusedsanitize_submodule_env()(this branch is used by gc/submodule-use-super-prefix.)
Quoted 4 lines
Further preparation to turn
git-submodule.shinto a builtin.Will merge to 'next'.
source: <[email protected]>
Thanks, with regards to gc/submodule-use-super-prefix that series gets my enthusiastic (if it helps):
Likewise the ab/submodule-cleanup parent topic has Glen's:
Per [1] and [2]. I.e. the latest is the v4, but the Reviewed-By was given to v3 in [1], and [4] notes on v4 that the one remaining concern was addressed.
Thanks both, it's great to see us this close to getting rid of another *.sh built-in. I plan to submit the migration to the builtin/submodule.c after these two land, possibly after some memory leak fixes to builtin/submodule--helper.c.
1. https://lore.kernel.org/git/[email protected]/
2. https://lore.kernel.org/git/[email protected]/
Re: gc/submodule-use-super-prefix & ab/submodule-cleanup (was: What's cooking in git.git (Jul 2022, #01; Fri, 1))
Quoted 53 lines · Ævar Arnfjörð Bjarmason
Quoted 15 lines · Junio C Hamano
* gc/submodule-use-super-prefix (2022-06-30) 8 commits
- submodule--helper: remove display path helper
- submodule--helper update: use --super-prefix
- submodule--helper: remove unusedSUPPORT_SUPER_PREFIXflags
- submodule--helper: use correct display path helper
- submodule--helper: don't recreate recursive prefix
- submodule--helper update: use display path helper
- submodule--helper tests: add missing "display path" coverage
- Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix (this branch uses ab/submodule-cleanup.)Another step to rewrite more parts of "git submodule" in C.
Will merge to 'next'?
source: <[email protected]>[...]
Quoted 15 lines
* ab/submodule-cleanup (2022-06-28) 12 commits
-git-sh-setup.sh: remove "say" function, change last users
-git-submodule.sh: use "$quiet", not "$GIT_QUIET"
- submodule--helper: eliminate internal "--update" option
- submodule--helper: understand --checkout, --merge and --rebase synonyms
- submodule--helper: report "submodule" as our name in some "-h" output
- submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
- submodule update: remove "-v" option
- submodule--helper: have --require-init imply --init
-git-submodule.sh: remove unused top-level "--branch" argument
-git-submodule.sh: make the "$cached" variable a boolean
-git-submodule.sh: remove unused $prefix variable
-git-submodule.sh: remove unusedsanitize_submodule_env()(this branch is used by gc/submodule-use-super-prefix.)Quoted 4 lines
Further preparation to turn
git-submodule.shinto a builtin.Will merge to 'next'.
source: <[email protected]>Thanks, with regards to gc/submodule-use-super-prefix that series gets my enthusiastic (if it helps):
Reviewed-by Ævar Arnfjörð Bjarmason <[email protected]>Likewise the ab/submodule-cleanup parent topic has Glen's:
Reviewed-by Glen Choo <[email protected]>Per [1] and [2]. I.e. the latest is the v4, but the Reviewed-By was given to v3 in [1], and [4] notes on v4 that the one remaining concern was addressed.
Quoted 7 lines
Thanks both, it's great to see us this close to getting rid of another *.sh built-in. I plan to submit the migration to the
builtin/submodule.cafter these two land, possibly after some memory leak fixes tobuiltin/submodule--helper.c.1. https://lore.kernel.org/git/[email protected]/
2. https://lore.kernel.org/git/[email protected]/
Yup, I think this is an accurate summary of both topics.
Likewise, I'm really excited to get rid of another *.sh built-in. Thanks!
ds/rebase-update-re (was Re: What's cooking in git.git (Jul 2022, #01; Fri, 1))
In reply to Junio C HamanoQuoted 11 lines · Junio C Hamano
* ds/rebase-update-ref (2022-06-28) 8 commits
- rebase: add rebase.updateRefs config option
- rebase: update refs from 'update-ref' commands
- rebase: add --update-refs option
- sequencer: add update-ref command
- sequencer: define array with enum values
- rebase-interactive: update 'merge' description
- branch: consider refs under 'update-refs'
- t2407: test branches currently using apply backend (this branch uses ds/branch-checked-out.)
Quoted 5 lines
"git rebase -i" learns to update branches whose tip appear in the rebased range.
Will merge to 'next'?
source: <[email protected]>
Please expect at least one more re-roll. Here are the things I intend to fix in the next re-roll, which should arrive sometime this week.
* Some commit message tweaks.
* Actually interrupt 'git bisect' and 'git rebase' in the tests.
* Be careful to update the update-refs file when the user edits the todo file.
* Consider storing the "before" values in the update-refs file and removing refs whose update-ref steps were removed by the user.
* Elijah had a question about focusing on "pick" actions, not "fixup" or "squash" steps. This might be worth marking the option as experimental so we have flexibility in changing the behavior as new workflows are tested against this option.
* Elijah also had some optimization ideas, but I'm not sure if we should prioritize them here or have them as future improvements after the feature is stable.
Thanks,
-Stolee
Re: ds/rebase-update-re (was Re: What's cooking in git.git (Jul 2022, #01; Fri, 1))
Thanks for a heads-up. I thought that all of you were supposed to be off this week, by the way ;-)?
Re: ds/rebase-update-re (was Re: What's cooking in git.git (Jul 2022, #01; Fri, 1))
In reply to Derrick StoleeQuoted 24 lines · Derrick Stolee
Quoted 11 lines · Junio C Hamano
* ds/rebase-update-ref (2022-06-28) 8 commits
- rebase: add rebase.updateRefs config option
- rebase: update refs from 'update-ref' commands
- rebase: add --update-refs option
- sequencer: add update-ref command
- sequencer: define array with enum values
- rebase-interactive: update 'merge' description
- branch: consider refs under 'update-refs'
- t2407: test branches currently using apply backend (this branch uses ds/branch-checked-out.)Quoted 5 lines
"git rebase -i" learns to update branches whose tip appear in the rebased range.
Will merge to 'next'?
source: <[email protected]>Please expect at least one more re-roll. Here are the things I intend to fix in the next re-roll, which should arrive sometime this week.
Quoted 7 lines
* Some commit message tweaks.
* Actually interrupt 'git bisect' and 'git rebase' in the tests.
* Be careful to update the update-refs file when the user edits the todo file.
* Consider storing the "before" values in the update-refs file and removing refs whose update-ref steps were removed by the user.
First half sounds good to me. Not sure I understand the second half about "removing refs"; do you mean actually deleting the ref, or just not updating it, or something else?
Quoted 4 lines
* Elijah had a question about focusing on "pick" actions, not "fixup" or "squash" steps. This might be worth marking the option as experimental so we have flexibility in changing the behavior as new workflows are tested against this option.
This sounds good to me. I do sometimes want to fixup or squash into a commit that a branch I depend upon directly points to, so I'm worried your feature may update refs incorrectly without this support.
Quoted 3 lines
* Elijah also had some optimization ideas, but I'm not sure if we should prioritize them here or have them as future improvements after the feature is stable.
You know, thinking about it more, with every single commit, sequencer already updates the index, the working tree, HEAD, and *several* control files. So these optimizations would probably just be lost in the noise. Unless we restructure sequencer.c, it may not be worth implementing these ideas at all. Either way, I'd say this certainly shouldn't hold up this series.
Re: ds/rebase-update-re (was Re: What's cooking in git.git (Jul 2022, #01; Fri, 1))
Quoted 33 lines · Elijah Newren
Quoted 24 lines · Derrick Stolee
Quoted 11 lines · Junio C Hamano
* ds/rebase-update-ref (2022-06-28) 8 commits
- rebase: add rebase.updateRefs config option
- rebase: update refs from 'update-ref' commands
- rebase: add --update-refs option
- sequencer: add update-ref command
- sequencer: define array with enum values
- rebase-interactive: update 'merge' description
- branch: consider refs under 'update-refs'
- t2407: test branches currently using apply backend (this branch uses ds/branch-checked-out.)Quoted 5 lines
"git rebase -i" learns to update branches whose tip appear in the rebased range.
Will merge to 'next'?
source: <[email protected]>Please expect at least one more re-roll. Here are the things I intend to fix in the next re-roll, which should arrive sometime this week.
Quoted 7 lines
* Some commit message tweaks.
* Actually interrupt 'git bisect' and 'git rebase' in the tests.
* Be careful to update the update-refs file when the user edits the todo file.
* Consider storing the "before" values in the update-refs file and removing refs whose update-ref steps were removed by the user.
Quoted 3 lines
First half sounds good to me. Not sure I understand the second half about "removing refs"; do you mean actually deleting the ref, or just not updating it, or something else?
I mean removing it from the $GIT_DIR/rebase-merge/update-refs file so it is no longer blocking others from using it (and the value in the file can be used for a --force-with-lease type update).
Quoted 8 lines
Quoted 4 lines
* Elijah had a question about focusing on "pick" actions, not "fixup" or "squash" steps. This might be worth marking the option as experimental so we have flexibility in changing the behavior as new workflows are tested against this option.
This sounds good to me. I do sometimes want to fixup or squash into a commit that a branch I depend upon directly points to, so I'm worried your feature may update refs incorrectly without this support.
I've been using this quite a bit in my own work, and it properly moves fixups and squashes into the right branches, but I've only done that with fixups and squashes on the tip branch, not inside the earlier branches. It's also been really good when I rebase and add "break" or "edit" steps and do really complicated commit squashing or splitting operations.
I'll try to collect some example runs, but it would also help a great deal if you added these patches to your local version of Git and try it own in your workflow. Use the rebase.updateRefs=true config setting so you don't need to think about it. Victoria has been testing this for me in her own workflows, so maybe she has ideas here.
Thanks,
-Stolee
en/merge-dual-dir-renames-fix (Was: Re: What's cooking in git.git (Jul 2022, #01; Fri, 1))
In reply to Junio C HamanoQuoted 7 lines · Junio C Hamano
* en/merge-dual-dir-renames-fix (2022-06-30) 5 commits
- merge-ort: fix issue with dual rename and add/add conflict
- merge-ort: shuffle the computation and cleanup of potential collisions
- merge-ort: make a separate function for freeing struct collisions
- merge-ort: small cleanups ofcheck_for_directory_rename
- t6423: add tests of dual directory rename plus add/add conflict
Quoted 5 lines
Fixes a long-standing corner case bug around directory renames in the merge-ort strategy.
Will merge to 'next'?
source: <[email protected]>
Ævar pointed out a for-initializer that shouldn't yet be used since we've only used that in a "weather balloon" so far. Let me send in a re-roll to fix that one issue before you merge down.
gc/bare-repo-discovery (was Re: What's cooking in git.git (Jul 2022, #01; Fri, 1))
In reply to Junio C HamanoQuoted 7 lines · Junio C Hamano
* gc/bare-repo-discovery (2022-06-30) 5 commits
-setup.c: creatediscovery.bare
- safe.directory: usegit_protected_config()
- config: learngit_protected_config()
- Documentation: define protected configuration
-Documentation/git-config.txt: add SCOPES section
Quoted 5 lines
Introduce a discovery.barerepository configuration variable that allows users to forbid discovery of bare repositories.
Will merge to 'next'?
source: <[email protected]>
I'll send a reroll soon. Taylor Blau left a bunch of great comments/suggestions that I intend to address (though I don't think any of them were meant to be blocking?)
Re: gc/bare-repo-discovery (was Re: What's cooking in git.git (Jul 2022, #01; Fri, 1))
Quoted 12 lines · Glen Choo
Quoted 10 lines · Junio C Hamano
* gc/bare-repo-discovery (2022-06-30) 5 commits
-setup.c: creatediscovery.bare
- safe.directory: usegit_protected_config()
- config: learngit_protected_config()
- Documentation: define protected configuration
-Documentation/git-config.txt: add SCOPES sectionIntroduce a discovery.barerepository configuration variable that allows users to forbid discovery of bare repositories.
Quoted 6 lines
Quoted 2 lines
Will merge to 'next'?
source: <[email protected]>I'll send a reroll soon. Taylor Blau left a bunch of great comments/suggestions that I intend to address (though I don't think any of them were meant to be blocking?)
OK. I too found Taylor's comments very helpful.
Thanks for a status update.