{"push_id":597495145,"size":66,"distinct_size":0,"ref":"refs/heads/stash-checkpoint","head":"38518c05578b4ee1a1b37c5423069a218cdf1761","before":"3d906b1624afe69bdf8ce20e404e685a74bf5138","commits":[{"sha":"61c9475221a139245d8c56ae79be25f8ee9c35c2","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'mh/reflog-expire' into mh/ref-trans-value-check\n\n* mh/reflog-expire: (24 commits)\n  refs.c: let fprintf handle the formatting\n  refs.c: don't expose the internal struct ref_lock in the header file\n  lock_any_ref_for_update(): inline function\n  refs.c: remove unlock_ref/close_ref/commit_ref from the refs api\n  reflog_expire(): new function in the reference API\n  expire_reflog(): treat the policy callback data as opaque\n  Move newlog and last_kept_sha1 to \"struct expire_reflog_cb\"\n  expire_reflog(): move rewrite to flags argument\n  expire_reflog(): move verbose to flags argument\n  expire_reflog(): pass flags through to expire_reflog_ent()\n  struct expire_reflog_cb: a new callback data type\n  Rename expire_reflog_cb to expire_reflog_policy_cb\n  expire_reflog(): move updateref to flags argument\n  expire_reflog(): move dry_run to flags argument\n  expire_reflog(): add a \"flags\" argument\n  expire_reflog(): extract two policy-related functions\n  Extract function should_expire_reflog_ent()\n  expire_reflog(): use a lock_file for rewriting the reflog file\n  expire_reflog(): return early if the reference has no reflog\n  expire_reflog(): rename \"ref\" parameter to \"refname\"\n  ...","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/61c9475221a139245d8c56ae79be25f8ee9c35c2"},{"sha":"507d6aa5bf2fb9f56d0c7f70d4ff3b8177da9d8e","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'sb/atomic-push' into mh/ref-trans-value-check\n\n* sb/atomic-push:\n  Document receive.advertiseatomic\n  t5543-atomic-push.sh: add basic tests for atomic pushes\n  push.c: add an --atomic argument\n  send-pack.c: add --atomic command line argument\n  send-pack: rename ref_update_to_be_sent to check_to_send_update\n  receive-pack.c: negotiate atomic push support\n  receive-pack.c: add execute_commands_atomic function\n  receive-pack.c: move transaction handling in a central place\n  receive-pack.c: move iterating over all commands outside execute_commands\n  receive-pack.c: die instead of error in case of possible future bug\n  receive-pack.c: shorten the execute_commands loop over all commands","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/507d6aa5bf2fb9f56d0c7f70d4ff3b8177da9d8e"},{"sha":"189c860c9ec5deb95845c056ca5c15b58970158e","author":{"email":"9c128f58405e85d6146c14fca59cedaab1430287@gmail.com","name":"Ben Walton"},"message":"kwset: use unsigned char to store values with high-bit set\n\nSun Studio on Solaris issues warnings about improper initialization\nvalues being used when defining tolower_trans_tbl[] in ctype.c.  The\narray wants to store values with high-bit set and treat them as\nvalues between 128 to 255.  Unlike the rest of the Git codebase\nwhere we explicitly specify 'unsigned char' for such variables and\narrays, however, kwset code we borrowed from elsewhere uses 'char'\nfor this and other variables.\n\nFix the declarations to explicitly use 'unsigned char' where\nnecessary to bring it in line with the rest of the Git.\n\nSigned-off-by: Ben Walton <bdwalton@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/189c860c9ec5deb95845c056ca5c15b58970158e"},{"sha":"8280bbebd1ecc4633b969a439ed4ca653d1bc958","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"write_ref_sha1(): remove check for lock == NULL\n\nNone of the callers pass NULL to this function, and there doesn't seem\nto be any usefulness to allowing them to do so.\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/mjg/git/commits/8280bbebd1ecc4633b969a439ed4ca653d1bc958"},{"sha":"706d5f816fbcb1299c19f4d41bea60f1e229165e","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"write_ref_sha1(): move write elision test to callers\n\nwrite_ref_sha1() previously skipped the write if the reference already\nhad the desired value, unless lock->force_write was set. Instead,\nperform that test at the callers.\n\nTwo of the callers (in rename_ref()) unconditionally set force_write\njust before calling write_ref_sha1(), so they don't need the extra\ncheck at all. Nor do they need to set force_write anymore.\n\nThe last caller, in ref_transaction_commit(), still needs the test.\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/mjg/git/commits/706d5f816fbcb1299c19f4d41bea60f1e229165e"},{"sha":"074336e5ed4ff10577f22c6812e092e3f6607405","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"lock_ref_sha1_basic(): do not set force_write for missing references\n\nIf a reference is missing, its SHA-1 will be null_sha1, which can't\npossibly match a new value that ref_transaction_commit() is trying to\nupdate it to. So there is no need to set force_write in this scenario.\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/mjg/git/commits/074336e5ed4ff10577f22c6812e092e3f6607405"},{"sha":"5a6f47077b31be45bfadd6cef3b8b1a79ad57de5","author":{"email":"a7f3b1612c245dae606b3b9617b4f52187fddb65@google.com","name":"Stefan Beller"},"message":"struct ref_lock: delete the force_write member\n\nInstead, compute the value when it is needed.\n\nSigned-off-by: Stefan Beller <sbeller@google.com>\nEdited-by: Michael Haggerty <mhagger@alum.mit.edu>\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/mjg/git/commits/5a6f47077b31be45bfadd6cef3b8b1a79ad57de5"},{"sha":"fe2a18165c97d3e0937bb99fda449e1f64e5c867","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"reflog: improve and update documentation\n\nRevamp the \"git reflog\" usage documentation in the manpage and the\ncommand help to match the current reality and improve its clarity:\n\n* Add documentation for some options that had been left out.\n\n* Group the subcommands and options more logically and move more\n  common subcommands/options higher.\n\n* Improve some explanations.\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/mjg/git/commits/fe2a18165c97d3e0937bb99fda449e1f64e5c867"},{"sha":"5e6f003ca8aed546d50a4f3fbf1e011186047bc0","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"reflog_expire(): ignore --updateref for symbolic references\n\nIf we are expiring reflog entries for a symbolic reference, then how\nshould --updateref be handled if the newest reflog entry is expired?\n\nOption 1: Update the referred-to reference. (This is what the current\ncode does.) This doesn't make sense, because the referred-to reference\nhas its own reflog, which hasn't been rewritten.\n\nOption 2: Update the symbolic reference itself (as in, REF_NODEREF).\nThis would convert the symbolic reference into a non-symbolic\nreference (e.g., detaching HEAD), which is surely not what a user\nwould expect.\n\nOption 3: Error out. This is plausible, but it would make the\nfollowing usage impossible:\n\n    git reflog expire ... --updateref --all\n\nOption 4: Ignore --updateref for symbolic references.\n\nWe choose to implement option 4.\n\nNote: another problem in this code will be fixed 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/mjg/git/commits/5e6f003ca8aed546d50a4f3fbf1e011186047bc0"},{"sha":"423c688b855c328ecda0b6a79c4b1af78d09a10c","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"reflog_expire(): never update a reference to null_sha1\n\nCurrently, if --updateref is specified and the very last reflog entry\nis expired or deleted, the reference's value is set to 0{40}. This is\nan invalid state of the repository, and breaks, for example, \"git\nfsck\" and \"git for-each-ref\".\n\nThe only place we use --updateref in our own code is when dropping\nstash entries. In that code, the very next step is to check if the\nreflog has been made empty, and if so, delete the \"refs/stash\"\nreference entirely. Thus that code path ultimately leaves the\nrepository in a valid state.\n\nBut we don't want to the repository in an invalid state even\ntemporarily, and we don't want to leave an invalid state if other\ncallers of \"git reflog expire|delete --updateref\" don't think to do\nthe extra cleanup step.\n\nSo, if \"git reflog expire|delete\" leaves no more entries in the\nreflog, just leave the reference unchanged.\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/mjg/git/commits/423c688b855c328ecda0b6a79c4b1af78d09a10c"},{"sha":"fd9de868c359a1bbd214e354aefdb0f1eaa898bd","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'mh/refs-have-new'\n\nSimplify the ref transaction API around how \"the ref should be\npointing at this object\" is specified.\n\n* mh/refs-have-new:\n  refs.h: remove duplication in function docstrings\n  update_ref(): improve documentation\n  ref_transaction_verify(): new function to check a reference's value\n  ref_transaction_delete(): check that old_sha1 is not null_sha1\n  ref_transaction_create(): check that new_sha1 is valid\n  commit: avoid race when creating orphan commits\n  commit: add tests of commit races\n  ref_transaction_delete(): remove \"have_old\" parameter\n  ref_transaction_update(): remove \"have_old\" parameter\n  struct ref_update: move \"have_old\" into \"flags\"\n  refs.c: change some \"flags\" to \"unsigned int\"\n  refs: remove the gap in the REF_* constant values\n  refs: move REF_DELETING to refs.c","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/fd9de868c359a1bbd214e354aefdb0f1eaa898bd"},{"sha":"fec7b79aa469eec2fa184b1ff7f8e41fb6fa632c","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'mm/am-c-doc'\n\nThe configuration variable 'mailinfo.scissors' was hard to\ndiscover in the documentation.\n\n* mm/am-c-doc:\n  Documentation/git-am.txt: mention mailinfo.scissors config variable\n  Documentation/config.txt: document mailinfo.scissors","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/fec7b79aa469eec2fa184b1ff7f8e41fb6fa632c"},{"sha":"ca704731b1fdf77b8f6d296bcde206c67ed9d73a","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'rj/no-xopen-source-for-cygwin'\n\nCode cleanups.\n\n* rj/no-xopen-source-for-cygwin:\n  git-compat-util.h: remove redundant code","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/ca704731b1fdf77b8f6d296bcde206c67ed9d73a"},{"sha":"8a6444d50ea73350ae7e6083ecc63393749e5bb0","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'rs/simple-cleanups'\n\nCode cleanups.\n\n* rs/simple-cleanups:\n  sha1_name: use strlcpy() to copy strings\n  pretty: use starts_with() to check for a prefix\n  for-each-ref: use skip_prefix() to avoid duplicate string comparison\n  connect: use strcmp() for string comparison","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/8a6444d50ea73350ae7e6083ecc63393749e5bb0"},{"sha":"fa8baa4b2acf6f8be8f28bf84493e0889e45eb91","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jc/diff-test-updates'\n\nTest clean-up.\n\n* jc/diff-test-updates:\n  test_ln_s_add: refresh stat info of fake symbolic links\n  t4008: modernise style\n  t/diff-lib: check exact object names in compare_diff_raw\n  tests: do not borrow from COPYING and README from the real source\n  t4010: correct expected object names\n  t9300: correct expected object names\n  t4008: correct stale comments","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/fa8baa4b2acf6f8be8f28bf84493e0889e45eb91"},{"sha":"42da484006186e653e8b3bf3b4c6b40816450ed2","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'tb/connect-ipv6-parse-fix'\n\nWe did not parse username followed by literal IPv6 address in SSH\ntransport URLs, e.g. ssh://user@[2001:db8::1]:22/repo.git\ncorrectly.\n\n* tb/connect-ipv6-parse-fix:\n  t5500: show user name and host in diag-url\n  t5601: add more test cases for IPV6\n  connect.c: allow ssh://user@[2001:db8::1]/repo.git","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/42da484006186e653e8b3bf3b4c6b40816450ed2"},{"sha":"a6f9decbe30318a0fdc4c7cad61e5e20b344d0d4","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ew/svn-maint-fixes'\n\nCorrect a breakage to git-svn around v2.2 era that triggers\npremature closing of FileHandle.\n\n* ew/svn-maint-fixes:\n  Git::SVN::*: avoid premature FileHandle closure\n  git-svn: fix localtime=true on non-glibc environments","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/a6f9decbe30318a0fdc4c7cad61e5e20b344d0d4"},{"sha":"fcf04eef75d55eb404e524dd46aa7330d2608746","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ew/svn-fixes'\n\n* ew/svn-fixes:\n  git-svn: lazy load some modules","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/fcf04eef75d55eb404e524dd46aa7330d2608746"},{"sha":"5135fefaa17b494e4cd3a0f36361cddc8ad445ba","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Post 2.3 cycle (batch #7)\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/5135fefaa17b494e4cd3a0f36361cddc8ad445ba"},{"sha":"fd124ba155a2af85ec3072ee71735401a5b8f23d","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'bw/kwset-use-unsigned' into next\n\nThe borrowed code in kwset API did not follow our usual convention\nto use \"unsigned char\" to store values that range from 0-255.\n\n* bw/kwset-use-unsigned:\n  kwset: use unsigned char to store values with high-bit set","distinct":false,"url":"https://api.github.com/repos/mjg/git/commits/fd124ba155a2af85ec3072ee71735401a5b8f23d"}]}