{"push_id":576663566,"size":83,"distinct_size":0,"ref":"refs/heads/jk/infinite-loops","head":"75c0eafbde911eb06ec69cc4b98e01f0fbd9ec5f","before":"5266a0dccd3b04924d3f0958cfdfbcb8fd12b609","commits":[{"sha":"21b138d0f64d99b55e901f90d4211e036b881e64","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"receive-pack: refactor updateInstead codepath\n\nKeep the \"there is nothing to update in a bare repository\", \"when\nthe check and update process runs, here are the GIT_DIR and\nGIT_WORK_TREE\" logic, which will be common regardless of how the\ndecision to update and the actual update are done, in the original\nupdate_worktree() function, and split out the \"working tree and\nthe index must match the original HEAD exactly\" and \"use two-way\nread-tree to update the working tree\" into a new push_to_deploy()\nhelper function.  This will allow customizing the logic more cleanly\nand easily.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/21b138d0f64d99b55e901f90d4211e036b881e64"},{"sha":"bc9f2925fba2fee13f75bf0f149c0da7a4688bc2","author":{"email":"2cb6c6c4ccf58d41468189c2307f7a4ebf120324@google.com","name":"Ronnie Sahlberg"},"message":"refs.c: make ref_transaction_create a wrapper for ref_transaction_update\n\nThe ref_transaction_update function can already be used to create refs by\npassing null_sha1 as the old_sha1 parameter. Simplify by replacing\ntransaction_create with a thin wrapper.\n\nSigned-off-by: Ronnie Sahlberg <sahlberg@google.com>\nSigned-off-by: Stefan Beller <sbeller@google.com>\nReviewed-by: Michael Haggerty <mhagger@alum.mit.edu>\nReviewed-by: Jonathan Nieder <jrnieder@gmail.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/bc9f2925fba2fee13f75bf0f149c0da7a4688bc2"},{"sha":"a785d3f77c9922846f25d09fb04af9a3400ffbd1","author":{"email":"2cb6c6c4ccf58d41468189c2307f7a4ebf120324@google.com","name":"Ronnie Sahlberg"},"message":"refs.c: make ref_transaction_delete a wrapper for ref_transaction_update\n\nSigned-off-by: Ronnie Sahlberg <sahlberg@google.com>\nSigned-off-by: Stefan Beller <sbeller@google.com>\nReviewed-by: Michael Haggerty <mhagger@alum.mit.edu>\nReviewed-by: Jonathan Nieder <jrnieder@gmail.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/a785d3f77c9922846f25d09fb04af9a3400ffbd1"},{"sha":"2c6207abbd6c430be06ddfef97d145d7e21446fb","author":{"email":"2cb6c6c4ccf58d41468189c2307f7a4ebf120324@google.com","name":"Ronnie Sahlberg"},"message":"refs.c: add a function to append a reflog entry to a fd\n\nBreak out the code to create the string and writing it to the file\ndescriptor from log_ref_write and add it into a dedicated function\nlog_ref_write_fd. It is a nice unit of work.\n\nFor now this is only used from log_ref_write, but in the future it\nmight have other callers.\n\nSigned-off-by: Ronnie Sahlberg <sahlberg@google.com>\nSigned-off-by: Stefan Beller <sbeller@google.com>\nReviewed-by: Jonathan Nieder <jrnieder@gmail.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/2c6207abbd6c430be06ddfef97d145d7e21446fb"},{"sha":"55dfc8de1844e4295bc02d4a279a432e26dc4740","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): it's not an each_ref_fn anymore\n\nPrior to v1.5.4~14, expire_reflog() had to be an each_ref_fn because\nit was passed to for_each_reflog(). Since then, there has been no\nreason for it to implement the each_ref_fn interface. So...\n\n* Remove the \"unused\" parameter (which took the place of \"flags\", but\n  was really unused).\n\n* Declare the last parameter to be (struct cmd_reflog_expire_cb *)\n  rather than (void *).\n\nHelped-by: Jonathan Nieder <jrnieder@gmail.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/55dfc8de1844e4295bc02d4a279a432e26dc4740"},{"sha":"524127afbf8b98350bcebe3fc1f7600fce191716","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): rename \"ref\" parameter to \"refname\"\n\nThis is our usual convention.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nReviewed-by: Jonathan Nieder <jrnieder@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/524127afbf8b98350bcebe3fc1f7600fce191716"},{"sha":"2e376b3156ff30dcd359b7c424fcbdbab5ec7709","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): return early if the reference has no reflog\n\nThere is very little cleanup needed if the reference has no reflog. If\nwe move the initialization of log_file down a bit, there's even less.\nSo instead of jumping to the cleanup code at the end of the function,\njust do the cleanup and return inline.\n\nSigned-off-by: Michael Haggerty <mhagger@alum.mit.edu>\nReviewed-by: Jonathan Nieder <jrnieder@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/2e376b3156ff30dcd359b7c424fcbdbab5ec7709"},{"sha":"f3b661f766c1525265d065fdd0529985979c80c6","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): use a lock_file for rewriting the reflog file\n\nWe don't actually need the locking functionality, because we already\nhold the lock on the reference itself, which is how the reflog file is\nlocked. But the lock_file code can do some of the bookkeeping for us,\nand it is more careful than the old code here was. For example:\n\n* It correctly handles the case that the reflog lock file already\n  exists for some reason or cannot be opened.\n\n* It correctly cleans up the lockfile if the program dies.\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/f3b661f766c1525265d065fdd0529985979c80c6"},{"sha":"60cc3c4072259609aefbdbc762d1f72bcbd97783","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"Extract function should_expire_reflog_ent()\n\nExtract from expire_reflog_ent() a function that is solely responsible\nfor deciding whether a reflog entry should be expired. By separating\nthis \"business logic\" from the mechanics of actually expiring entries,\nwe are working towards the goal of encapsulating reflog expiry within\nthe refs API, with policy decided by a callback function passed to it\nby its caller.\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/60cc3c4072259609aefbdbc762d1f72bcbd97783"},{"sha":"c48a1635355118d490fef5af14d8296a8e6f92df","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): extract two policy-related functions\n\nExtract two functions, reflog_expiry_prepare() and\nreflog_expiry_cleanup(), from expire_reflog(). This is a further step\ntowards separating the code for deciding on expiration policy from the\ncode that manages the physical deletion of reflog entries.\n\nThis change requires a couple of local variables from expire_reflog()\nto be turned into fields of \"struct expire_reflog_cb\". More\nreorganization of the callback data will follow in later commits.\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/c48a1635355118d490fef5af14d8296a8e6f92df"},{"sha":"aba56c89b21ebe64f38c521c0962c45eb4d23749","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): add a \"flags\" argument\n\nWe want to separate the options relevant to the expiry machinery from\nthe options affecting the expiration policy. So add a \"flags\" argument\nto expire_reflog() to hold the former.\n\nThe argument doesn't yet do anything.\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/aba56c89b21ebe64f38c521c0962c45eb4d23749"},{"sha":"98f31d8589d5a26b1b3ab4f30ec9cc81aa625872","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): move dry_run to flags argument\n\nThe policy objects don't care about \"--dry-run\". So move it to\nexpire_reflog()'s flags parameter.\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/98f31d8589d5a26b1b3ab4f30ec9cc81aa625872"},{"sha":"c4c4fbf86cd6f3d4fee629629d1f7e2e5d81d592","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): move updateref to flags argument\n\nThe policy objects don't care about \"--updateref\". So move it to\nexpire_reflog()'s flags parameter.\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/c4c4fbf86cd6f3d4fee629629d1f7e2e5d81d592"},{"sha":"ea7b4f6d3368654b1bd751193eaad4eca71991e4","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"Rename expire_reflog_cb to expire_reflog_policy_cb\n\nThis is the first step towards separating the data needed by the\npolicy code from the data needed by the reflog expiration machinery.\n\n(In a moment we will add a *new* \"struct expire_reflog_cb\" for the use\nof expire_reflog() itself, then move fields selectively from\nexpire_reflog_policy_cb to expire_reflog_cb.)\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/ea7b4f6d3368654b1bd751193eaad4eca71991e4"},{"sha":"ddd64c566d0b9d110ec51e269b8ce8630fa36348","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"struct expire_reflog_cb: a new callback data type\n\nAdd a new data type, \"struct expire_reflog_cb\", for holding the data\nthat expire_reflog() passes to expire_reflog_ent() via\nfor_each_reflog_ent(). For now it only holds a pointer to a \"struct\nexpire_reflog_policy_cb\", which still contains all of the actual data.\nIn future commits we will move some fields from the latter to the\nformer.\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/ddd64c566d0b9d110ec51e269b8ce8630fa36348"},{"sha":"8c22dd325437337064108409ff2241a842561a4b","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): pass flags through to expire_reflog_ent()\n\nAdd a flags field to \"struct expire_reflog_cb\", and pass the flags\nargument through to expire_reflog_ent(). In a moment we will start\nusing it to pass through flags that expire_reflog_ent() needs.\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/8c22dd325437337064108409ff2241a842561a4b"},{"sha":"bc11155cea8642ba08f37989a91c8a801953d331","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): move verbose to flags argument\n\nThe policy objects don't care about \"--verbose\". So move it to\nexpire_reflog()'s flags parameter.\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/bc11155cea8642ba08f37989a91c8a801953d331"},{"sha":"553daf13ea25735ad60fa15c74c2bd266ab8e215","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): move rewrite to flags argument\n\nThe policy objects don't care about \"--rewrite\". So move it to\nexpire_reflog()'s flags parameter.\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/553daf13ea25735ad60fa15c74c2bd266ab8e215"},{"sha":"82a645a73f07b19c0d70861929ebd6178e80e3e9","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"Move newlog and last_kept_sha1 to \"struct expire_reflog_cb\"\n\nThese members are not needed by the policy functions.\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/82a645a73f07b19c0d70861929ebd6178e80e3e9"},{"sha":"b729effbdbc9ae2d087a83b9e2a165fb8cc04641","author":{"email":"c24c152f145c57791e809b126db9e61bd1c1782d@alum.mit.edu","name":"Michael Haggerty"},"message":"expire_reflog(): treat the policy callback data as opaque\n\nNow that expire_reflog() doesn't actually look in the\nexpire_reflog_policy_cb data structure, we can make it opaque:\n\n* Change the callers of expire_reflog() to pass it a pointer to an\n  entire \"struct expire_reflog_policy_cb\" rather than a pointer to a\n  \"struct cmd_reflog_expire_cb\".\n\n* Change expire_reflog() to accept the argument as a \"void *\" and\n  simply pass it through to the policy functions.\n\n* Change the policy functions, reflog_expiry_prepare(),\n  reflog_expiry_cleanup(), and should_expire_reflog_ent(), to accept\n  \"void *cb_data\" arguments and cast them back to \"struct\n  expire_reflog_policy_cb\" internally.\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/b729effbdbc9ae2d087a83b9e2a165fb8cc04641"}]}