{"push_id":841531372,"size":27,"distinct_size":0,"ref":"refs/heads/master","head":"37023ba381b6d251d7140a997b39b566dbc63c42","before":"74301d6edeb0e081a4ef864057952b6a7ff2b4be","commits":[{"sha":"00a09d57eb8a041e6a6b0470c53533719c049bab","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"introduce \"extensions\" form of core.repositoryformatversion\n\nNormally we try to avoid bumps of the whole-repository\ncore.repositoryformatversion field. However, it is\nunavoidable if we want to safely change certain aspects of\ngit in a backwards-incompatible way (e.g., modifying the set\nof ref tips that we must traverse to generate a list of\nunreachable, safe-to-prune objects).\n\nIf we were to bump the repository version for every such\nchange, then any implementation understanding version `X`\nwould also have to understand `X-1`, `X-2`, and so forth,\neven though the incompatibilities may be in orthogonal parts\nof the system, and there is otherwise no reason we cannot\nimplement one without the other (or more importantly, that\nthe user cannot choose to use one feature without the other,\nweighing the tradeoff in compatibility only for that\nparticular feature).\n\nThis patch documents the existing repositoryformatversion\nstrategy and introduces a new format, \"1\", which lets a\nrepository specify that it must run with an arbitrary set of\nextensions. This can be used, for example:\n\n - to inform git that the objects should not be pruned based\n   only on the reachability of the ref tips (e.g, because it\n   has \"clone --shared\" children)\n\n - that the refs are stored in a format besides the usual\n   \"refs\" and \"packed-refs\" directories\n\nBecause we bump to format \"1\", and because format \"1\"\nrequires that a running git knows about any extensions\nmentioned, we know that older versions of the code will not\ndo something dangerous when confronted with these new\nformats.\n\nFor example, if the user chooses to use database storage for\nrefs, they may set the \"extensions.refbackend\" config to\n\"db\". Older versions of git will not understand format \"1\"\nand bail. Versions of git which understand \"1\" but do not\nknow about \"refbackend\", or which know about \"refbackend\"\nbut not about the \"db\" backend, will refuse to run. This is\nannoying, of course, but much better than the alternative of\nclaiming that there are no refs in the repository, or\nwriting to a location that other implementations will not\nread.\n\nNote that we are only defining the rules for format 1 here.\nWe do not ever write format 1 ourselves; it is a tool that\nis meant to be used by users and future extensions to\nprovide safety with older implementations.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/00a09d57eb8a041e6a6b0470c53533719c049bab"},{"sha":"067fbd4105c5aa8260a73cc6961854be0e93fa03","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"introduce \"preciousObjects\" repository extension\n\nIf this extension is used in a repository, then no\noperations should run which may drop objects from the object\nstorage. This can be useful if you are sharing that storage\nwith other repositories whose refs you cannot see.\n\nFor instance, if you do:\n\n  $ git clone -s parent child\n  $ git -C parent config extensions.preciousObjects true\n  $ git -C parent config core.repositoryformatversion 1\n\nyou now have additional safety when running git in the\nparent repository. Prunes and repacks will bail with an\nerror, and `git gc` will skip those operations (it will\ncontinue to pack refs and do other non-object operations).\nOlder versions of git, when run in the repository, will\nfail on every operation.\n\nNote that we do not set the preciousObjects extension by\ndefault when doing a \"clone -s\", as doing so breaks\nbackwards compatibility. It is a decision the user should\nmake explicitly.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/067fbd4105c5aa8260a73cc6961854be0e93fa03"},{"sha":"ac6c561b598ae74d8e752e22607194536000e4db","author":{"email":"df1c72018775340029f276bcf70b160abad424e1@gmail.com","name":"Michael Rappazzo"},"message":"worktree: add top-level worktree.c\n\nworktree.c contains functions to work with and get information from\nworktrees.  This introduction moves functions related to worktrees\nfrom branch.c into worktree.c\n\nSigned-off-by: Michael Rappazzo <rappazzo@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/ac6c561b598ae74d8e752e22607194536000e4db"},{"sha":"1ceb7f90674897a24a9f2a56abf7d26297761f18","author":{"email":"df1c72018775340029f276bcf70b160abad424e1@gmail.com","name":"Michael Rappazzo"},"message":"worktree: refactor find_linked_symref function\n\nRefactoring will help transition this code to provide additional useful\nworktree functions.\n\nSigned-off-by: Michael Rappazzo <rappazzo@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/1ceb7f90674897a24a9f2a56abf7d26297761f18"},{"sha":"51934904425e55a190b05f0a7a3de40ea486f0e5","author":{"email":"df1c72018775340029f276bcf70b160abad424e1@gmail.com","name":"Michael Rappazzo"},"message":"worktree: add a function to get worktree details\n\nThe worktree structure provided for an individual worktree includes the\nabsolute path of the worktree.  The fuction to get the worktree details\nis a refactor of the find main/linked symref functions.\n\nSigned-off-by: Michael Rappazzo <rappazzo@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/51934904425e55a190b05f0a7a3de40ea486f0e5"},{"sha":"92718b7438799f4654304e2fa3b5b7e5a9fda882","author":{"email":"df1c72018775340029f276bcf70b160abad424e1@gmail.com","name":"Michael Rappazzo"},"message":"worktree: add details to the worktree struct\n\nIn addition to the absolute path in the worktree struct, add the location\nof the git dir, the head ref (if not detached), the head revision sha1,\nwhether or not head is detached, and whether or not the worktree is a\nbare repo.\n\nSigned-off-by: Michael Rappazzo <rappazzo@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/92718b7438799f4654304e2fa3b5b7e5a9fda882"},{"sha":"bb9c03b82add467592249a222018a150684a4c97","author":{"email":"df1c72018775340029f276bcf70b160abad424e1@gmail.com","name":"Michael Rappazzo"},"message":"worktree: add 'list' command\n\n'git worktree list' iterates through the worktree list, and outputs\ndetails of the worktree including the path to the worktree, the currently\nchecked out revision and branch, and if the work tree is bare.  There is\nalso porcelain format option available.\n\nSigned-off-by: Michael Rappazzo <rappazzo@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/bb9c03b82add467592249a222018a150684a4c97"},{"sha":"c63d4b2fe86876cc210d8bf22bd84d617f7815b7","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"am -3: do not let failed merge from completing the error codepath\n\nWhen \"am\" was rewritten in C, the codepath for falling back to\nthree-way merge was mistakenly made to make an internal call to\nmerge-recursive, disabling the error reporting code for certain\ntypes of errors merge-recursive detects and reports by calling\ndie().\n\nThis is a quick-fix for correctness.  The ideal endgame would be to\nreplace run_command() in run_fallback_merge_recursive() with a\ndirect call after making sure that internal call to merge-recursive\ndoes not die().\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/c63d4b2fe86876cc210d8bf22bd84d617f7815b7"},{"sha":"63af4a8446a624ad0d83d9b766c0eb5fbf83be12","author":{"email":"9249c549618448e4c699e8032ba6c7f0d7fd4b7f@distanz.ch","name":"Tobias Klauser"},"message":"strbuf: make stripspace() part of strbuf\n\nThis function is also used in other builtins than stripspace, so it\nmakes sense to have it in a more generic place.  Since it operates\non an strbuf and the function is declared in strbuf.h, move it to\nstrbuf.c and add the corresponding prefix to its name, just like\nother API functions in the strbuf_* family.\n\nAlso switch all current users of stripspace() to the new function\nname and keep a temporary wrapper inline function for any topic\nbranches still using stripspace().\n\nReviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>\nSigned-off-by: Tobias Klauser <tklauser@distanz.ch>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/63af4a8446a624ad0d83d9b766c0eb5fbf83be12"},{"sha":"bed4452468cc564adc5ab99dfdbee0eb0f7cfb97","author":{"email":"9249c549618448e4c699e8032ba6c7f0d7fd4b7f@distanz.ch","name":"Tobias Klauser"},"message":"stripspace: use parse-options for command-line parsing\n\nUse parse-options to parse command-line options instead of a\nhand-crafted implementation.  The users can now use a unique\nprefix of the long option to say e.g. \"git stripspace --strip\".\n\nSigned-off-by: Tobias Klauser <tklauser@distanz.ch>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/bed4452468cc564adc5ab99dfdbee0eb0f7cfb97"},{"sha":"d96a0313efb7133f07dfe36e3cf9d8a04365b1e1","author":{"email":"d790fea1760bfa57e221e3da971e544c5c4e0598@gmail.com","name":"Ralf Thielow"},"message":"am, credential-cache: add angle brackets to usage string\n\nSigned-off-by: Ralf Thielow <ralf.thielow@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/d96a0313efb7133f07dfe36e3cf9d8a04365b1e1"},{"sha":"33e8fc87407505c3a96792fc47189d57b97b34c3","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"usage: do not insist that standard input must come from a file\n\nThe synopsys text and the usage string of subcommands that read list\nof things from the standard input are often shown like this:\n\n\tgit gostak [--distim] < <list-of-doshes>\n\nThis is problematic in a number of ways:\n\n * The way to use these commands is more often to feed them the\n   output from another command, not feed them from a file.\n\n * Manual pages outside Git, commands that operate on the data read\n   from the standard input, e.g \"sort\", \"grep\", \"sed\", etc., are not\n   described with such a \"< redirection-from-file\" in their synopsys\n   text.  Our doing so introduces inconsistency.\n\n * We do not insist on where the output should go, by saying\n\n\tgit gostak [--distim] < <list-of-doshes> > <output>\n\n * As it is our convention to enclose placeholders inside <braket>,\n   the redirection operator followed by a placeholder filename\n   becomes very hard to read, both in the documentation and in the\n   help text.\n\nLet's clean them all up, after making sure that the documentation\nclearly describes the modes that take information from the standard\ninput and what kind of things are expected on the input.\n\n[jc: stole example for fmt-merge-msg from Jonathan]\n\nHelped-by: Jonathan Nieder <jrnieder@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/33e8fc87407505c3a96792fc47189d57b97b34c3"},{"sha":"008ed7df93082103c8c74d045e573e19868b2c6b","author":{"email":"f21e23168db91f2bd3ec812184a2ac51d05a196a@gmail.com","name":"Karthik Nayak"},"message":"tag.c: use the correct algorithm for the '--contains' option\n\nIn b7cc53e9 (tag.c: use 'ref-filter' APIs, 2015-09-11) we port tag.c\nto use the ref-filter APIs for filtering and printing refs.  In\nref-filter we have two implementations for filtering refs when the\n'--contains' option is used.\n\nAlthough they do the same thing, one is optimized for filtering\nbranches and the other for tags (borrowed from branch.c and tag.c\nrespectively) and the 'filter->with_commit_tag_algo' bit decides\nwhich algorithm must be used.  We should unify these.\n\nWhen we ported tag.c to use ref-filter APIs we missed out on setting\nthe 'filter->with_commit_tag_algo' bit.  As reported by Jerry\nSnitselaar, this causes \"git tag --contains\" to work way slower than\nexpected, fix this by setting 'filter->with_commit_tag_algo' in\ntag.c before calling 'filter_refs()'.\n\nMentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>\nTested-by: Jerry Snitselaar <jsnitsel@redhat.com>\nSigned-off-by: Karthik Nayak <karthik.188@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/008ed7df93082103c8c74d045e573e19868b2c6b"},{"sha":"ae9f2745bee74ed169f0ca2933b8cc9d21214110","author":{"email":"a64c6784f4c0e708b81fb8de33a6973f5c64bb74@gmail.com","name":"Sidhant Sharma"},"message":"worktree: usage: denote <branch> as optional with 'add'\n\nAlthough 1eb07d8 (worktree: add: auto-vivify new branch when\n<branch> is omitted, 2015-07-06) updated the documentation when\n<branch> became optional, it neglected to update the in-code\nusage message. Fix this oversight.\n\nReported-by: ch3cooli@gmail.com\nSigned-off-by: Sidhant Sharma <tigerkid001@gmail.com>\nHelped-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/ae9f2745bee74ed169f0ca2933b8cc9d21214110"},{"sha":"9b680fbd3b47f39e44fe989971676996d4744ed7","author":{"email":"a13b1135e6f2f8530e85bc2896cd5ed89a6ed863@twopensource.com","name":"David Turner"},"message":"t7063: fix flaky untracked-cache test\n\nDirty the test worktree's root directory, as the test expects.\n\nWhen testing the untracked-cache, we previously assumed that checking\nout master would be sufficient to mark the mtime of the worktree's\nroot directory as racily-dirty.  But sometimes, the checkout would\nhappen at 12345.999 seconds and the status at 12346.001 seconds,\nmeaning that the worktree's root directory would not be racily-dirty.\nAnd since it was not truly dirty, occasionally the test would fail.\nBy making the root truly dirty, the test will always succeed.\n\nTested by running a few hundred times.\n\nSigned-off-by: David Turner <dturner@twopensource.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/9b680fbd3b47f39e44fe989971676996d4744ed7"},{"sha":"4b07cd230a1759c0e9a1e4cf2397bd238ceae96b","author":{"email":"7965a665163253a12f43312bf69d07012a113a2a@kaarsemaker.net","name":"Dennis Kaarsemaker"},"message":"git-p4: import the ctypes module\n\nThe ctypes module is used on windows to calculate free disk space,\nso it must be imported.  We won't need it on other platforms, but\nthe module is available in Python 2.5 and newer, so importing it\nunconditionally is harmless.\n\nSigned-off-by: Dennis Kaarsemaker <dennis@kaarsemaker.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/4b07cd230a1759c0e9a1e4cf2397bd238ceae96b"},{"sha":"9c53de7de12abfb9c13f5e7a82024680e3a90944","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jc/am-3-fallback-regression-fix'\n\n\"git am -3\" had a small regression where it is aborted in its error\nhandling codepath when underlying merge-recursive failed in certain\nways, as it assumed that the internal call to merge-recursive will\nnever die, which is not the case (yet).\n\n* jc/am-3-fallback-regression-fix:\n  am -3: do not let failed merge from completing the error codepath","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/9c53de7de12abfb9c13f5e7a82024680e3a90944"},{"sha":"a46dcfb8403191ce042ad123a3314a174fa9ca4c","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'mr/worktree-list'\n\nAdd the \"list\" subcommand to \"git worktree\".\n\n* mr/worktree-list:\n  worktree: add 'list' command\n  worktree: add details to the worktree struct\n  worktree: add a function to get worktree details\n  worktree: refactor find_linked_symref function\n  worktree: add top-level worktree.c","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/a46dcfb8403191ce042ad123a3314a174fa9ca4c"},{"sha":"97a9e546a27c98512fef39cd457a4da6dbb5063a","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jc/usage-stdin'\n\nThe synopsis text and the usage string of subcommands that read\nlist of things from the standard input are often shown as if they\nonly take input from a file on a filesystem, which was misleading.\n\n* jc/usage-stdin:\n  usage: do not insist that standard input must come from a file","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/97a9e546a27c98512fef39cd457a4da6dbb5063a"},{"sha":"0884726b43e356d5710db3d516c788fd0b95a57c","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'rt/placeholder-in-usage'\n\nA couple of commands still showed \"[options]\" in their usage string\nto note where options should come on their command line, but we\nspell that \"[<options>]\" in most places these days.\n\n* rt/placeholder-in-usage:\n  am, credential-cache: add angle brackets to usage string","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/0884726b43e356d5710db3d516c788fd0b95a57c"}]}