{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":385586,"defaultBranch":"master","name":"git","ownerLogin":"gitster","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2009-11-25T19:20:49.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/54884?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1717787957.0","currentOid":""},"activityList":{"items":[{"before":"cd77e87115eab5e80e6b161e7b84a79ba1a12cdc","after":"1b76f065085811104b5f4adff001956d7e5c5d1c","ref":"refs/heads/master","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"push","commitsCount":9,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Merge branch 'tb/midx-write-cleanup'\n\nCode clean-up around writing the .midx files.\n\n* tb/midx-write-cleanup:\n pack-bitmap.c: reimplement `midx_bitmap_filename()` with helper\n midx: replace `get_midx_rev_filename()` with a generic helper\n midx-write.c: support reading an existing MIDX with `packs_to_include`\n midx-write.c: extract `fill_packs_from_midx()`\n midx-write.c: extract `should_include_pack()`\n midx-write.c: pass `start_pack` to `compute_sorted_entries()`\n midx-write.c: reduce argument count for `get_sorted_entries()`\n midx-write.c: tolerate `--preferred-pack` without bitmaps","shortMessageHtmlLink":"Merge branch 'tb/midx-write-cleanup'"}},{"before":"65d85ed2df62228f95f76d29c4b4b1af673620f6","after":"30db2b7ed641201c7d828e8bfbe36034aedb3155","ref":"refs/heads/rj/format-patch-auto-cover-with-interdiff","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"format-patch: assume --cover-letter for diff in multi-patch series\n\nWhen we deal with a multi-patch series in git-format-patch(1), if we see\n`--interdiff` or `--range-diff` but no `--cover-letter`, we return with\nan error, saying:\n\n fatal: --range-diff requires --cover-letter or single patch\n\nor:\n\n fatal: --interdiff requires --cover-letter or single patch\n\nThis makes sense because the cover-letter is where we place the diff\nfrom the previous version.\n\nHowever, considering that `format-patch` generates a multi-patch as\nneeded, let's adopt a similar \"cover as necessary\" approach when using\n`--interdiff` or `--range-diff`.\n\nTherefore, relax the requirement for an explicit `--cover-letter` in a\nmulti-patch series when the user says `--iterdiff` or `--range-diff`.\n\nStill, if only to return the error, respect \"format.coverLetter=no\" and\n`--no-cover-letter`.\n\nSigned-off-by: Rubén Justo \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"format-patch: assume --cover-letter for diff in multi-patch series"}},{"before":"6d8b6b9e62702d7b82ca0d58cec08de0002455b6","after":"6d352733aa91de80348c691f757d4793aaa16dc8","ref":"refs/heads/seen","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Merge branch 'tb/incremental-midx-part-1' into seen\n\nIncremental updates of multi-pack index files.\n\n* tb/incremental-midx-part-1:\n midx: implement support for writing incremental MIDX chains\n t/t5313-pack-bounds-checks.sh: prepare for sub-directories\n t: retire 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'\n midx: implement verification support for incremental MIDXs\n midx: support reading incremental MIDX chains\n midx: teach `midx_fanout_add_midx_fanout()` about incremental MIDXs\n midx: teach `midx_preferred_pack()` about incremental MIDXs\n midx: teach `midx_contains_pack()` about incremental MIDXs\n midx: remove unused `midx_locate_pack()`\n midx: teach `fill_midx_entry()` about incremental MIDXs\n midx: teach `nth_midxed_offset()` about incremental MIDXs\n midx: teach `bsearch_midx()` about incremental MIDXs\n midx: introduce `bsearch_one_midx()`\n midx: teach `nth_bitmapped_pack()` about incremental MIDXs\n midx: teach `nth_midxed_object_oid()` about incremental MIDXs\n midx: teach `prepare_midx_pack()` about incremental MIDXs\n midx: teach `nth_midxed_pack_int_id()` about incremental MIDXs\n midx: add new fields for incremental MIDX chains\n Documentation: describe incremental MIDX format","shortMessageHtmlLink":"Merge branch 'tb/incremental-midx-part-1' into seen"}},{"before":"e467db82927b6665d21e51da0cf9a35df7bf9b5e","after":"6e00b44043562061c602e280f609c5e856c00fbe","ref":"refs/heads/ps/ci-use-Og-in-some-jobs","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"ci: compile \"linux-gcc-default\" job with -Og\n\nWe have recently noticed that our CI does not always notice variables\nthat may be used uninitialized. While it is expected that compiler\nwarnings aren't perfect, this one was a bit puzzling because it was\nrather obvious that the variable can be uninitialized.\n\nMany compiler warnings unfortunately depend on the optimization level\nused by the compiler. While `-O0` for example will disable a lot of\nwarnings altogether because optimization passes go away, `-O2`, which is\nour default optimization level used in CI, may optimize specific code\naway or even double down on undefined behaviour. Interestingly, this\nspecific instance that triggered the investigation does get noted by GCC\nwhen using `-Og`.\n\nWhile we could adapt all jobs to compile with `-Og` now, that would\npotentially mask other warnings that only get diagnosed with `-O2`.\nInstead, adapt the \"linux-gcc-default\" job to compile with `-Og`. This\njob is chosen because it uses the \"ubuntu:latest\" image and should thus\nhave a comparatively recent compiler toolchain, and because we have\nother jobs that use \"ubuntu:latest\" so that we do not lose coverage for\nwarnings diagnosed only on `-O2` level.\n\nTo make it easier to set up the optimization level in our CI, add\nsupport in our Makefile to specify the level via an environment\nvariable.\n\nSigned-off-by: Patrick Steinhardt \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"ci: compile \"linux-gcc-default\" job with -Og"}},{"before":"958f1ca681cda425727a84ec054c022739875c2c","after":"7a2c4fd46401958fd2318772bab8a8f1d5d0b288","ref":"refs/heads/next","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Sync with 'master'","shortMessageHtmlLink":"Sync with 'master'"}},{"before":"5e722c4ca49d77292e98cb62ae17183445b693ca","after":"7dd4051b014741732271785c0915599b1f0c1a47","ref":"refs/heads/kn/update-ref-symref","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"update-ref: add support for 'symref-update' command\n\nAdd 'symref-update' command to the '--stdin' mode of 'git-update-ref' to\nallow updates of symbolic refs. The 'symref-update' command takes in a\n, which the will be updated to. If the doesn't\nexist it will be created.\n\nIt also optionally takes either an `ref ` or `oid\n`. If the is provided, it checks to see if the\n targets the before the update. If is provided\nit checks to ensure that it is a regular ref and is the\nOID before the update. This by extension also means that this when a\nzero is provided, it ensures that the ref didn't exist before.\n\nThe divergence in syntax from the regular `update` command is because if\nwe don't use a `(ref | oid)` prefix for the old_value, then there is\nambiguity around if the value provided should be treated as an oid or a\nreference. This is more so the reason, because we allow anything\ncommittish to be provided as an oid. While 'symref-verify' and\n'symref-delete' also take in `` we do not have this\ndivergence there as those commands only work with symrefs. Whereas\n'symref-update' also works with regular refs and allows users to convert\nregular refs to symrefs.\n\nThe command allows users to perform symbolic ref updates within a\ntransaction. This provides atomicity and allows users to perform a set\nof operations together.\n\nThis command supports deref mode, to ensure that we can update\ndereferenced regular refs to symrefs.\n\nHelped-by: Patrick Steinhardt \nHelped-by: Junio C Hamano \nSigned-off-by: Karthik Nayak \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"update-ref: add support for 'symref-update' command"}},{"before":null,"after":"8981dca8bc717d7656f28fc375b513b91b365360","ref":"refs/heads/tb/commit-graph-use-tempfile","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"server-info.c: remove temporary info files on exit\n\nThe update_info_file() function within server-info.c is responsible for\nmoving the info/refs and info/packs files around when updating server\ninfo.\n\nThese updates are staged into a temporary file and then moved into place\natomically to avoid race conditions when reading those files. However,\nthe temporary file used to stage these changes is managed outside of the\ntempfile.h API, and thus survives process death.\n\nManage these files instead with the tempfile.h API so that they are\nautomatically cleaned up upon abnormal process death.\n\nUnfortunately, and unlike in the previous step, there isn't a\nstraightforward way to inject a failure into the update-server-info step\nthat causes us to die() rather than take the cleanup path in label\n'out', hence the lack of a test here.\n\nSigned-off-by: Taylor Blau \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"server-info.c: remove temporary info files on exit"}},{"before":"69d3b51a01987354b31c82a7c9f16ad5ed47e34a","after":"9001f4012e12d898a32fe604f27ef7a808725fb4","ref":"refs/heads/jch","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Merge branch 'jc/heads-are-branches' into jch\n\nThe \"--heads\" option of \"ls-remote\" and \"show-ref\" has been been\ndeprecated; \"--branches\" replaces \"--heads\".\n\nComments?\n\n* jc/heads-are-branches:\n show-ref: introduce --branches and deprecate --heads\n ls-remote: introduce --branches and deprecate --heads\n refs: call branches branches","shortMessageHtmlLink":"Merge branch 'jc/heads-are-branches' into jch"}},{"before":null,"after":"aaa3dc817dd973f443ac0ff62f0cf4256204a3c0","ref":"refs/heads/db/date-underflow-fix","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"date: detect underflow/overflow when parsing dates with timezone offset\n\nOverriding the date of a commit to be close to \"1970-01-01 00:00:00\"\nwith a large enough positive timezone for the equivelant GMT time to be\nbefore the epoch is considered valid by `parse_date_basic`. Similar\nbehaviour occurs when using a date close to \"2099-12-31 23:59:59\" (the\nmaximum date allowed by `tm_to_time_t`) with a large enough negative\ntimezone offset.\n\nThis leads to an integer underflow or underflow respectively in the\ncommit timestamp, which is not caught by `git-commit`, but will cause\nother services to fail, such as `git-fsck`, which, for the first case,\nreports \"badDateOverflow: invalid author/committer line - date causes\ninteger overflow\".\n\nInstead check the timezone offset and fail if the resulting time comes\nbefore the epoch \"1970-01-01T00:00:00Z\" or after the maximum date\n\"2099-12-31T23:59:59Z\".\n\nSigned-off-by: Darcy Burke \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"date: detect underflow/overflow when parsing dates with timezone offset"}},{"before":null,"after":"c20fc296db95b1fd4e370066e8b91bb581d9e08c","ref":"refs/heads/tb/incremental-midx-part-1","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"midx: implement support for writing incremental MIDX chains\n\nNow that the rest of the MIDX subsystem and relevant callers have been\nupdated to learn about how to read and process incremental MIDX chains,\nlet's finally update the implementation in `write_midx_internal()` to be\nable to write incremental MIDX chains.\n\nThis new feature is available behind the `--incremental` option for the\n`multi-pack-index` builtin, like so:\n\n $ git multi-pack-index write --incremental\n\nThe implementation for doing so is relatively straightforward, and boils\ndown to a handful of different kinds of changes implemented in this\npatch:\n\n - The `compute_sorted_entries()` function is taught to reject objects\n which appear in any existing MIDX layer.\n\n - Functions like `write_midx_revindex()` are adjusted to write\n pack_order values which are offset by the number of objects in the\n base MIDX layer.\n\n - The end of `write_midx_internal()` is adjusted to move\n non-incremental MIDX files when necessary (i.e. when creating an\n incremental chain with an existing non-incremental MIDX in the\n repository).\n\nThere are a handful of other changes that are introduced, like new\nfunctions to clear incremental MIDX files that are unrelated to the\ncurrent chain (using the same \"keep_hash\" mechanism as in the\nnon-incremental case).\n\nThe tests explicitly exercising the new incremental MIDX feature are\nrelatively limited for two reasons:\n\n 1. Most of the \"interesting\" behavior is already thoroughly covered in\n t5319-multi-pack-index.sh, which handles the core logic of reading\n objects through a MIDX.\n\n The new tests in t5334-incremental-multi-pack-index.sh are mostly\n focused on creating and destroying incremental MIDXs, as well as\n stitching their results together across layers.\n\n 2. A new GIT_TEST environment variable is added called\n \"GIT_TEST_MULTI_PACK_INDEX_WRITE_INCREMENTAL\", which modifies the\n entire test suite to write incremental MIDXs after repacking when\n combined with the \"GIT_TEST_MULTI_PACK_INDEX\" variable.\n\n This exercises the long tail of other interesting behavior that is\n defined implicitly throughout the rest of the CI suite. It is\n likewise added to the linux-TEST-vars job.\n\nSigned-off-by: Taylor Blau \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"midx: implement support for writing incremental MIDX chains"}},{"before":"33b6aee3f48c70d0278cb4137266ac009e332ec1","after":"d66fe0726bfb3fb1e3665f7e64b160440007d98e","ref":"refs/heads/ps/no-writable-strings","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"config.mak.dev: enable `-Wwrite-strings` warning\n\nWriting to string constants is undefined behaviour and must be avoided\nin C. Even so, the compiler does not help us with this by default\nbecause those constants are not in fact marked as `const`. This makes it\nrather easy to accidentally assign a constant to a non-const variable or\nfield and then later on try to either free it or write to it.\n\nEnable `-Wwrite-strings` to catch such mistakes. With this warning\nenabled, the type of string constants is changed to `const char[]` and\nwill thus cause compiler warnings when being assigned to non-const\nfields and variables.\n\nSigned-off-by: Patrick Steinhardt \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"config.mak.dev: enable -Wwrite-strings warning"}},{"before":"ccca85dfe1e69b4e10b1c6bb3c3263f93cf2f5f1","after":"e3d2364c45bd8350e737faa6d0e2fbe2e583b03a","ref":"refs/heads/jk/imap-send-plug-all-msgs-leak","pushedAt":"2024-06-07T19:19:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"imap-send: free all_msgs strbuf in \"out\" label\n\nWe read stdin into a strbuf, but most code paths never release it,\ncausing a leak (albeit a minor one, as we leak only when exiting from\nthe main function of the program).\n\nCommit 56f4f4a29d (imap-send: minimum leakfix, 2024-06-04) did the\nminimum to plug the one instance we see in the test suite, when we read\nan empty input. But it was sufficient only because aside from this noop\ninvocation, we don't test imap-send at all!\n\nThe right spot to free is in the \"out\" label, which is hit by all code\npaths before leaving the function. We couldn't do that in 56f4f4a29d\nbecause there was no unified exit path. That came separately in\n3aca5f7fb0 (imap-send: fix leaking memory in `imap_server_conf`,\n2024-06-04), which cleaned up many other leaks (but not this one).\n\nSigned-off-by: Jeff King \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"imap-send: free all_msgs strbuf in \"out\" label"}},{"before":"6ca5d8d1a0ffec38a04c5e53ceed557d0fcf7a64","after":"27db485c34392df4fe6fbaf57a43f15bd7bf4a36","ref":"refs/heads/ap/credential-clear-fix","pushedAt":"2024-06-06T20:50:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"credential: clear expired c->credential, unify secret clearing\n\nWhen a struct credential expires, credential_fill() clears c->password\nso that clients don't try to use it later. However, a struct cred that\nuses an alternate authtype won't have a password, but might have a\ncredential stored in c->credential.\n\nThis is a problem, for example, when an OAuth2 bearer token is used. In\nthe system I'm using, the OAuth2 configuration generates and caches a\nbearer token that is valid for an hour. After the token expires, git\nneeds to call back into the credential helper to use a stored refresh\ntoken to get a new bearer token. But if c->credential is still non-NULL,\ngit will instead try to use the expired token and fail with an error:\n\n fatal: Authentication failed for 'https:///repository'\n\nAnd on the server:\n\n [auth_openidc:error] [client :34012] oidc_proto_validate_exp: \"exp\" validation failure (1717522989): JWT expired 224 seconds ago\n\nFix this by clearing both c->password and c->credential for an expired\nstruct credential. While we're at it, use credential_clear_secrets()\nwherever both c->password and c->credential are being cleared.\n\nUpdate comments in credential.h to mention the new struct fields.\n\nSigned-off-by: Aaron Plattner \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"credential: clear expired c->credential, unify secret clearing"}},{"before":null,"after":"2900d70cb985ff8233e22317865d46ae7261a817","ref":"refs/heads/tb/pseudo-merge-reachability-bitmap-fixes","pushedAt":"2024-06-06T20:50:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"pack-bitmap.c: ensure pseudo-merge offset reads are bounded\n\nAfter reading the pseudo-merge extension's metadata table, we allocate\nan array to store information about each pseudo-merge, including its\nbyte offset within the .bitmap file itself.\n\nThis is done like so:\n\n pseudo_merge_ofs = index_end - 24 -\n (index->pseudo_merges.nr * sizeof(uint64_t));\n for (i = 0; i < index->pseudo_merges.nr; i++) {\n index->pseudo_merges.v[i].at = get_be64(pseudo_merge_ofs);\n pseudo_merge_ofs += sizeof(uint64_t);\n }\n\nBut if the pseudo-merge table is corrupt, we'll keep calling get_be64()\npast the end of the pseudo-merge extension, potentially reading off the\nend of the mmap'd region.\n\nPrevent this by ensuring that we have at least `table_size - 24` many\nbytes available to read (subtracting 24 as the length of the metadata\ncomponent).\n\nThis is sufficient to prevent us from reading off the end of the\npseudo-merge extension, and ensures that all of the get_be64() calls\nbelow are in bounds.\n\nHelped-by: Jeff King \nSigned-off-by: Taylor Blau \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"pack-bitmap.c: ensure pseudo-merge offset reads are bounded"}},{"before":"9791293e21ea41e84eb915208ab81f67bf6b8392","after":"69d3b51a01987354b31c82a7c9f16ad5ed47e34a","ref":"refs/heads/jch","pushedAt":"2024-06-06T20:50:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Merge branch 'jc/heads-are-branches' into jch\n\nThe \"--heads\" option of \"ls-remote\" and \"show-ref\" has been been\ndeprecated; \"--branches\" replaces \"--heads\".\n\nComments?\n\n* jc/heads-are-branches:\n show-ref: introduce --branches and deprecate --heads\n ls-remote: introduce --branches and deprecate --heads\n refs: call branches branches","shortMessageHtmlLink":"Merge branch 'jc/heads-are-branches' into jch"}},{"before":"b7c5b1f1ca4f4ed9d4e9e9a2c316beeb3ad88f3c","after":"6d8b6b9e62702d7b82ca0d58cec08de0002455b6","ref":"refs/heads/seen","pushedAt":"2024-06-06T20:50:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Merge branch 'tb/pseudo-merge-reachability-bitmap-fixes' into seen\n\n* tb/pseudo-merge-reachability-bitmap-fixes:\n pack-bitmap.c: ensure pseudo-merge offset reads are bounded\n Documentation/technical/bitmap-format.txt: add missing position table","shortMessageHtmlLink":"Merge branch 'tb/pseudo-merge-reachability-bitmap-fixes' into seen"}},{"before":"dd2eb8cad419143d6806239019fa87cfc179dfe2","after":"958f1ca681cda425727a84ec054c022739875c2c","ref":"refs/heads/next","pushedAt":"2024-06-06T20:50:45.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Sync with 'master'","shortMessageHtmlLink":"Sync with 'master'"}},{"before":"7b0defb3915eaa0bd118f0996e8c00b4eb2dc1ca","after":"cd77e87115eab5e80e6b161e7b84a79ba1a12cdc","ref":"refs/heads/master","pushedAt":"2024-06-06T20:50:45.000Z","pushType":"push","commitsCount":27,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"The eleventh batch\n\nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"The eleventh batch"}},{"before":"429d8534787540e14d600f8a0bdc9451fd3d792f","after":"25a0023f28600102f54e7529c20da5928c3e9c75","ref":"refs/heads/ps/ref-storage-migration","pushedAt":"2024-06-06T18:25:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"builtin/refs: new command to migrate ref storage formats\n\nIntroduce a new command that allows the user to migrate a repository\nbetween ref storage formats. This new command is implemented as part of\na new git-refs(1) executable. This is due to two reasons:\n\n - There is no good place to put the migration logic in existing\n commands. git-maintenance(1) felt unwieldy, and git-pack-refs(1) is\n not the correct place to put it, either.\n\n - I had it in my mind to create a new low-level command for accessing\n refs for quite a while already. git-refs(1) is that command and can\n over time grow more functionality relating to refs. This should help\n discoverability by consolidating low-level access to refs into a\n single executable.\n\nAs mentioned in the preceding commit that introduces the ref storage\nformat migration logic, the new `git refs migrate` command still has a\nbunch of restrictions. These restrictions are documented accordingly.\n\nSigned-off-by: Patrick Steinhardt \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"builtin/refs: new command to migrate ref storage formats"}},{"before":"f307bbf7bd317d90db29bd1589b49e84b9e37e88","after":"33b6aee3f48c70d0278cb4137266ac009e332ec1","ref":"refs/heads/ps/no-writable-strings","pushedAt":"2024-06-06T18:25:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"config.mak.dev: enable `-Wwrite-strings` warning\n\nWriting to string constants is undefined behaviour and must be avoided\nin C. Even so, the compiler does not help us with this by default\nbecause those constants are not in fact marked as `const`. This makes it\nrather easy to accidentally assign a constant to a non-const variable or\nfield and then later on try to either free it or write to it.\n\nEnable `-Wwrite-strings` to catch such mistakes. With this warning\nenabled, the type of string constants is changed to `const char[]` and\nwill thus cause compiler warnings when being assigned to non-const\nfields and variables.\n\nSigned-off-by: Patrick Steinhardt \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"config.mak.dev: enable -Wwrite-strings warning"}},{"before":null,"after":"62c71ace4449df4b22a5d568f3699238ea032495","ref":"refs/heads/jk/am-retry","pushedAt":"2024-06-06T18:25:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"test-terminal: drop stdin handling\n\nSince 18d8c26930 (test_terminal: redirect child process' stdin to a pty,\n2015-08-04), we set up a pty and copy stdin to the child program. But\nthis ends up being racy; once we send all of the bytes and close the\ndescriptor, the child program will no longer see a terminal! isatty()\nwill return 0, and trying to read may return EIO, even if we didn't yet\nget all of the bytes.\n\nThis was mentioned even in the commit message of 18d8c26930, but we\nhacked around it by just sending an infinite input from /dev/zero (in\nthe intended case, we only cared about isatty(0), not reading actual\ninput).\n\nAnd it came up again recently in:\n\n https://lore.kernel.org/git/d42a55b1-1ba9-4cfb-9c3d-98ea4d86da33@gmail.com/\n\nwhere we tried to actually send bytes, but they don't always all come\nthrough. So this interface is somewhat of an accident waiting to happen;\na caller might not even care about stdin being a tty, but will get bit\nby the flaky behavior.\n\nOne solution would probably be to avoid closing test_terminal's end of\nthe pty altogether. But then the other side would never see EOF on its\nstdin. That may be OK for some cases, but it's another gotcha that\nmight cause races or deadlocks, depending on what the child expects to\nread.\n\nLet's instead just drop test_terminal's stdin feature completely. Since\nthe previous commit dropped the two cases from t4153 for which the\nfeature was originally added, there are no callers left that need it.\n\nSigned-off-by: Jeff King \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"test-terminal: drop stdin handling"}},{"before":"db7aa704eccad20d4fc0b73f88bd191d9ad9e656","after":"9791293e21ea41e84eb915208ab81f67bf6b8392","ref":"refs/heads/jch","pushedAt":"2024-06-06T18:25:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Merge branch 'jc/heads-are-branches' into jch\n\nThe \"--heads\" option of \"ls-remote\" and \"show-ref\" has been been\ndeprecated; \"--branches\" replaces \"--heads\".\n\nComments?\n\n* jc/heads-are-branches:\n show-ref: introduce --branches and deprecate --heads\n ls-remote: introduce --branches and deprecate --heads\n refs: call branches branches","shortMessageHtmlLink":"Merge branch 'jc/heads-are-branches' into jch"}},{"before":"bc4c301e50de79783607da4768d5b62198578028","after":"b7c5b1f1ca4f4ed9d4e9e9a2c316beeb3ad88f3c","ref":"refs/heads/seen","pushedAt":"2024-06-06T18:25:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Merge branch 'jc/add-i-retire-usebuiltin-config' into seen\n\nFor over a year, setting add.interactive.useBuiltin configuration\nvariable did nothing but giving a \"this does not do anything\"\nwarning. Finally remove it.\n\nComments?\n\n* jc/add-i-retire-usebuiltin-config:\n add-i: finally retire add.interactive.useBuiltin","shortMessageHtmlLink":"Merge branch 'jc/add-i-retire-usebuiltin-config' into seen"}},{"before":"e0b56c6b3f4ec672c3e2333ee31c4cc069669495","after":"ccca85dfe1e69b4e10b1c6bb3c3263f93cf2f5f1","ref":"refs/heads/jk/imap-send-plug-all-msgs-leak","pushedAt":"2024-06-06T18:25:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"imap-send: free all_msgs strbuf in \"out\" label\n\nWe read stdin into a strbuf, but most code paths never release it,\ncausing a leak (albeit a minor one, as we leak only when exiting from\nthe main function of the program).\n\nCommit 56f4f4a29d (imap-send: minimum leakfix, 2024-06-04) did the\nminimum to plug the one instance we see in the test suite, when we read\nan empty input. But it was sufficient only because aside from this noop\ninvocation, we don't test imap-send at all!\n\nThe right spot to free is in the \"out\" label, which is hit by all code\npaths before leaving the function. We couldn't do that in 56f4f4a29d\nbecause there was no unified exit path. That came separately in\n3aca5f7fb0 (imap-send: fix leaking memory in `imap_server_conf`,\n2024-06-04), which cleaned up many other leaks (but not this one).\n\nSigned-off-by: Jeff King \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"imap-send: free all_msgs strbuf in \"out\" label"}},{"before":"2467011532840d57e8c4754c8bc452c59ff2a4d6","after":"dd2eb8cad419143d6806239019fa87cfc179dfe2","ref":"refs/heads/next","pushedAt":"2024-06-06T18:25:48.000Z","pushType":"push","commitsCount":17,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Merge branch 'gt/decorate-unit-test' into next\n\nA test helper that essentially is unit tests on the \"decorate\"\nlogic has been rewritten using the unit-tests framework.\n\n* gt/decorate-unit-test:\n t/: migrate helper/test-example-decorate to the unit testing framework","shortMessageHtmlLink":"Merge branch 'gt/decorate-unit-test' into next"}},{"before":null,"after":"df651330ab947d6a950c9cf9a976b56b07d6c2be","ref":"refs/heads/ps/ci-fix-detection-of-ubuntu-20","pushedAt":"2024-06-06T18:25:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"ci: fix check for Ubuntu 20.04\n\nIn 5ca0c455f1 (ci: fix Python dependency on Ubuntu 24.04, 2024-05-06),\nwe made the use of Python 2 conditional on whether or not the CI job\nruns Ubuntu 20.04. There was a brown-paper-bag-style bug though, where\nthe condition forgot to invoke the `test` builtin. The result of it is\nthat the check always fails, and thus all of our jobs run with Python 3\nby accident.\n\nFix this.\n\nSigned-off-by: Patrick Steinhardt \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"ci: fix check for Ubuntu 20.04"}},{"before":null,"after":"e467db82927b6665d21e51da0cf9a35df7bf9b5e","ref":"refs/heads/ps/ci-use-Og-in-some-jobs","pushedAt":"2024-06-06T18:25:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"ci: compile \"linux-gcc-default\" job with -Og\n\nWe have recently noticed that our CI does not always notice variables\nthat may be used uninitialized. While it is expected that compiler\nwarnings aren't perfect, this one was a but puzzling because it was\nrather obvious that the variable can be uninitialized.\n\nMany compiler warnings unfortunately depend on the optimization level\nused by the compiler. While `-O0` for example will disable a lot of\nwarnings altogether because optimization passes go away, `-O2`, which is\nour default optimization level used in CI, may optimize specific code\naway or even double down on undefined behaviour. Interestingly, this\nspecific instance that triggered the investigation does get noted by GCC\nwhen using `-Og`.\n\nWhile we could adapt all jobs to compile with `-Og` now, that would\npotentially mask other warnings that only get diagnosed with `-O2`.\nInstead, adapt the \"linux-gcc-default\" job to compile with `-Og`. This\njob is chosen because it uses the \"ubuntu:latest\" image and should thus\nhave a comparatively recent compiler toolchain, and because we have\nother jobs that use \"ubuntu:latest\" so that we do not loose coverage for\nwarnings diagnosed only on `-O2` level.\n\nTo make it easier to set up the optimization level in our CI, add\nsupport in our Makefile to specify the level via an environment\nvariable.\n\nSigned-off-by: Patrick Steinhardt \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"ci: compile \"linux-gcc-default\" job with -Og"}},{"before":"f641ad157ba39c1c099f5a01aaf32fc4b9c01a60","after":"f60fec6a1665891e50b94ff553b4165fe8ab3f2d","ref":"refs/heads/ps/check-docs-fix","pushedAt":"2024-06-06T18:25:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"ci/test-documentation: work around SyntaxWarning in Python 3.12\n\nIn Python 3.6, unrecognized escape sequences in regular expressions\nstarted to produce a DeprecationWarning [1]. In Python 3.12, this was\nupgraded to a SyntaxWarning and will eventually be raised even further\nto a SyntaxError. We indirectly hit such unrecognized escape sequences\nvia Asciidoc, which results in a bunch of warnings:\n\n $ asciidoc -o /dev/null git-cat-file.txt\n :1: SyntaxWarning: invalid escape sequence '\\S'\n :1: SyntaxWarning: invalid escape sequence '\\S'\n\nThis in turn causes our \"ci/test-documentation.sh\" script to fail, as it\nchecks that stderr of `make doc` is empty.\n\nThese escape sequences seem to be part of Asciidoc itself. In the long\nterm, we should probably consider dropping support for Asciidoc in favor\nof Asciidoctor. Upstream also considers itself to be legacy software and\nrecommends to move away from it [2]:\n\n It is suggested that unless you specifically require the AsciiDoc.py\n toolchain, you should find a processor that handles the modern\n AsciiDoc syntax.\n\nFor now though, let's expand its lifetime a little bit more by filtering\nout these new warnings. We should probably reconsider once the warnings\nare upgraded to errors by Python.\n\n[1]: https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals\n[2]: https://github.com/asciidoc-py/asciidoc-py/blob/6d9f76cff0dc3b7ca21bdd570200f8518464d99b/README.md#asciidocpy\n\nSigned-off-by: Patrick Steinhardt \nSigned-off-by: Junio C Hamano ","shortMessageHtmlLink":"ci/test-documentation: work around SyntaxWarning in Python 3.12"}},{"before":"cb3ee7b759ae89b072c34b29a886252ece3101e9","after":"bc4c301e50de79783607da4768d5b62198578028","ref":"refs/heads/seen","pushedAt":"2024-06-06T06:13:02.000Z","pushType":"push","commitsCount":34,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"Merge branch 'jk/imap-send-plug-all-msgs-leak' into seen\n\nA leak in \"git imap-send\" that somehow escapes LSan has been\nplugged.\n\n* jk/imap-send-plug-all-msgs-leak:\n imap-send: free all_msgs strbuf in \"out\" label","shortMessageHtmlLink":"Merge branch 'jk/imap-send-plug-all-msgs-leak' into seen"}},{"before":"732308452642f532a4c3f7b31fdbddc84350bf3b","after":"f307bbf7bd317d90db29bd1589b49e84b9e37e88","ref":"refs/heads/ps/no-writable-strings","pushedAt":"2024-06-06T06:13:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gitster","name":"Junio C Hamano","path":"/gitster","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/54884?s=80&v=4"},"commit":{"message":"fixup! object-file: mark cached object buffers as const","shortMessageHtmlLink":"fixup! object-file: mark cached object buffers as const"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEX4hbTwA","startCursor":null,"endCursor":null}},"title":"Activity · gitster/git"}