{"push_id":686760120,"size":111,"distinct_size":0,"ref":"refs/heads/maint","head":"69f9a6e54a46c4a75dff680047a465d04cca20ca","before":"9eabf5b536662000f79978c4d1b6e4eff5c8d785","commits":[{"sha":"cb2c2796e01c6c211b006bd1d15041b7a08d9acb","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"git-credential-store: support multiple credential files\n\nPreviously, git-credential-store only supported storing credentials in a\nsingle file: ~/.git-credentials. In order to support the XDG base\ndirectory specification[1], git-credential-store needs to be able to\nlookup and erase credentials from multiple files, as well as to pick the\nappropriate file to write to so that the credentials can be found on\nsubsequent lookups.\n\n[1] http://standards.freedesktop.org/basedir-spec/basedir-spec-0.7.html\n\nNote that some credential storage files may not be owned, readable or\nwritable by the user, as they may be system-wide files that are meant to\napply to every user.\n\nInstead of a single file path, lookup_credential(), remove_credential()\nand store_credential() now take a precedence-ordered string_list of\nfile paths. lookup_credential() expects both user-specific and\nsystem-wide credential files to be provided to support the use case of\nsystem administrators setting default credentials for users.\nremove_credential() and store_credential() expect only the user-specific\ncredential files to be provided as usually the only config files that\nusers are allowed to edit are their own user-specific ones.\n\nlookup_credential() will read these (user-specific and system-wide) file\npaths in order until it finds the 1st matching credential and print it.\nAs some files may be private and thus unreadable, any file which cannot\nbe read will be ignored silently.\n\nremove_credential() will erase credentials from all (user-specific)\nfiles in the list.  This is because if credentials are only erased from\nthe file with the highest precedence, a matching credential may still be\nfound in a file further down the list. (Note that due to the lockfile\ncode, this requires the directory to be writable, which should be so for\nuser-specific config files)\n\nstore_credential() will write the credentials to the first existing\n(user-specific) file in the list. If none of the files in the list\nexist, store_credential() will write to the filename specified by the\nfirst item of the filename list. For backwards compatibility, this\nfilename should be \"~/.git-credentials\".\n\nHelped-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>\nHelped-by: Junio C Hamano <gitster@pobox.com>\nHelped-by: Jeff King <peff@peff.net>\nSigned-off-by: Paul Tan <pyokagan@gmail.com>\nReviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/cb2c2796e01c6c211b006bd1d15041b7a08d9acb"},{"sha":"44b228985e59966588704eaa7c4ec9832ba0f8ee","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"git-credential-store: support XDG_CONFIG_HOME\n\nAdd $XDG_CONFIG_HOME/git/credentials to the default credential search\npath of git-credential-store. This allows git-credential-store to\nsupport user-specific configuration files in accordance with the XDG\nbase directory specification[1].\n\n[1] http://standards.freedesktop.org/basedir-spec/basedir-spec-0.7.html\n\n~/.git-credentials has a higher precedence than\n$XDG_CONFIG_HOME/git/credentials when looking up credentials.  This\nmeans that if any duplicate matching credentials are found in the xdg\nfile (due to ~/.git-credentials being updated by old versions of git or\noutdated tools), they will not be used at all. This is to give the user\nsome leeway in switching to old versions of git while keeping the xdg\ndirectory. This is consistent with the behavior of git-config.\n\nHowever, the higher precedence of ~/.git-credentials means that as long\nas ~/.git-credentials exist, all credentials will be written to the\n~/.git-credentials file even if the user has an xdg file as having a\n~/.git-credentials file indicates that the user wants to preserve\nbackwards-compatibility. This is also consistent with the behavior of\ngit-config.\n\nTo make this precedence explicit in docs/git-credential-store, add a new\nsection FILES that lists out the credential file paths in their order of\nprecedence, and explain how the ordering affects the lookup, storage and\nerase operations.\n\nAlso, update the documentation for --file to briefly explain the\noperations on multiple files if the --file option is not provided.\n\nSince the xdg file will not be used unless it actually exists, to\nprevent the situation where some credentials are present in the xdg file\nwhile some are present in the home file, users are recommended to not\ncreate the xdg file if they require compatibility with old versions of\ngit or outdated tools. Note, though, that \"erase\" can be used to\nexplicitly erase matching credentials from all files.\n\nHelped-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>\nHelped-by: Junio C Hamano <gitster@pobox.com>\nHelped-by: Jeff King <peff@peff.net>\nHelped-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Paul Tan <pyokagan@gmail.com>\nReviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/44b228985e59966588704eaa7c4ec9832ba0f8ee"},{"sha":"7e314539d6f3c1e53a826e8a857cef174a023510","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"t0302: test credential-store support for XDG_CONFIG_HOME\n\nt0302 now tests git-credential-store's support for the XDG user-specific\nconfiguration file $XDG_CONFIG_HOME/git/credentials. Specifically:\n\n* Ensure that the XDG file is strictly opt-in. It should not be created\n  by git at all times if it does not exist.\n\n* Conversely, if the XDG file exists, ~/.git-credentials should\n  not be created at all times.\n\n* If both the XDG file and ~/.git-credentials exists, then both files\n  should be used for credential lookups. However, credentials should\n  only be written to ~/.git-credentials.\n\n* Credentials must be erased from both files.\n\n* $XDG_CONFIG_HOME can be a custom directory set by the user as per the\n  XDG base directory specification. Test that git-credential-store\n  respects that, but defaults to \"~/.config/git/credentials\" if it does\n  not exist or is empty.\n\nHelped-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>\nHelped-by: Junio C Hamano <gitster@pobox.com>\nHelped-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Paul Tan <pyokagan@gmail.com>\nReviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/7e314539d6f3c1e53a826e8a857cef174a023510"},{"sha":"efee5981d3d5d72f9cc7208ba7c5e9ce4afc8598","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"t0302: \"unreadable\" test needs POSIXPERM\n\nNoticed and fixed by Eric Sunshine, confirmed by Johannes Sixt.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/efee5981d3d5d72f9cc7208ba7c5e9ce4afc8598"},{"sha":"319b678a7b7c7fd03242b2b91d936f65e798cd06","author":{"email":"696e3fbcf235d40b6ea1ebd61c87cbea79d444e7@peff.net","name":"Jeff King"},"message":"sha1_file: squelch \"packfile cannot be accessed\" warnings\n\nWhen we find an object in a packfile index, we make sure we\ncan still open the packfile itself (or that it is already\nopen), as it might have been deleted by a simultaneous\nrepack. If we can't access the packfile, we print a warning\nfor the user and tell the caller that we don't have the\nobject (we can then look in other packfiles, or find a loose\nversion, before giving up).\n\nThe warning we print to the user isn't really accomplishing\nanything, and it is potentially confusing to users. In the\nnormal case, it is complete noise; we find the object\nelsewhere, and the user does not have to care that we racily\nsaw a packfile index that became stale. It didn't affect the\noperation at all.\n\nA possibly more interesting case is when we later can't find\nthe object, and report failure to the user. In this case the\nwarning could be considered a clue toward that ultimate\nfailure. But it's not really a useful clue in practice. We\nwouldn't even print it consistently (since we are racing\nwith another process, we might not even see the .idx file,\nor we might win the race and open the packfile, completing\nthe operation).\n\nThis patch drops the warning entirely (not only from the\nfill_pack_entry site, but also from an identical use in\npack-objects). If we did find the warning interesting in the\nerror case, we could stuff it away and reveal it to the user\nwhen we later die() due to the broken object. But that\ncomplexity just isn't worth it.\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/319b678a7b7c7fd03242b2b91d936f65e798cd06"},{"sha":"1154aa42159383c3339567f6385c21a615c8b93a","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"fmt-merge-msg: plug small leak of commit buffer\n\nA broken or badly formatted commit might not record author or\ncommitter lines or we may not find a valid name on them.  The\nfunction record_person() returned after calling get_commit_buffer()\nwithout calling unuse_commit_buffer() on the memory it obtained in\nsuch cases, potentially leaking it.\n\nHelped-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/1154aa42159383c3339567f6385c21a615c8b93a"},{"sha":"099d2d86a8e17218aca31bf7c4070a820baf4baa","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"ignore: info/exclude should trump core.excludesfile\n\n$GIT_DIR/info/exclude and core.excludesfile (which falls back to\n$XDG_HOME/git/ignore) are both ways to override the ignore pattern\nlists given by the project in .gitignore files.  The former, which\nis per-repository personal preference, should take precedence over\nthe latter, which is a personal preference default across different\nrepositories that are accessed from that machine.  The existing\ndocumentation also agrees.\n\nHowever, the precedence order was screwed up between these two from\nthe very beginning when 896bdfa2 (add: Support specifying an\nexcludes file with a configuration variable, 2007-02-27) introduced\ncore.excludesfile variable.\n\nNoticed-by: Yohei Endo <yoheie@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/099d2d86a8e17218aca31bf7c4070a820baf4baa"},{"sha":"9a35c14d64c3f76f99dd2853077e27cde2a30db7","author":{"email":"60bcaaf7315c83cfbabab363ab7b974ac6f57ac1@iveqy.com","name":"Fredrik Gustafsson"},"message":"Documentation: clarify how \"git commit\" cleans up the edited log message\n\nThe `-v` shows a unified diff in the editor to edit the commit\nmessage to help the user to describe the change.  The diff is\nstripped and will not become a part of the commit message.\n\nAdd a note about this with the `-v` description and slightly modify\nthe description for the default `--cleanup` mode.\n\nSigned-off-by: Fredrik Gustafsson <iveqy@iveqy.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/9a35c14d64c3f76f99dd2853077e27cde2a30db7"},{"sha":"37ee646e72d7f39d61a538e21a4c2721e32cb444","author":{"email":"738bdd359be778fee9f0fc4e2934ad72f436ceda@crustytoothpaste.net","name":"brian m. carlson"},"message":"connect: simplify SSH connection code path\n\nThe code path used in git_connect pushed the majority of the SSH\nconnection code into an else block, even though the if block returns.\nSimplify the code by eliminating the else block, as it is unneeded.\n\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/37ee646e72d7f39d61a538e21a4c2721e32cb444"},{"sha":"d1018c2494c05e6a27ec5945902306cfb9e45b0c","author":{"email":"738bdd359be778fee9f0fc4e2934ad72f436ceda@crustytoothpaste.net","name":"brian m. carlson"},"message":"t5601: fix quotation error leading to skipped tests\n\nOne of the tests in t5601 used single quotes to delimit an argument\ncontaining spaces.  However, this caused test_expect_success to be\npassed three arguments instead of two, which in turn caused the test\nname to be treated as a prerequisite instead of a test name.  As there\nwas no prerequisite called \"bracketed hostnames are still ssh\", the test\nwas always skipped.\n\nBecause this test was always skipped, the fact that it passed the\narguments in the wrong order was obscured.  Use double quotes inside the\ntest and reorder the arguments so that the test runs and properly\nreflects the arguments that are passed to ssh.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/d1018c2494c05e6a27ec5945902306cfb9e45b0c"},{"sha":"baaf233755f71c057d28b9e8692e24d4fca7d22f","author":{"email":"738bdd359be778fee9f0fc4e2934ad72f436ceda@crustytoothpaste.net","name":"brian m. carlson"},"message":"connect: improve check for plink to reduce false positives\n\nThe git_connect function has code to handle plink and tortoiseplink\nspecially, as they require different command line arguments from\nOpenSSH (-P instead of -p for ports; tortoiseplink additionally requires\n-batch).  However, the match was done by checking for \"plink\" anywhere\nin the string, which led to a GIT_SSH value containing \"uplink\" being\ntreated as an invocation of putty's plink.\n\nImprove the check by looking for \"plink\" or \"tortoiseplink\" (or those\nnames suffixed with \".exe\") only in the final component of the path.\nThis has the downside that a program such as \"plink-0.63\" would no\nlonger be recognized, but the increased robustness is likely worth it.\nAdd tests to cover these cases to avoid regressions.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\nAcked-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/baaf233755f71c057d28b9e8692e24d4fca7d22f"},{"sha":"8cbc57ca1109ba455c6098654b7d732a01fd89fd","author":{"email":"9b628111aab41d580e151622bf2807b46b6284d5@cisco.com","name":"Phil Hord"},"message":"rebase -i: redo tasks that die during cherry-pick\n\nWhen rebase--interactive processes a task, it removes the item from\nthe todo list and appends it to another list of executed tasks. If a\npick (this includes squash and fixup) fails before the index has\nrecorded the changes, take the corresponding item and put it on the todo\nlist again. Otherwise, the changes introduced by the scheduled commit\nwould be lost.\n\nThat kind of decision is possible since the cherry-pick command\nsignals why it failed to apply the changes of the given commit. Either\nthe changes are recorded in the index using a conflict (return value 1)\nand rebase does not continue until they are resolved or the changes\nare not recorded in the index (return value neither 0 nor 1) and\nrebase has to try again with the same task.\n\nAdd a test cases for regression testing to the \"rebase-interactive\"\ntest suite.\n\nSigned-off-by: Fabian Ruch <bafain@gmail.com>\nSigned-off-by: Phil Hord <hordp@cisco.com>\nAcked-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/8cbc57ca1109ba455c6098654b7d732a01fd89fd"},{"sha":"4bf256d67a85bed1e175ecc2706322eafe4489ca","author":{"email":"955341c97b9d93a23c19524fc0105a6405902afe@web.de","name":"Torsten Bögershausen"},"message":"blame: CRLF in the working tree and LF in the repo\n\nA typical setup under Windows is to set core.eol to CRLF, and text\nfiles are marked as \"text\" in .gitattributes, or core.autocrlf is\nset to true.\n\nAfter 4d4813a5 \"git blame\" no longer works as expected for such a\nset-up.  Every line is annotated as \"Not Committed Yet\", even though\nthe working directory is clean.  This is because the commit removed\nthe conversion in blame.c for all files, with or without CRLF in the\nrepo.\n\nHaving files with CRLF in the repo and core.autocrlf=input is a\ntemporary situation, and the files, if committed as is, will be\nnormalized in the repo, which _will_ be a notable change.  Blaming\nthem with \"Not Committed Yet\" is the right result.  Revert commit\n4d4813a5 which was a misguided attempt to \"solve\" a non-problem.\n\nAdd two test cases in t8003 to verify the correct CRLF conversion.\n\nSuggested-By: Stepan Kasal <kasal@ucw.cz>\nSigned-off-by: Torsten Bögershausen <tboegi@web.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/gitster/git/commits/4bf256d67a85bed1e175ecc2706322eafe4489ca"},{"sha":"ea19289bc82351b7ac20ea2fd877e2bdde97ae34","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"path.c: implement xdg_config_home()\n\nThe XDG base dir spec[1] specifies that configuration files be stored in\na subdirectory in $XDG_CONFIG_HOME. To construct such a configuration\nfile path, home_config_paths() can be used. However, home_config_paths()\ncombines distinct functionality:\n\n1. Retrieve the home git config file path ~/.gitconfig\n\n2. Construct the XDG config path of the file specified by `file`.\n\nThis function was introduced in commit 21cf3227 (\"read (but not write)\nfrom $XDG_CONFIG_HOME/git/config file\").  While the intention of the\nfunction was to allow the home directory configuration file path and the\nxdg directory configuration file path to be retrieved with one function\ncall, the hard-coding of the path ~/.gitconfig prevents it from being\nused for other configuration files. Furthermore, retrieving a file path\nrelative to the user's home directory can be done with\nexpand_user_path(). Hence, it can be seen that home_config_paths()\nintroduces unnecessary complexity, especially if a user just wants to\nretrieve the xdg config file path.\n\nAs such, implement a simpler function xdg_config_home() for constructing\nthe XDG base dir spec configuration file path. This function, together\nwith expand_user_path(), can replace all uses of home_config_paths().\n\n[1] http://standards.freedesktop.org/basedir-spec/basedir-spec-0.7.html\n\nHelped-by: Eric Sunshine <sunshine@sunshineco.com>\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/ea19289bc82351b7ac20ea2fd877e2bdde97ae34"},{"sha":"2527bbce25dcfd952064cf02057ad8729134ed44","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"attr.c: replace home_config_paths() with xdg_config_home()\n\nSince only the xdg attributes file path is required, simplify the code\nby using xdg_config_home() instead of home_config_paths().\n\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/2527bbce25dcfd952064cf02057ad8729134ed44"},{"sha":"2845ce7ff1398e851d46b62154293378b74c466d","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"dir.c: replace home_config_paths() with xdg_config_home()\n\nSince only the xdg excludes file path is required, simplify the code by\nreplacing use of home_config_paths() with xdg_config_home().\n\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/2845ce7ff1398e851d46b62154293378b74c466d"},{"sha":"64ab71db3a7e5b41a37580f8a3d15cb25b3e7093","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"credential-store.c: replace home_config_paths() with xdg_config_home()\n\nSince only the xdg credentials file path is required, and\nhome_config_paths() is unable to construct the path ~/.git-credentials,\nsimplify the code by replacing home_config_paths() with\nxdg_config_home().\n\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/64ab71db3a7e5b41a37580f8a3d15cb25b3e7093"},{"sha":"e682c9db1a7c6a81bb4c2e8e8c1d5191dae3bd9f","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"git-commit: replace use of home_config_paths()\n\nSince home_config_paths() combines two distinct functionality already\nimplemented by expand_user_path() and xdg_config_home(), and hides the\nhome config file path ~/.gitconfig. Make the code more explicit by\nreplacing the use of home_config_paths() with expand_user_path() and\nxdg_config_home().\n\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/e682c9db1a7c6a81bb4c2e8e8c1d5191dae3bd9f"},{"sha":"509adc335274d2656829b18e1e83ccabda059ae3","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"git-config: replace use of home_config_paths()\n\nSince home_config_paths() combines distinct functionality already\nimplemented by expand_user_path() and xdg_config_home(), and hides the\nhome config file path ~/.gitconfig. Make the code more explicit by\nreplacing the use of home_config_paths() with expand_user_path() and\nxdg_config_home().\n\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/509adc335274d2656829b18e1e83ccabda059ae3"},{"sha":"846e5dfbab5d5a0a85252c1400dc0371e02e75a8","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@gmail.com","name":"Paul Tan"},"message":"path.c: remove home_config_paths()\n\nhome_config_paths() combines distinct functionality already implemented\nby expand_user_path() and xdg_config_home(), and it also hard-codes the\npath ~/.gitconfig, which makes it unsuitable to use for other home\nconfig file paths. Since its use will just add unnecessary complexity to\nthe code, remove it.\n\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/846e5dfbab5d5a0a85252c1400dc0371e02e75a8"}]}