{"push_id":594957036,"size":112,"distinct_size":2,"ref":"refs/heads/jk/external-odb-wip","head":"c9853c155e0ed72a74735c827127e1e5d58e6c3f","before":"fee91134a03e397683f1860f8188f0828d0e9ccd","commits":[{"sha":"0a80bc9f13bf4373778e787b3a050f5b784faf30","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"apply: detect and mark whitespace errors in context lines when fixing\n\nWhen the incoming patch has whitespace errors in a common context\nline (i.e. a line that is expected to be found and is not modified\nby the patch), \"apply --whitespace=fix\" corrects the whitespace\nerrors the line has, in addition to the whitespace error on a line\nthat is updated by the patch.  However, we did not count and report\nthat we fixed whitespace errors on such lines.\n\n[jc: This is iffy.  What if the whitespace error has been fixed in\nthe target since the patch was written?  A common context line we\nsee in the patch has errors, and it matches a line in the target\nthat has the errors already corrected, resulting in no change, which\nwe may not want to count after all.  On the other hand, we are\nreporting whitespace errors _in_ the incoming patch, so...]\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/0a80bc9f13bf4373778e787b3a050f5b784faf30"},{"sha":"c536c0755f6450b7bcce499cfda171f8c6d1e593","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"apply: reject input that touches outside the working area\n\nBy default, a patch that affects outside the working area (either a\nGit controlled working tree, or the current working directory when\n\"git apply\" is used as a replacement of GNU patch) is rejected as a\nmistake (or a mischief).  Git itself does not create such a patch,\nunless the user bends over backwards and specifies a non-standard\nprefix to \"git diff\" and friends.\n\nWhen `git apply` is used as a \"better GNU patch\", the user can pass\nthe `--unsafe-paths` option to override this safety check. This\noption has no effect when `--index` or `--cached` is in use.\n\nThe new test was stolen from Jeff King with slight enhancements.\nNote that a few new tests for touching outside the working area by\nfollowing a symbolic link are still expected to fail at this step,\nbut will be fixed in later steps.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/c536c0755f6450b7bcce499cfda171f8c6d1e593"},{"sha":"3c37a2e339e695c7cc41048fe0921cbc8b48b0f0","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"apply: do not read from the filesystem under --index\n\nWe currently read the preimage to apply a patch from the index only\nwhen the --cached option is given.  Do so also when the command is\nrunning under the --index option.  With --index, the index entry and\nthe working tree file for a path that is involved in a patch must be\nidentical, so this should not affect the result, but by reading from\nthe index, we will get the protection to avoid reading an unintended\npath beyond a symbolic link automatically.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/3c37a2e339e695c7cc41048fe0921cbc8b48b0f0"},{"sha":"fdc2c3a926c21e24986677abd02c8bc568a5de32","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"apply: do not read from beyond a symbolic link\n\nWe should reject a patch, whether it renames/copies dir/file to\nelsewhere with or without modificiation, or updates dir/file in\nplace, if \"dir/\" part is actually a symbolic link to elsewhere,\nby making sure that the code to read the preimage does not read\nfrom a path that is beyond a symbolic link.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/fdc2c3a926c21e24986677abd02c8bc568a5de32"},{"sha":"e0d201b61601e17e24ed00cc3d16e8e25ca68596","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"apply: do not touch a file beyond a symbolic link\n\nBecause Git tracks symbolic links as symbolic links, a path that\nhas a symbolic link in its leading part (e.g. path/to/dir/file,\nwhere path/to/dir is a symbolic link to somewhere else, be it\ninside or outside the working tree) can never appear in a patch\nthat validly applies, unless the same patch first removes the\nsymbolic link to allow a directory to be created there.\n\nDetect and reject such a patch.\n\nThings to note:\n\n - Unfortunately, we cannot reuse the has_symlink_leading_path()\n   from dir.c, as that is only about the working tree, but \"git\n   apply\" can be told to apply the patch only to the index or to\n   both the index and to the working tree.\n\n - We cannot directly use has_symlink_leading_path() even when we\n   are applying only to the working tree, as an early patch of a\n   valid input may remove a symbolic link path/to/dir and then a\n   later patch of the input may create a path path/to/dir/file, but\n   \"git apply\" first checks the input without touching either the\n   index or the working tree.  The leading symbolic link check must\n   be done on the interim result we compute in-core (i.e. after the\n   first patch, there is no path/to/dir symbolic link and it is\n   perfectly valid to create path/to/dir/file).\n\n   Similarly, when an input creates a symbolic link path/to/dir and\n   then creates a file path/to/dir/file, we need to flag it as an\n   error without actually creating path/to/dir symbolic link in the\n   filesystem.\n\nInstead, for any patch in the input that leaves a path (i.e. a non\ndeletion) in the result, we check all leading paths against the\nresulting tree that the patch would create by inspecting all the\npatches in the input and then the target of patch application\n(either the index or the working tree).\n\nThis way, we catch a mischief or a mistake to add a symbolic link\npath/to/dir and a file path/to/dir/file at the same time, while\nallowing a valid patch that removes a symbolic link path/to/dir and\nthen adds a file path/to/dir/file.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/e0d201b61601e17e24ed00cc3d16e8e25ca68596"},{"sha":"581d4e0cdbe9526c122b9d0835f951e478f82448","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"refs: move REF_DELETING to refs.c\n\nIt is only used internally now. Document it a little bit better, too.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nReviewed-by: Stefan Beller <sbeller@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/581d4e0cdbe9526c122b9d0835f951e478f82448"},{"sha":"31e79f0a54e57454a9677eeb8b1108e4f907b8b9","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"refs: remove the gap in the REF_* constant values\n\nThere is no reason to \"reserve\" a gap between the public and private\nflags values.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/31e79f0a54e57454a9677eeb8b1108e4f907b8b9"},{"sha":"f2b4f0a23b400f5760deb9251296d79eba83ab78","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"t4008: correct stale comments\n\nA complete rewrite of a single file was originally designed to be\nexpressed as a deletion immediately followed by a creation of the\nsame file, and the comments in the test updated here were written to\nreflect that design decision made in f345b0a0 (Add -B flag to diff-*\nbrothers., 2005-05-30).  However, we later realized that a complete\nrewrite is merely how a textual diff should be represented at\n366175ef (Rework -B output., 2005-06-19), and updated the actual\ntests.  But we forgot to update the introductory text while doing\nso.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/f2b4f0a23b400f5760deb9251296d79eba83ab78"},{"sha":"2c0ab4d49d294aa9127ce5616d2d6c4d12be8e74","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"t9300: correct expected object names\n\nThe output the test #36 expects is bogus.  There are no blob objects\nwhose names are 36a590... or 046d037... when this test was run.\n\nIt was left unnoticed only because compare_diff_raw, which only\ncares about the add/delete/rename/copy was used to check the result.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/2c0ab4d49d294aa9127ce5616d2d6c4d12be8e74"},{"sha":"bb8db1b5538a455a0892312b25d73d51f2650429","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"t4010: correct expected object names\n\nThe output the test expects is bogus.\n\nIt was left unnoticed only because compare_diff_raw, which only\ncares about the add/delete/rename/copy was used to check the result.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/bb8db1b5538a455a0892312b25d73d51f2650429"},{"sha":"459b8d22e544b3876a2270ee7290c289a39ebbb2","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"tests: do not borrow from COPYING and README from the real source\n\nThese two files have been modified since the tests started using\nas test input, making the exact object names they expect to be\ndifferent from what actually happens in the trash repository they\nuse to run tests.\n\nInstead, take a snapshot of these two files and keep them in\nt/diff-lib/ so that we can update the real ones without having to\nworry about breaking tests.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/459b8d22e544b3876a2270ee7290c289a39ebbb2"},{"sha":"bd9150b7e5f34d7148b02ca2eed96270c7744049","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"t/diff-lib: check exact object names in compare_diff_raw\n\nThe \"sanitize\" helper wanted to strip the similarity and\ndissimilarity scores when making comparison, but it was\nstripping away the object names as well.\n\nWhile we do not want to require the exact object names the tests\nexpect to be maintained, as it would be seen as an extra burden,\nthis would have prevented us catching a silly bug such as showing\nnon 0{40} object name on the preimage side of an addition or on the\npostimage side of a deletion, because all [0-9a-f]{40} strings were\nconsidered equally OK.\n\nIn the longer term, when a test only wants to see the status of the\nchange without having to worry about object names, it should be\nrewritten not to inspect the raw format.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/bd9150b7e5f34d7148b02ca2eed96270c7744049"},{"sha":"db7b9e3ad39a4135072a1fd619b76d1c1093b501","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"t4008: modernise style\n\nUpdate this ancient test script to a more modern style in which the\nexpected result is prepared inside the body of the test that uses\nit.  Also, instead of using $tree, a shell variable, throughout the\ntest script, create a tag that points at it, to make it easier to\nmanually debug the test script in its trash directory.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/db7b9e3ad39a4135072a1fd619b76d1c1093b501"},{"sha":"f471494303c2d2a085f384eac705379ef2423590","author":{"email":"8d4c9325a583512e625dc42829126e323c089b30@gmail.com","name":"Kyle J. McKay"},"message":"git-send-email.perl: support no- prefix with older GetOptions\n\nOnly Perl version 5.8.0 or later is required, but that comes with\nan older Getopt::Long (2.32) that does not support the 'no-'\nprefix.  Support for that was added in Getopt::Long version 2.33.\n\nSince the help only mentions the 'no-' prefix and not the 'no'\nprefix, add explicit support for the 'no-' prefix to support\nolder GetOptions versions.\n\nReported-by: Tom G. Christensen <tgc@statsbiblioteket.dk>\nSigned-off-by: Kyle J. McKay <mackyle@gmail.com>\nTested-by: Tom G. Christensen <tgc@statsbiblioteket.dk>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/f471494303c2d2a085f384eac705379ef2423590"},{"sha":"fec14ec38ca65b13f9e0fcdb60f27674c6f9af70","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"refs.c: change some \"flags\" to \"unsigned int\"\n\nChange the following functions' \"flags\" arguments from \"int\" to\n\"unsigned int\":\n\n * ref_transaction_update()\n * ref_transaction_create()\n * ref_transaction_delete()\n * update_ref()\n * delete_ref()\n * lock_ref_sha1_basic()\n\nAlso change the \"flags\" member in \"struct ref_update\" to unsigned.\n\nSuggested-by: Junio C Hamano <gitster@pobox.com>\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/fec14ec38ca65b13f9e0fcdb60f27674c6f9af70"},{"sha":"8df4e51138781927962438819d79ae3221b527b5","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"struct ref_update: move \"have_old\" into \"flags\"\n\nInstead of having a separate have_old field, record this boolean value\nas a bit in the \"flags\" field.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/8df4e51138781927962438819d79ae3221b527b5"},{"sha":"1d147bdff0b8132d3aa53a46df8dbab7b673b796","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"ref_transaction_update(): remove \"have_old\" parameter\n\nInstead, verify the reference's old value if and only if old_sha1 is\nnon-NULL.\n\nref_transaction_delete() will get the same treatment in a moment.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nReviewed-by: Stefan Beller <sbeller@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/1d147bdff0b8132d3aa53a46df8dbab7b673b796"},{"sha":"fb5a6bb61c215546b94156bbb54d43225424f7d0","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"ref_transaction_delete(): remove \"have_old\" parameter\n\nInstead, verify the reference's old value if and only if old_sha1 is\nnon-NULL.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nReviewed-by: Stefan Beller <sbeller@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/fb5a6bb61c215546b94156bbb54d43225424f7d0"},{"sha":"a908a31c344cdcce2bf1a9fc163f3bccd2349e6a","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"commit: add tests of commit races\n\nCommitting involves the following steps:\n\n1. Determine the current value of HEAD (if any).\n2. Create the new commit object.\n3. Update HEAD.\n\nPlease note that step 2 can take arbitrarily long, because it might\ninvolve the user editing a commit message.\n\nIf a second process sneaks in a commit during step 2, then the first\ncommit process should fail. This is usually done correctly, because\nstep 3 verifies that HEAD still points at the same commit that it\npointed to during step 1.\n\nHowever, if there is a race when creating an *orphan* commit, then the\ntest in step 3 is skipped.\n\nAdd tests for proper handling of such races. One of the new tests\nfails. It will be fixed in a moment.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/a908a31c344cdcce2bf1a9fc163f3bccd2349e6a"},{"sha":"a933c23e66265eedf822535ac56fcdb4ecb07a8c","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"commit: avoid race when creating orphan commits\n\nIf HEAD doesn't point at anything during the initial check, then we\nshould make sure that it *still* doesn't point at anything when we are\nready to update the reference. Otherwise, another process might commit\nwhile we are working (e.g., while we are waiting for the user to edit\nthe commit message) and we will silently overwrite it.\n\nThis fixes a failing test in t7516.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nReviewed-by: Stefan Beller <sbeller@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/a933c23e66265eedf822535ac56fcdb4ecb07a8c"}]}