{"push_id":3684755754,"size":23,"distinct_size":23,"ref":"refs/heads/pu","head":"84689a12155dab9f48dba7a2fd9bff0c1b05964c","before":"65bfcca6d046e6c38da3dec6c262359e1a84c740","commits":[{"sha":"481de8a293bfaa5425ea4dc5ac70aaf3081a3be8","author":{"name":"Elijah Newren","email":"955405675e5ddb1a110d200661c528aa223ef60f@gmail.com"},"message":"merge-recursive: restore accidentally dropped setting of path\n\nIn commit 8daec1df03de (\"merge-recursive: switch from (oid,mode) pairs\nto a diff_filespec\", 2019-04-05), we actually switched from\n(oid,mode,path) triplets to a diff_filespec -- but most callsites in the\npatch only needed to worry about oid and mode so the commit message\nfocused on that.  The oversight in the commit message apparently spilled\nover to the code as well; one of the dozen or so callsites accidentally\ndropped the setting of the path in the conversion.  Restore the path\nsetting in that location.\n\nAlso, this pointed out that our testsuite was lacking a good rename/add\ntest, at least one that involved the need for merge content with the\nrename.  Add such a test, and since rename/add vs. add/rename could\npossibly be important, redo the merge the opposite direction to make\nsure we don't have issues with the direction of the merge.  These\ntestcases failed before restoring the setting of path, but with the\npaths appropriately set the testcases both pass.\n\nReported-by: Ben Humphreys <behumphreys@atlassian.com>\nBased-on-patch-by: SZEDER Gábor <szeder.dev@gmail.com>\nTested-by: Ben Humphreys <behumphreys@atlassian.com>\nSigned-off-by: Elijah Newren <newren@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/481de8a293bfaa5425ea4dc5ac70aaf3081a3be8"},{"sha":"b39da5f8be4841cca4088fb77751369f3f8c063a","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: document commit-graph chains\n\nAdd a basic description of commit-graph chains. More details about the\nfeature will be added as we add functionality. This introduction gives a\nhigh-level overview to the goals of the feature and the basic layout of\ncommit-graph chains.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/b39da5f8be4841cca4088fb77751369f3f8c063a"},{"sha":"2d06258b69d4e6515aa5659c4b61086974ce0ebd","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: prepare for commit-graph chains\n\nTo prepare for a chain of commit-graph files, augment the\ncommit_graph struct to point to a base commit_graph. As we load\ncommits from the graph, we may actually want to read from a base\nfile according to the graph position.\n\nThe \"graph position\" of a commit is given by concatenating the\nlexicographic commit orders from each of the commit-graph files in\nthe chain. This means that we must distinguish two values:\n\n * lexicographic index : the position within the lexicographic\n   order in a single commit-graph file.\n\n * graph position: the posiiton within the concatenated order\n   of multiple commit-graph files\n\nGiven the lexicographic index of a commit in a graph, we can\ncompute the graph position by adding the number of commits in\nthe lower-level graphs. To find the lexicographic index of\na commit, we subtract the number of commits in lower-level graphs.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/2d06258b69d4e6515aa5659c4b61086974ce0ebd"},{"sha":"6a4639a2a8825b0b40ca36cd144edd0c1d5014e1","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: rename commit_compare to oid_compare\n\nThe helper function commit_compare() actually compares object_id\nstructs, not commits. A future change to commit-graph.c will need\nto sort commit structs, so rename this function in advance.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/6a4639a2a8825b0b40ca36cd144edd0c1d5014e1"},{"sha":"cd556367f081eeeb21c989de0493f2a8f4202466","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: load commit-graph chains\n\nPrepare the logic for reading a chain of commit-graphs.\n\nFirst, look for a file at $OBJDIR/info/commit-graph. If it exists,\nthen use that file and stop.\n\nNext, look for the chain file at $OBJDIR/info/commit-graphs/commit-graph-chain.\nIf this file exists, then load the hash values as line-separated values in that\nfile and load $OBJDIR/info/commit-graphs/graph-{hash[i]}.graph for each hash[i]\nin that file. The file is given in order, so the first hash corresponds to the\n\"base\" file and the final hash corresponds to the \"tip\" file.\n\nThis implementation assumes that all of the graph-{hash}.graph files are in\nthe same object directory as the commit-graph-chain file. This will be updated\nin a future change. This change is purposefully simple so we can isolate the\ndifferent concerns.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/cd556367f081eeeb21c989de0493f2a8f4202466"},{"sha":"a53af50b99429ec4443509cb8a95d6e3f91f0c81","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: add base graphs chunk\n\nTo quickly verify a commit-graph chain is valid on load, we will\nread from the new \"Base Graphs Chunk\" of each file in the chain.\nThis will prevent accidentally loading incorrect data from manually\nediting the commit-graph-chain file or renaming graph-{hash}.graph\nfiles.\n\nThe commit_graph struct already had an object_id struct \"oid\", but\nit was never initialized or used. Add a line to read the hash from\nthe end of the commit-graph file and into the oid member.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/a53af50b99429ec4443509cb8a95d6e3f91f0c81"},{"sha":"e533c81c2e60a7e8a260fd2052622b268df192d0","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: rearrange chunk count logic\n\nThe number of chunks in a commit-graph file can change depending on\nwhether we need the Extra Edges Chunk. We are going to add more optional\nchunks, and it will be helpful to rearrange this logic around the chunk\ncount before doing so.\n\nSpecifically, we need to finalize the number of chunks before writing\nthe commit-graph header. Further, we also need to fill out the chunk\nlookup table dynamically and using \"num_chunks\" as we add optional\nchunks is useful for adding optional chunks in the future.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/e533c81c2e60a7e8a260fd2052622b268df192d0"},{"sha":"4ece4fc1cbdf7f67f823337380ef29d03c64bb6f","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: write commit-graph chains\n\nExtend write_commit_graph() to write a commit-graph chain when given the\nCOMMIT_GRAPH_SPLIT flag.\n\nThis implementation is purposefully simplistic in how it creates a new\nchain. The commits not already in the chain are added to a new tip\ncommit-graph file.\n\nMuch of the logic around writing a graph-{hash}.graph file and updating\nthe commit-graph-chain file is the same as the commit-graph file case.\nHowever, there are several places where we need to do some extra logic\nin the split case.\n\nTrack the list of graph filenames before and after the planned write.\nThis will be more important when we start merging graph files, but it\nalso allows us to upgrade our commit-graph file to the appropriate\ngraph-{hash}.graph file when we upgrade to a chain of commit-graphs.\n\nNote that we use the eighth byte of the commit-graph header to store the\nnumber of base graph files. This determines the length of the base\ngraphs chunk.\n\nA subtle change of behavior with the new logic is that we do not write a\ncommit-graph if we our commit list is empty. This extends to the typical\ncase, which is reflected in t5318-commit-graph.sh.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/4ece4fc1cbdf7f67f823337380ef29d03c64bb6f"},{"sha":"abe23682f44e6d9bea1fad63c3a16e4ebd3f90fc","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: add --split option to builtin\n\nAdd a new \"--split\" option to the 'git commit-graph write' subcommand. This\noption allows the optional behavior of writing a commit-graph chain.\n\nThe current behavior will add a tip commit-graph containing any commits that\nare not in the existing commit-graph or commit-graph chain. Later changes\nwill allow merging the chain and expiring out-dated files.\n\nAdd a new test script (t5323-split-commit-graph.sh) that demonstrates this\nbehavior.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/abe23682f44e6d9bea1fad63c3a16e4ebd3f90fc"},{"sha":"fec84fefe671620ee9106798b39f2a6a61fff0aa","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: merge commit-graph chains\n\nWhen searching for a commit in a commit-graph chain of G graphs with N\ncommits, the search takes O(G log N) time. If we always add a new tip\ngraph with every write, the linear G term will start to dominate and\nslow the lookup process.\n\nTo keep lookups fast, but also keep most incremental writes fast, create\na strategy for merging levels of the commit-graph chain. The strategy is\ndetailed in the commit-graph design document, but is summarized by these\ntwo conditions:\n\n  1. If the number of commits we are adding is more than half the number\n     of commits in the graph below, then merge with that graph.\n\n  2. If we are writing more than 64,000 commits into a single graph,\n     then merge with all lower graphs.\n\nThe numeric values in the conditions above are currently constant, but\ncan become config options in a future update.\n\nAs we merge levels of the commit-graph chain, check that the commits\nstill exist in the repository. A garbage-collection operation may have\nremoved those commits from the object store and we do not want to\npersist them in the commit-graph chain. This is a non-issue if the\n'git gc' process wrote a new, single-level commit-graph file.\n\nAfter we merge levels, the old graph-{hash}.graph files are no longer\nreferenced by the commit-graph-chain file. We will expire these files in\na future change.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/fec84fefe671620ee9106798b39f2a6a61fff0aa"},{"sha":"f49762652fbc57dfc3d366e3b5612b3e94a40768","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: allow cross-alternate chains\n\nIn an environment like a fork network, it is helpful to have a\ncommit-graph chain that spans both the base repo and the fork repo. The\nfork is usually a small set of data on top of the large repo, but\nsometimes the fork is much larger. For example, git-for-windows/git has\nalmost double the number of commits as git/git because it rebases its\ncommits on every major version update.\n\nTo allow cross-alternate commit-graph chains, we need a few pieces:\n\n1. When looking for a graph-{hash}.graph file, check all alternates.\n\n2. When merging commit-graph chains, do not merge across alternates.\n\n3. When writing a new commit-graph chain based on a commit-graph file\n   in another object directory, do not allow success if the base file\n   has of the name \"commit-graph\" instead of\n   \"commit-graphs/graoh-{hash}.graph\".\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/f49762652fbc57dfc3d366e3b5612b3e94a40768"},{"sha":"646f85decb44ca0639f96d16d5c89733a6dc885a","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: expire commit-graph files\n\nAs we merge commit-graph files in a commit-graph chain, we should clean\nup the files that are no longer used.\n\nThis change introduces an 'expiry_window' value to the context, which is\nalways zero (for now). We then check the modified time of each\ngraph-{hash}.graph file in the $OBJDIR/info/commit-graphs folder and\nunlink the files that are older than the expiry_window.\n\nSince this is always zero, this immediately clears all unused graph\nfiles. We will update the value to match a config setting in a future\nchange.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/646f85decb44ca0639f96d16d5c89733a6dc885a"},{"sha":"a1e64ecd68d915a0d1eceb86e93281271731f05f","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: create options for split files\n\nThe split commit-graph feature is now fully implemented, but needs\nsome more run-time configurability. Allow direct callers to 'git\ncommit-graph write --split' to specify the values used in the\nmerge strategy and the expire time.\n\nUpdate the documentation to specify these values.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/a1e64ecd68d915a0d1eceb86e93281271731f05f"},{"sha":"1464e37a51ddb2f4e3b40e1443ecc2843c1e1d7b","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: verify chains with --shallow mode\n\nIf we wrote a commit-graph chain, we only modified the tip file in\nthe chain. It is valuable to verify what we wrote, but not waste\ntime checking files we did not write.\n\nAdd a '--shallow' option to the 'git commit-graph verify' subcommand\nand check that it does not read the base graph in a two-file chain.\n\nMaking the verify subcommand read from a chain of commit-graphs takes\nsome rearranging of the builtin code.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/1464e37a51ddb2f4e3b40e1443ecc2843c1e1d7b"},{"sha":"90fa48226d0419f65f4105a7f162a607228ca7e6","author":{"name":"Derrick Stolee","email":"ee0b68d4428a726bf8f65d5915bcba7139f7e5c7@microsoft.com"},"message":"commit-graph: clean up chains after flattened write\n\nIf we write a commit-graph file without the split option, then\nwe write to $OBJDIR/info/commit-graph and start to ignore\nthe chains in $OBJDIR/info/commit-graphs/.\n\nUnlink the commit-graph-chain file and expire the graph-{hash}.graph\nfiles in $OBJDIR/info/commit-graphs/ during every write.\n\nSigned-off-by: Derrick Stolee <dstolee@microsoft.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/90fa48226d0419f65f4105a7f162a607228ca7e6"},{"sha":"760a3d8fe5683763b3652bee0466dc23fac3b79c","author":{"name":"Jonathan Tan","email":"a1f160b521cd973a24f632d654869fc52afb36fa@google.com"},"message":"t5551: test usage of chunked encoding explicitly\n\nWhen run using GIT_TEST_PROTOCOL_VERSION=2, a test in t5551 fails\nbecause 4 POSTs (probe, ls-refs, probe, fetch) are sent instead of 2\n(probe, fetch).\n\nOne way to resolve this would be to relax the condition (from \"= 2\" to\ngreater than 1, say), but upon further inspection, the test probably\nshouldn't be counting the number of POSTs. This test states that large\nrequests are split across POSTs, but this is not correct; the main\nchange is that chunked transfer encoding is used, but the request is\nstill contained within one POST. (The test coincidentally works because\nGit indeed sends 2 POSTs in the case of a large request, but that is\nbecause, as stated above, the first POST is a probing RPC - see\npost_rpc() in remote-curl.c for more information.)\n\nTherefore, instead of counting POSTs, check that chunked transfer\nencoding is used. This also has the desirable side effect of passing\nwith GIT_TEST_PROTOCOL_VERSION=2.\n\nSigned-off-by: Jonathan Tan <jonathantanmy@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/760a3d8fe5683763b3652bee0466dc23fac3b79c"},{"sha":"a209600abe08f3160dde608a2be601869f4277ba","author":{"name":"Junio C Hamano","email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com"},"message":"SQUASH??? 5323 is already taken","distinct":true,"url":"https://api.github.com/repos/git/git/commits/a209600abe08f3160dde608a2be601869f4277ba"},{"sha":"07b2c0eacac91c8db1a371667ed621cff443cf0d","author":{"name":"Denton Liu","email":"dfd34f33174985dc10416b8d7a4777f6e5d8dac2@gmail.com"},"message":"config: learn the \"onbranch:\" includeIf condition\n\nCurrently, if a user wishes to have individual settings per branch, they\nare required to manually keep track of the settings in their head and\nmanually set the options on the command-line or change the config at\neach branch.\n\nTeach config the \"onbranch:\" includeIf condition so that it can\nconditionally include configuration files if the branch that is checked\nout in the current worktree matches the pattern given.\n\nSigned-off-by: Denton Liu <liu.denton@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/07b2c0eacac91c8db1a371667ed621cff443cf0d"},{"sha":"1c6b565f896c27dc7c52aa3af9c7dcfc7934e8fe","author":{"name":"Tigran Mkrtchyan","email":"d922616d71ca96f778c63ea49015b141afa0a2ae@desy.de"},"message":"tag: add tag.gpgSign config option to force all tags be GPG-signed\n\nAs many CI/CD tools don't allow to control command line options when\nexecuting `git tag` command, a default value in the configuration file\nwill allow to enforce tag signing if required.\n\nThe new config-file option tag.gpgSign is added to define default behavior\nof tag signings. To override default behavior the command line option -s,\n--sign and --no-sign can be used:\n\n    $ git tag -m \"commit message\"\n\nwill generate a GPG signed tag if tag.gpgSign option is true, while\n\n    $ git tag --no-sign -m \"commit message\"\n\nwill skip the signing step.\n\nSigned-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/1c6b565f896c27dc7c52aa3af9c7dcfc7934e8fe"},{"sha":"2fd560f1f8546cd5bd0aa08cfebd7ad7de71cd47","author":{"name":"Junio C Hamano","email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com"},"message":"Merge branch 'en/merge-directory-renames-fix' into pu\n\nRecent code restructuring of merge-recursive engine introduced a\nregression dealing with rename/add conflict.\n\n* en/merge-directory-renames-fix:\n  merge-recursive: restore accidentally dropped setting of path","distinct":true,"url":"https://api.github.com/repos/git/git/commits/2fd560f1f8546cd5bd0aa08cfebd7ad7de71cd47"}]}
{"actor":{"display_login":"gitster"}}