{"push_id":1461120480,"size":35,"distinct_size":0,"ref":"refs/heads/jk/pager-subcommand","head":"39472daf799644002cb994cf65b72d7ef777fe72","before":"ca59bfc6be674117e2d622b8cb0afbafa6064463","commits":[{"sha":"a2e7b04c443e63696d3c61bac0734486132eedbf","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"rev-parse: fix parent shorthands with --symbolic\n\nThe try_parent_shorthands() function shows each parent via\nshow_rev(). We pass the correct parent sha1, but our \"name\"\nparameter still points at the original refname. So asking\nfor a regular rev-parse works fine (it prints the sha1s),\nbut asking for the symbolic name gives nonsense like:\n\n    $ git rev-parse --symbolic HEAD^-1\n    HEAD\n    ^HEAD\n\nwhich is always an empty set of commits. Asking for \"^!\" is\nlikewise broken, with the added bonus that its prints ^HEAD\nfor _each_ parent. And \"^@\" just prints HEAD repeatedly.\n\nArguably it would be correct to just pass NULL as the name\nhere, and always get the parent expressed as a sha1. The\n\"--symbolic\" documentaton claims only \"as close to the\noriginal input as possible\", and we certainly fallback to\nsha1s where necessary. But it's pretty easy to generate a\nsymbolic name on the fly from the original.\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/peff/git/commits/a2e7b04c443e63696d3c61bac0734486132eedbf"},{"sha":"147394470c4be34038e520e74a017da6a3745e90","author":{"name":"Heiko Voigt","email":"67d4d701b1a80a67eac90488828391f1e67a9045@hvoigt.net"},"message":"serialize collection of changed submodules\n\nTo check whether a submodule needs to be pushed we need to collect all\nchanged submodules. Lets collect them first and then execute the\npossibly expensive test whether certain revisions are already pushed\nonly once per submodule.\n\nThere is further potential for optimization since we can assemble one\ncommand and only issued that instead of one call for each remote ref in\nthe submodule.\n\nSigned-off-by: Heiko Voigt <hvoigt@hvoigt.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/147394470c4be34038e520e74a017da6a3745e90"},{"sha":"9cfa1c260fd10dadb2dfbb62f8e120a10cabfd06","author":{"name":"Heiko Voigt","email":"67d4d701b1a80a67eac90488828391f1e67a9045@hvoigt.net"},"message":"serialize collection of refs that contain submodule changes\n\nWe are iterating over each pushed ref and want to check whether it\ncontains changes to submodules. Instead of immediately checking each ref\nlets first collect them and then do the check for all of them in one\nrevision walk.\n\nSigned-off-by: Heiko Voigt <hvoigt@hvoigt.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/9cfa1c260fd10dadb2dfbb62f8e120a10cabfd06"},{"sha":"5b6607d23f8a262e1c0ede954f0477664934eed8","author":{"name":"Heiko Voigt","email":"67d4d701b1a80a67eac90488828391f1e67a9045@hvoigt.net"},"message":"batch check whether submodule needs pushing into one call\n\nWe run a command for each sha1 change in a submodule. This is\nunnecessary since we can simply batch all sha1's we want to check into\none command. Lets do it so we can speedup the check when many submodule\nchanges are in need of checking.\n\nSigned-off-by: Heiko Voigt <hvoigt@hvoigt.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/5b6607d23f8a262e1c0ede954f0477664934eed8"},{"sha":"250ab24ab3a35d5857855a2e00483dcd8867fdca","author":{"name":"Heiko Voigt","email":"67d4d701b1a80a67eac90488828391f1e67a9045@hvoigt.net"},"message":"submodule_needs_pushing(): explain the behaviour when we cannot answer\n\nWhen we do not have commits that are involved in the update of the\nsuperproject in our copy of submodule, we cannot tell if the remote\nend needs to acquire these commits to be able to check out the\nsuperproject tree.  Explain why we answer \"no there is no need/point\nin pushing from our submodule repository\" in this case.\n\nSigned-off-by: Heiko Voigt <hvoigt@hvoigt.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/250ab24ab3a35d5857855a2e00483dcd8867fdca"},{"sha":"5423d2e7005eca89481d3137569b2b96b4d133ff","author":{"name":"David Turner","email":"0934176aaa200b6720ade51aed5701bddd3873f4@twosigma.com"},"message":"submodules: allow empty working-tree dirs in merge/cherry-pick\n\nWhen a submodule is being merged or cherry-picked into a working\ntree that already contains a corresponding empty directory, do not\nrecord a conflict.\n\nOne situation where this bug appears is:\n\n- Commit 1 adds a submodule\n- Commit 2 removes that submodule and re-adds it into a subdirectory\n       (sub1 to sub1/sub1).\n- Commit 3 adds an unrelated file.\n\nNow the user checks out commit 1 (first deinitializing the submodule),\nand attempts to cherry-pick commit 3.  Previously, this would fail,\nbecause the incoming submodule sub1/sub1 would falsely conflict with\nthe empty sub1 directory.\n\nThis patch ignores the empty sub1 directory, fixing the bug.  We only\nignore the empty directory if the object being emplaced is a\nsubmodule, which expects an empty directory.\n\nSigned-off-by: David Turner <dturner@twosigma.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/5423d2e7005eca89481d3137569b2b96b4d133ff"},{"sha":"1aa73658405ad423127b3c14ac13e46f9ad0163a","author":{"name":"Brandon Williams","email":"0bba27b6e746038cce1b8ffca137bc89fbdd7a14@google.com"},"message":"push: --dry-run updates submodules when --recurse-submodules=on-demand\n\nThis patch adds a test to illustrate how push run with --dry-run doesn't\nactually perform a dry-run when push is configured to push submodules\non-demand.  Instead all submodules which need to be pushed are actually\npushed to their remotes while any updates for the superproject are\nperformed as a dry-run.  This is a bug and not the intended behaviour of\na dry-run.\n\nSigned-off-by: Brandon Williams <bmwill@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/1aa73658405ad423127b3c14ac13e46f9ad0163a"},{"sha":"0301c821c5cd124733accfbff0ddbf7f0b0ee9fb","author":{"name":"Brandon Williams","email":"0bba27b6e746038cce1b8ffca137bc89fbdd7a14@google.com"},"message":"push: fix --dry-run to not push submodules\n\nTeach push to respect the --dry-run option when configured to\nrecursively push submodules 'on-demand'.  This is done by passing the\n--dry-run flag to the child process which performs a push for a\nsubmodules when performing a dry-run.\n\nIn order to preserve good user experience, the additional check for\nunpushed submodules is skipped during a dry-run when\n--recurse-submodules=on-demand.  The check is skipped because the submodule\npushes were performed as dry-runs and this check would always fail as the\nsubmodules would still need to be pushed.\n\nSigned-off-by: Brandon Williams <bmwill@google.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/0301c821c5cd124733accfbff0ddbf7f0b0ee9fb"},{"sha":"f054996d8370c3213f8c8cbde908545ba6c0f854","author":{"name":"Nguyễn Thái Ngọc Duy","email":"d0e3b15a74ff6c70e81434a55b9c843230dc3715@gmail.com"},"message":"worktree.c: zero new 'struct worktree' on allocation\n\nThis keeps things a bit simpler when we add more fields, knowing that\ndefault values are always zero.\n\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/f054996d8370c3213f8c8cbde908545ba6c0f854"},{"sha":"96f09e2a1100d78aacad80a741c3046031fda6b4","author":{"name":"Nguyễn Thái Ngọc Duy","email":"d0e3b15a74ff6c70e81434a55b9c843230dc3715@gmail.com"},"message":"worktree: reorder an if statement\n\nThis is no-op. But it helps reduce diff noise in the next patch.\n\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/96f09e2a1100d78aacad80a741c3046031fda6b4"},{"sha":"a234563a3b329c8513fabbe9d8f9435987f10eb6","author":{"name":"Nguyễn Thái Ngọc Duy","email":"d0e3b15a74ff6c70e81434a55b9c843230dc3715@gmail.com"},"message":"get_worktrees() must return main worktree as first item even on error\n\nThis is required by git-worktree.txt, stating that the main worktree is\nthe first line (especially in --porcelain mode when we can't just change\nbehavior at will).\n\nThere's only one case when get_worktrees() may skip main worktree, when\nparse_ref() fails. Update the code so that we keep first item as main\nworktree and return something sensible in this case:\n\n - In user-friendly mode, since we're not constraint by anything,\n   returning \"(error)\" should do the job (we already show \"(detached\n   HEAD)\" which is not machine-friendly). Actually errors should be\n   printed on stderr by parse_ref() (*)\n\n - In plumbing mode, we do not show neither 'bare', 'detached' or\n   'branch ...', which is possible by the format description if I read\n   it right.\n\nCareful readers may realize that when the local variable \"head_ref\" in\nget_main_worktree() is emptied, add_head_info() will do nothing to\nwt->head_sha1. But that's ok because head_sha1 is zero-ized in the\nprevious patch.\n\n(*) Well, it does not. But it's supposed to be a stop gap implementation\n    until we can reuse refs code to parse \"ref: \" stuff in HEAD, from\n    resolve_refs_unsafe(). Now may be the time since refs refactoring is\n    mostly done.\n\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/a234563a3b329c8513fabbe9d8f9435987f10eb6"},{"sha":"4fff1ef7ffe0e370459242cf08c51177eeb4181f","author":{"name":"Nguyễn Thái Ngọc Duy","email":"d0e3b15a74ff6c70e81434a55b9c843230dc3715@gmail.com"},"message":"worktree.c: get_worktrees() takes a new flag argument\n\nThis is another no-op patch, in preparation for get_worktrees() to do\noptional things, like sorting.\n\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/4fff1ef7ffe0e370459242cf08c51177eeb4181f"},{"sha":"4df1d4d4666eb26b420d5b386010470729846b8c","author":{"name":"Nguyễn Thái Ngọc Duy","email":"d0e3b15a74ff6c70e81434a55b9c843230dc3715@gmail.com"},"message":"worktree list: keep the list sorted\n\nIt makes it easier to write tests for. But it should also be good for\nthe user since locating a worktree by eye would be easier once they\nnotice this.\n\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/4df1d4d4666eb26b420d5b386010470729846b8c"},{"sha":"fa6ca11105ccb46b785fd4ed58c333d5ad7f1774","author":{"name":"Nguyễn Thái Ngọc Duy","email":"d0e3b15a74ff6c70e81434a55b9c843230dc3715@gmail.com"},"message":"merge-recursive.c: use string_list_sort instead of qsort\n\nMerge-recursive sorts a string list using a raw qsort(), where it\nfeeds the \"items\" from one struct but the \"nr\" and size fields from\nanother struct. This isn't a bug because one list is a copy of the\nother, but it's unnecessarily confusing (and also caused our recent\nQSORT() cleanups via coccinelle to miss this call site).\n\nLet's use string_list_sort() instead, which is more concise and harder\nto get wrong. Note that we need to adjust our comparison function,\nwhich gets fed only the strings now, not the string_list_items. That's\nOK because we don't use the \"util\" field as part of our sort.\n\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/fa6ca11105ccb46b785fd4ed58c333d5ad7f1774"},{"sha":"7c10605d2ccf499af6136e993cf248892be39168","author":{"name":"David Aguilar","email":"46a7f9d1a30407212a0554037e59d711a53991ef@gmail.com"},"message":"mergetool: honor mergetool.$tool.trustExitCode for built-in tools\n\nBuilt-in merge tools contain a hard-coded assumption about\nwhether or not a tool's exit code can be trusted to determine\nthe success or failure of a merge.  Tools whose exit codes are\nnot trusted contain calls to check_unchanged() in their\nmerge_cmd() functions.\n\nA problem with this is that the trustExitCode configuration is\nnot honored for built-in tools.\n\nTeach built-in tools to honor the trustExitCode configuration.\nExtend run_merge_cmd() so that it is responsible for calling\ncheck_unchanged() when a tool's exit code cannot be trusted.\nRemove check_unchanged() calls from scriptlets since they are no\nlonger responsible for calling it.\n\nWhen no configuration is present, exit_code_trustable() is\nchecked to see whether the exit code should be trusted.\nThe default implementation returns false.\n\nTools whose exit codes can be trusted override\nexit_code_trustable() to true.\n\nReported-by: Dun Peal <dunpealer@gmail.com>\nSigned-off-by: David Aguilar <davvid@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/7c10605d2ccf499af6136e993cf248892be39168"},{"sha":"2967284456e9053ee8dd26148c22432a4776a3dc","author":{"name":"David Aguilar","email":"46a7f9d1a30407212a0554037e59d711a53991ef@gmail.com"},"message":"mergetools/vimdiff: trust Vim's exit code\n\nAllow vimdiff users to signal that they do not want to use the\nresult of a merge by exiting with \":cquit\", which tells Vim to\nexit with an error code.\n\nThis is better than the current behavior because it allows users\nto directly flag that the merge is bad, using a standard Vim\nfeature, rather than relying on a timestamp heuristic that is\nunforgiving to users that save in-progress merge files.\n\nThe original behavior can be restored by configuring\nmergetool.vimdiff.trustExitCode to false.\n\nReported-by: Dun Peal <dunpealer@gmail.com>\nSigned-off-by: David Aguilar <davvid@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/2967284456e9053ee8dd26148c22432a4776a3dc"},{"sha":"b34fa5777d84abf123cd6b306e2a9a02dac4fc86","author":{"name":"Vinicius Kursancew","email":"985a8274a9d4abbd221d2e32e6527f807d4b7bb3@gmail.com"},"message":"git-p4: allow submit to create shelved changelists.\n\nAdd a --shelve command line argument which invokes p4 shelve instead\nof submitting changes. After shelving the changes are reverted from the\np4 workspace.\n\nSigned-off-by: Vinicius Kursancew <viniciusalexandre@gmail.com>\nReviewed-by: Luke Diamand <luke@diamand.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/b34fa5777d84abf123cd6b306e2a9a02dac4fc86"},{"sha":"fa3142c9193bb31e7154d0f0cd7d15208a8dd51a","author":{"name":"Jeff King","email":"7e57302763bea699aee296fb53304dc616ab92d5@peff.net"},"message":"t7610: clean up foo.XXXXXX tmpdir\n\nThe lazy prereq for MKTEMP uses \"mktemp -t\" to see if\nmergetool's internal mktemp call will be able to run. But\nunlike the call inside mergetool, we do not ever bother to\nclean up the result, and the /tmp of git developers will\nslowly fill up with \"foo.XXXXXX\" directories as they run the\ntest suite over and over.  Let's clean up the directory\nafter we've verified its creation.\n\nNote that we don't use test_when_finished here, and instead\njust make rmdir part of the &&-chain. We should only remove\nsomething that we're confident we just created. A failure in\nthe middle of the chain either means there's nothing to\nclean up, or we are very confused and should err on the side\nof caution.\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/peff/git/commits/fa3142c9193bb31e7154d0f0cd7d15208a8dd51a"},{"sha":"46c609e9ffdbf8d9aba096836386b57371ed16b8","author":{"name":"Luke Diamand","email":"20708a612f2164e970e0608bcf18a483ca8c8e72@diamand.org"},"message":"git-p4: support updating an existing shelved changelist\n\nAdds new option \"--update-shelve CHANGELIST\" which updates\nan existing shelved changelist.\n\nThe original changelist must have been created by the current user.\n\nThis allows workflow something like:\n\n   hack hack hack\n   git commit\n   git p4 submit --shelve\n   $mail interested parties about shelved changelist\n   make corrections\n   git commit --amend\n   git p4 submit --update-shelve $CHANGELIST\n   $mail interested parties about shelved changelist\n   etc\n\nSigned-off-by: Luke Diamand <luke@diamand.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/46c609e9ffdbf8d9aba096836386b57371ed16b8"},{"sha":"89a6ecc55b55ae87c39c5d9edb115731550fba95","author":{"name":"Lars Schneider","email":"1083276a35727bea5073871fe5190a13ebd8558f@gmail.com"},"message":"git-p4: add config to retry p4 commands; retry 3 times by default\n\nP4 commands can fail due to random network issues. P4 users can counter\nthese issues by using a retry flag supported by all p4 commands [1].\n\nAdd an integer Git config value `git-p4.retries` to define the number of\nretries for all p4 invocations. If the config is not defined then set\nthe default retry count to 3.\n\n[1] https://www.perforce.com/perforce/doc.current/manuals/cmdref/global.options.html\n\nSigned-off-by: Lars Schneider <larsxschneider@gmail.com>\nReviewed-by: Luke Diamand <luke@diamand.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/89a6ecc55b55ae87c39c5d9edb115731550fba95"}]}
{"actor":{"display_login":"peff"}}