{"push_id":619300157,"size":50,"distinct_size":13,"ref":"refs/heads/pu","head":"a1463dc294da2481e602d9ea7927e0931ff89d9f","before":"d6751e1dc72c85c6e5e74a63eb5f5f4aa0f8ddf0","commits":[{"sha":"c8c3f1d087f2195fd6ef61d6cca8241a808ac11a","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"enter_repo(): fix docs to match code\n\nIn b3256eb (standardize and improve lookup rules for external local\nrepos), enter_repo() was modified to use a different precedence\nordering of suffixes for DWIM of the repository path, and to ensure\nthat the repository path is actually valid instead of just testing\nfor existence.\n\nHowever, the documentation was not modified to reflect these\nchanges.  Fix the documentation to match the code.\n\nDocumentation contributed by Jeff King.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Paul Tan <pyokagan@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/c8c3f1d087f2195fd6ef61d6cca8241a808ac11a"},{"sha":"562bc080934b1bd16099723e80cc82a0dc6356b7","author":{"email":"0706025b2bbcec1ed8d64822f4eccd96314938d0@max630.net","name":"Max Kirillov"},"message":"prune --worktrees: fix expire vs worktree existence condition\n\n`git prune --worktrees` was pruning worktrees which were non-existent OR\nexpired, while it rather should prune those which are orphaned AND\nexpired, as git-checkout documentation describes. Fix it.\n\nAdd test 'not prune proper checkouts', which uses valid but expired\nworktree.\n\nModify test 'not prune recent checkouts' to remove the worktree before\npruning - link in worktrees still must survive. In older form it is\nuseless because would pass always when the other test passes.\n\nSigned-off-by: Max Kirillov <max@max630.net>\nAcked-by: Duy Nguyen <pclouds@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/562bc080934b1bd16099723e80cc82a0dc6356b7"},{"sha":"539d09c3b4d55d3bf652133d0244aa694cc1b444","author":{"email":"9904419133015298990973ad253a390ae1d3133a@glandium.org","name":"Mike Hommey"},"message":"show-branch: show all local heads when only giving one rev along --topics\n\n\"git show-branch --topics <rev> <revs>...\" displays ancestry graph, only\nconsidering commits that are in all given revs, except the first one.\n\n\"git show-branch\" displays ancestry graph for all local branches.\n\nUnfortunately, \"git show-branch --topics <rev>\" only prints out the rev\ninfo for the given rev, and nothing else, e.g.:\n\n  $ git show-branch --topics origin/master\n  [origin/master] Sync with 2.3.3\n\nWhile there is an option to add all remote-tracking branches (-r), and\nanother to add all local+remote branches (-a), there is no option to add\nonly local branches. Adding such an option could be considered, but a\nuser would likely already expect that the above command line considers\nthe lack of rev other than for --topics as meaning all local branches,\nlike when there is no argument at all.\n\nMoreover, when using -r and -a along with --topics, the first local or\nremote-tracking branch, depending on alphabetic order is used instead of\nthe one given after --topics (any rev given on the command line is\nactually simply ignored when either -r or -a is given). And if no rev is\ngiven at all, the fact that the first alphetical branch is the base of\ntopics is probably not expected by users (Maybe --topics should always\nrequire one rev on the command line?)\n\nThis change makes\n  \"show-branch --topics $rev\"\nact as\n  \"show-branch --topics $rev $(git for-each-ref refs/heads\n                               --format='%(refname:short)')\"\n\n  \"show-branch -r --topics $rev ...\"\nact as\n  \"show-branch --topics $rev ... $(git for-each-ref refs/remotes\n                                   --format='%(refname:short)')\"\ninstead of\n  \"show-branch --topics $(git for-each-ref refs/remotes\n                          --format='%(refname:short)')\"\n\nand\n  \"show-branch -a --topics $rev ...\"\nact as\n  \"show-branch --topics $rev ... $(git for-each-ref refs/heads refs/remotes\n                                   --format='%(refname:short)')\"\ninstead of\n  \"show-branch --topics $(git for-each-ref refs/heads refs/remotes\n                          --format='%(refname:short)')\"\n\nSigned-off-by: Mike Hommey <mh@glandium.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/539d09c3b4d55d3bf652133d0244aa694cc1b444"},{"sha":"d7bfb9ee97d10c34e15c6aad4cd11643245332c2","author":{"email":"c9c8286db394f2f3fee3c52ca2101c5b15db0801@agt-the-walker.net","name":"Jérôme Zago"},"message":"gitweb.conf.txt: say \"build-time\", not \"built-time\"\n\n\"build-time\" is used everywhere else.\n\nSigned-off-by: Jérôme Zago <git-patch@agt-the-walker.net>\nReviewed-by: Jakub Narębski <jnareb@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/d7bfb9ee97d10c34e15c6aad4cd11643245332c2"},{"sha":"8391f5073dd2c771909ccc773ada2acbf1669c82","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"remote.c: drop default_remote_name variable\n\nWhen we read the remote config from disk, we update a\ndefault_remote_name variable if we see branch.*.remote\nconfig for the current branch. This isn't wrong, or even all\nthat complicated, but it is a bit simpler (because it\nreduces our overall state) to just lazily compute the\ndefault when we need it.\n\nThe ulterior motive here is that the push config uses a\nsimilar structure, and _is_ much more complicated as a\nresult. That will be simplified in a future patch, and it's\nmore readable if the logic remotes and push-remotes matches.\n\nNote that we also used default_remote_name as a signal that\nthe remote config has been loaded; after this patch, we now\nuse an explicit flag.\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/8391f5073dd2c771909ccc773ada2acbf1669c82"},{"sha":"3d4b747229598c8abd484c177c0615af8ffedf85","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"remote.c: drop \"remote\" pointer from \"struct branch\"\n\nWhen we create each branch struct, we fill in the\n\"remote_name\" field from the config, and then fill in the\nactual \"remote\" field based on that name. However, it turns\nout that nobody really cares about this field. The only two\nsites that access it are:\n\n  1. git-merge, which uses it to notice when the branch does\n     not have a remote defined. But we can easily replace this\n     with looking at remote_name instead.\n\n  2. remote.c itself, when setting up the @{upstream} merge\n     config. But we don't need to save the \"remote\" for\n     that; we can just look it up for the duration of the\n     operation.\n\nGetting rid of it drops one potential source of confusion:\nis the value the match for \"remote_name\", or is it the\nremote we would fetch from when on that branch (i.e., does\nit fall back to \"origin\")?\n\nWhen we add pushremote_name, this question would get even\nmore confusing, as pushremotes have a more complicated\nlookup procedure. It would be nice for the code to be\nconsistent between the remote and pushremote, and this takes\nus one step closer.\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/3d4b747229598c8abd484c177c0615af8ffedf85"},{"sha":"f2a8b8def1406affa53452d9361900ef8cf01b12","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"remote.c: hoist branch.*.remote lookup out of remote_get_1\n\nWe'll want to use this logic as a fallback when looking up\nthe pushremote, so let's pull it out into its own function.\n\nWe don't technically need to make this available outside of\nremote.c, but doing so will provide a consistent API with\npushremote_for_branch, which we will add later.\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/f2a8b8def1406affa53452d9361900ef8cf01b12"},{"sha":"fd9365b012f6fcc35f944109a1e2cbdba1604ae2","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"remote.c: provide per-branch pushremote name\n\nWhen remote.c loads its config, it records the\nbranch.*.pushremote for the current branch along with the\nglobal remote.pushDefault value, and then binds them into a\nsingle value: the default push for the current branch. We\nthen pass this value (which may be NULL) to remote_get_1\nwhen looking up a remote for push.\n\nThis has a few downsides:\n\n  1. It's confusing. The early-binding of the \"current\n     value\" led to bugs like the one fixed by 98b406f\n     (remote: handle pushremote config in any order,\n     2014-02-24). And the fact that pushremotes fall back to\n     ordinary remotes is not explicit at all; it happens\n     because remote_get_1 cannot tell the difference between\n     \"we are not asking for the push remote\" and \"there is\n     no push remote configured\".\n\n  2. It throws away intermediate data. After read_config()\n     finishes, we have no idea what the value of\n     remote.pushDefault was, because the string has been\n     overwritten by the current branch's\n     branch.*.pushremote.\n\n  3. It doesn't record other data. We don't note the\n     branch.*.pushremote value for anything but the current\n     branch.\n\nLet's make this more like the fetch-remote config. We'll\nrecord the pushremote for each branch, and then explicitly\ncompute the correct remote for the current branch at the\ntime of reading.\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/fd9365b012f6fcc35f944109a1e2cbdba1604ae2"},{"sha":"b8d68c2003ed0c7e46db9172845341f09e86bcf9","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"sha1_name: refactor upstream_mark\n\nWe will be adding new mark types in the future, so separate\nthe suffix data from the logic.\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/b8d68c2003ed0c7e46db9172845341f09e86bcf9"},{"sha":"5946fe1616d42be2e65a1ef2a18e95093ed72fbc","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"sha1_name: implement @{push} shorthand\n\nIn a triangular workflow, each branch may have two distinct\npoints of interest: the @{upstream} that you normally pull\nfrom, and the destination that you normally push to. There\nisn't a shorthand for the latter, but it's useful to have.\n\nFor instance, you may want to know which commits you haven't\npushed yet:\n\n  git log @{push}..\n\nOr as a more complicated example, imagine that you normally\npull changes from origin/master (which you set as your\n@{upstream}), and push changes to your own personal fork\n(e.g., as myfork/topic). You may push to your fork from\nmultiple machines, requiring you to integrate the changes\nfrom the push destination, rather than upstream. With this\npatch, you can just do:\n\n  git rebase @{push}\n\nrather than typing out the full name.\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/5946fe1616d42be2e65a1ef2a18e95093ed72fbc"},{"sha":"a78fc4af8246e06de4fc10f685a84778cf33aa12","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ph/push-doc-cas' into maint\n\n* ph/push-doc-cas:\n  git-push.txt: clean up force-with-lease wording","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/a78fc4af8246e06de4fc10f685a84778cf33aa12"},{"sha":"ab0fb57aac6c5b6f074c07c7e2729bcff58cc45d","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jc/report-path-error-to-dir' into maint\n\nCode clean-up.\n\n* jc/report-path-error-to-dir:\n  report_path_error(): move to dir.c","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/ab0fb57aac6c5b6f074c07c7e2729bcff58cc45d"},{"sha":"ad00aebfe93b3fc79c5ed54569f1603b8030783a","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'ss/pull-rebase-preserve' into maint\n\n* ss/pull-rebase-preserve:\n  docs: clarify what git-rebase's \"-p\" / \"--preserve-merges\" does\n  docs: clarify \"preserve\" option wording for git-pull","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/ad00aebfe93b3fc79c5ed54569f1603b8030783a"},{"sha":"52735a689270bb1de94eb3de198594b36caed9bb","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Git 2.3.5\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/52735a689270bb1de94eb3de198594b36caed9bb"},{"sha":"cf8a8c6bd53c43e29cb735eb7934ffc996475d77","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Sync with 2.3.5\n\n* maint:\n  Git 2.3.5\n  docs: clarify what git-rebase's \"-p\" / \"--preserve-merges\" does","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/cf8a8c6bd53c43e29cb735eb7934ffc996475d77"},{"sha":"5476798f648b7b38c63cb4d0e6945eadde1b80a1","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'nd/multiple-work-trees' (early part) into jch\n\n* 'nd/multiple-work-trees' (early part): (40 commits)\n  t1501: fix test with split index\n  t2026: fix broken &&-chain\n  t2026 needs procondition SANITY\n  git-checkout.txt: a note about multiple checkout support for submodules\n  checkout: add --ignore-other-wortrees\n  checkout: pass whole struct to parse_branchname_arg instead of individual flags\n  git-common-dir: make \"modules/\" per-working-directory directory\n  checkout: do not fail if target is an empty directory\n  t2025: add a test to make sure grafts is working from a linked checkout\n  checkout: don't require a work tree when checking out into a new one\n  git_path(): keep \"info/sparse-checkout\" per work-tree\n  count-objects: report unused files in $GIT_DIR/worktrees/...\n  gc: support prune --worktrees\n  gc: factor out gc.pruneexpire parsing code\n  gc: style change -- no SP before closing parenthesis\n  checkout: clean up half-prepared directories in --to mode\n  checkout: reject if the branch is already checked out elsewhere\n  prune: strategies for linked checkouts\n  checkout: support checking out into a new working directory\n  use new wrapper write_file() for simple file writing\n  ...","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/5476798f648b7b38c63cb4d0e6945eadde1b80a1"},{"sha":"f7ef05f3efe39e7e9c281ea729f8e1a92b7070a6","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'bc/object-id' into jch\n\nIdentify parts of the code that knows that we use SHA-1 hash to\nname our objects too much, and use (1) symbolic constants instead\nof hardcoded 20 as byte count and/or (2) use struct object_id\ninstead of unsigned char [20] for object names.\n\nAlso waiting for reviews on the follow-up series ($gmane/265939)\nthat seems to have seen no interest X-<.\n\n* bc/object-id:\n  apply: convert threeway_stage to object_id\n  patch-id: convert to use struct object_id\n  commit: convert parts to struct object_id\n  diff: convert struct combine_diff_path to object_id\n  bulk-checkin.c: convert to use struct object_id\n  zip: use GIT_SHA1_HEXSZ for trailers\n  archive.c: convert to use struct object_id\n  bisect.c: convert leaf functions to use struct object_id\n  define utility functions for object IDs\n  define a structure for object IDs","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/f7ef05f3efe39e7e9c281ea729f8e1a92b7070a6"},{"sha":"047dd7492e559d669f7502e9b74a3ea5c4242e2f","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'pt/credential-xdg' into jch\n\nTweak the sample \"store\" backend of the credential helper to honor\nXDG configuration file locations when specified.\n\nAs this may see further updates, and also this is not an urgent\nissue anyway, I'll give it a bit more time for it to simmer.\n\n* pt/credential-xdg:\n  t0302: \"unreadable\" test needs POSIXPERM\n  t0302: test credential-store support for XDG_CONFIG_HOME\n  git-credential-store: support XDG_CONFIG_HOME\n  git-credential-store: support multiple credential files","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/047dd7492e559d669f7502e9b74a3ea5c4242e2f"},{"sha":"cffc5d11b6bbfa021f7abb4079a3dfa507af4e45","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'nd/diff-i-t-a' into jch\n\nAfter \"git add -N\", the path appeared in output of \"git diff HEAD\"\nand \"git diff --cached HEAD\", leading \"git status\" to classify it\nas \"Changes to be committed\".  Such a path, however, is not yet to\nbe scheduled to be committed.  \"git diff\" showed the change to the\npath as modification, not as a \"new file\", in the header of its\noutput.\n\nTreat such paths as \"yet to be added to the index but Git already\nknow about them\"; \"git diff HEAD\" and \"git diff --cached HEAD\"\nshould not talk about them, and \"git diff\" should show them as new\nfiles yet to be added to the index.\n\n* nd/diff-i-t-a:\n  diff-lib.c: adjust position of i-t-a entries in diff","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/cffc5d11b6bbfa021f7abb4079a3dfa507af4e45"},{"sha":"ee7e4698c2d413279b146c577d024608e8aae154","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"Merge branch 'jc/diff-no-index-d-f' into jch\n\nThe usual \"git diff\" when seeing a file turning into a directory\nshowed a patchset to remove the file and create all files in the\ndirectory, but \"git diff --no-index\" simply refused to work.  Also,\nwhen asked to compare a file and a directory, imitate POSIX \"diff\"\nand compare the file with the file with the same name in the\ndirectory, instead of refusing to run.\n\n* jc/diff-no-index-d-f:\n  diff-no-index: align D/F handling with that of normal Git\n  diff-no-index: DWIM \"diff D F\" into \"diff D/F F\"","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/ee7e4698c2d413279b146c577d024608e8aae154"}]}