aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* create_symref: modernize variable namesJeff King2015-12-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Once upon a time, create_symref() was used only to point HEAD at a branch name, and the variable names reflect that (e.g., calling the path git_HEAD). However, it is much more generic these days (and has been for some time). Let's update the variable names to make it easier to follow: - `ref_target` is now just `refname`. This is closer to the `ref` that is already in `cache.h`, but with the extra twist that "name" makes it clear this is the name and not a ref struct. Dropping "target" hopefully makes it clear that we are talking about the symref itself, not what it points to. - `git_HEAD` is now `ref_path`; the on-disk path corresponding to `ref`. - `refs_heads_master` is now just `target`; i.e., what the symref points at. This term also matches what is in the symlink(2) manpage (at least on Linux). - the buffer to hold the symref file's contents was simply called `ref`. It's now `buf` (admittedly also generic, but at least not actively introducing confusion with the other variable holding the refname). Signed-off-by: Jeff King <peff@peff.net> Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge branch 'jk/symbolic-ref-maint'Junio C Hamano2015-12-28
|\ | | | | | | | | | | | | | | "git symbolic-ref" forgot to report a failure with its exit status. * jk/symbolic-ref-maint: t1401: test reflog creation for git-symbolic-ref symbolic-ref: propagate error code from create_symref()
| * t1401: test reflog creation for git-symbolic-refJeff King2015-12-21
| | | | | | | | | | | | | | | | | | | | The current code writes a reflog entry whenever we update a symbolic ref, but we never test that this is so. Let's add a test to make sure upcoming refactoring doesn't cause a regression. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * symbolic-ref: propagate error code from create_symref()Jeff King2015-12-21
| | | | | | | | | | | | | | | | | | | | | | | | | | If create_symref() fails, git-symbolic-ref will still exit with code 0, and our caller has no idea that the command did nothing. This appears to have been broken since the beginning of time (e.g., it is not a regression where create_symref() stopped calling die() or something similar). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | Merge tag 'l10n-2.7.0-rnd2' of git://github.com/git-l10n/git-poJunio C Hamano2015-12-28
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l10n-2.7.0-rnd2 * tag 'l10n-2.7.0-rnd2' of git://github.com/git-l10n/git-po: l10n: ru.po: update Russian translation l10n: Updated Bulgarian translation of git (2477t,0f,0u) l10n: ca.po: update translation l10n: zh_CN: for git v2.7.0 l10n round 2 l10n: sv.po: Update Swedish translation (2477t0f0u) l10n: sv: Fix bad translation l10n: fr.po v2.7.0 round 2 (2477t) l10n: git.pot: v2.7.0 round 2 (2 new, 2 removed) l10n: zh_CN: for git v2.7.0 l10n round 1 l10n: ca.po: update translation l10n: fr v2.7.0 round 1 (2477t) l10n: Updated Bulgarian translation of git (2477t,0f,0u) l10n: sv.po: Update Swedish translation (2477t0f0u) l10n: vi.po: Updated translation (2477t) l10n: git.pot: v2.7.0 round 1 (66 new, 29 removed) l10n: fr.po: Fix typo l10n: fr.po: Fix typo
| * | l10n: ru.po: update Russian translationDimitriy Ryazantcev2015-12-28
| | | | | | | | | | | | Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
| * | Merge branch 'master' of git://github.com/alshopov/git-poJiang Xin2015-12-28
| |\ \ | | | | | | | | | | | | | | | | * 'master' of git://github.com/alshopov/git-po: l10n: Updated Bulgarian translation of git (2477t,0f,0u)
| | * | l10n: Updated Bulgarian translation of git (2477t,0f,0u)Alexander Shopov2015-12-28
| | | | | | | | | | | | | | | | Signed-off-by: Alexander Shopov <ash@kambanaria.org>
| * | | l10n: ca.po: update translationAlex Henrie2015-12-27
| |/ / | | | | | | | | | Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
| * | l10n: zh_CN: for git v2.7.0 l10n round 2Jiang Xin2015-12-26
| | | | | | | | | | | | | | | | | | Update 2 translations (2477t0f0u) for git v2.7.0-rc1. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| * | Merge branch 'master' of git://github.com/nafmo/git-l10n-svJiang Xin2015-12-26
| |\ \ | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/nafmo/git-l10n-sv: l10n: sv.po: Update Swedish translation (2477t0f0u) l10n: sv: Fix bad translation
| | * | l10n: sv.po: Update Swedish translation (2477t0f0u)Peter Krefting2015-12-26
| | | | | | | | | | | | | | | | Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
| | * | l10n: sv: Fix bad translationPeter Krefting2015-12-26
| | | | | | | | | | | | | | | | | | | | Found-by: Sebastian Rasmussen <sebras@gmail.com> Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
| * | | l10n: fr.po v2.7.0 round 2 (2477t)Jean-Noel Avila2015-12-24
| |/ / | | | | | | | | | Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
| * | l10n: git.pot: v2.7.0 round 2 (2 new, 2 removed)Jiang Xin2015-12-22
| | | | | | | | | | | | | | | | | | Generate po/git.pot from v2.7.0-rc1-44-g1d88dab for git v2.7.0 l10n round 2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| * | Merge branch 'master' of git://github.com/git-l10n/git-poJiang Xin2015-12-22
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/git-l10n/git-po: l10n: zh_CN: for git v2.7.0 l10n round 1 l10n: ca.po: update translation l10n: fr v2.7.0 round 1 (2477t) l10n: Updated Bulgarian translation of git (2477t,0f,0u) l10n: sv.po: Update Swedish translation (2477t0f0u) l10n: vi.po: Updated translation (2477t) l10n: git.pot: v2.7.0 round 1 (66 new, 29 removed) l10n: fr.po: Fix typo l10n: fr.po: Fix typo
| | * | l10n: zh_CN: for git v2.7.0 l10n round 1Jiang Xin2015-12-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Update 66 translations (2477t0f0u) for git v2.7.0-rc0. Reviewed-by: Ray Chen <oldsharp@gmail.com> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| | * | Merge branch 'master' of git://github.com/alexhenrie/git-poJiang Xin2015-12-20
| | |\ \ | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/alexhenrie/git-po: l10n: ca.po: update translation
| | | * | l10n: ca.po: update translationAlex Henrie2015-12-18
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
| | * | | Merge branch 'fr_v2.7.0' of git://github.com/jnavila/gitJiang Xin2015-12-20
| | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * 'fr_v2.7.0' of git://github.com/jnavila/git: l10n: fr v2.7.0 round 1 (2477t)
| | | * | | l10n: fr v2.7.0 round 1 (2477t)Jean-Noel Avila2015-12-18
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
| | * | | | Merge branch 'master' of git://github.com/alshopov/git-poJiang Xin2015-12-20
| | |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/alshopov/git-po: l10n: Updated Bulgarian translation of git (2477t,0f,0u)
| | | * | | | l10n: Updated Bulgarian translation of git (2477t,0f,0u)Alexander Shopov2015-12-18
| | | | |/ / | | | |/| | | | | | | | | | | | | | Signed-off-by: Alexander Shopov <ash@kambanaria.org>
| | * | | | l10n: sv.po: Update Swedish translation (2477t0f0u)Peter Krefting2015-12-18
| | |/ / / | | | | | | | | | | | | | | | Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
| | * | | l10n: vi.po: Updated translation (2477t)Tran Ngoc Quan2015-12-12
| | |/ / | | | | | | | | | | | | Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
| | * | l10n: git.pot: v2.7.0 round 1 (66 new, 29 removed)Jiang Xin2015-12-11
| | | | | | | | | | | | | | | | | | | | | | | | Generate po/git.pot from v2.7.0-rc0 for git v2.7.0 l10n round 1. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| | * | Merge branch 'master' of git://github.com/git-l10n/git-poJiang Xin2015-12-11
| | |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/git-l10n/git-po: l10n: fr.po: Fix typo l10n: fr.po: Fix typo
| | | * | l10n: fr.po: Fix typoAudric Schiltknecht2015-12-04
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Audric Schiltknecht <storm@chemicalstorm.org>
| | | * | l10n: fr.po: Fix typoÉlie Bouttier2015-11-04
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Élie Bouttier <elie@bouttier.eu>
* | | | | Git 2.7-rc2v2.7.0-rc2Junio C Hamano2015-12-22
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'js/emu-write-epipe-on-windows'Junio C Hamano2015-12-22
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The write(2) emulation for Windows learned to set errno to EPIPE when necessary. * js/emu-write-epipe-on-windows: mingw: emulate write(2) that fails with a EPIPE
| * | | | | mingw: emulate write(2) that fails with a EPIPEJohannes Schindelin2015-12-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Windows, when writing to a pipe fails, errno is always EINVAL. However, Git expects it to be EPIPE. According to the documentation, there are two cases in which write() triggers EINVAL: the buffer is NULL, or the length is odd but the mode is 16-bit Unicode (the broken pipe is not mentioned as possible cause). Git never sets the file mode to anything but binary, therefore we know that errno should actually be EPIPE if it is EINVAL and the buffer is not NULL. See https://msdn.microsoft.com/en-us/library/1570wh78.aspx for more details. This works around t5571.11 failing with v2.6.4 on Windows. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Acked-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | push: don't mark options of recurse-submodules for translationRalf Thielow2015-12-22
| |/ / / / |/| | | | | | | | | | | | | | | | | | | Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Update release notes to 2.7Junio C Hamano2015-12-21
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'bc/format-patch-null-from-line'Junio C Hamano2015-12-21
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "format-patch" has learned a new option to zero-out the commit object name on the mbox "From " line. * bc/format-patch-null-from-line: format-patch: check that header line has expected format format-patch: add an option to suppress commit hash sha1_file.c: introduce a null_oid constant
| * | | | | format-patch: check that header line has expected formatbrian m. carlson2015-12-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The format of the "From " header line is very specific to allow utilities to detect Git-style patches. Add a test that the patches created are in the expected format. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | format-patch: add an option to suppress commit hashbrian m. carlson2015-12-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Oftentimes, patches created by git format-patch will be stored in version control or compared with diff. In these cases, two otherwise identical patches can have different commit hashes, leading to diff noise. Teach git format-patch a --zero-commit option that instead produces an all-zero hash to avoid this diff noise. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | sha1_file.c: introduce a null_oid constantbrian m. carlson2015-12-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | null_oid is the struct object_id equivalent to null_sha1. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | Merge branch 'jk/ident-loosen-getpwuid'Junio C Hamano2015-12-21
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When getpwuid() on the system returned NULL (e.g. the user is not in the /etc/passwd file or other uid-to-name mappings), the codepath to find who the user is to record it in the reflog barfed and died. Loosen the check in this codepath, which already accepts questionable ident string (e.g. host part of the e-mail address is obviously bogus), and in general when we operate fmt_ident() function in non-strict mode. * jk/ident-loosen-getpwuid: ident: loosen getpwuid error in non-strict mode ident: keep a flag for bogus default_email ident: make xgetpwuid_self() a static local helper
| * | | | | | ident: loosen getpwuid error in non-strict modeJeff King2015-12-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the user has not specified an identity and we have to turn to getpwuid() to find the username or gecos field, we die immediately when getpwuid fails (e.g., because the user does not exist). This is OK for making a commit, where we have set IDENT_STRICT and would want to bail on bogus input. But for something like a reflog, where the ident is "best effort", it can be pain. For instance, even running "git clone" with a UID that is not in /etc/passwd will result in git barfing, just because we can't find an ident to put in the reflog. Instead of dying in xgetpwuid_self, we can instead return a fallback value, and set a "bogus" flag. For the username in an email, we already have a "default_email_is_bogus" flag. For the name field, we introduce (and check) a matching "default_name_is_bogus" flag. As a bonus, this means you now get the usual "tell me who you are" advice instead of just a "no such user" error. No tests, as this is dependent on configuration outside of git's control. However, I did confirm that it behaves sensibly when I delete myself from the local /etc/passwd (reflogs get written, and commits complain). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | ident: keep a flag for bogus default_emailJeff King2015-12-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we have to deduce the user's email address and can't come up with something plausible for the hostname, we simply write "(none)" or ".(none)" in the hostname. Later, our strict-check is forced to use strstr to look for this magic string. This is probably not a problem in practice, but it's rather ugly. Let's keep an extra flag that tells us the email is bogus, and check that instead. We could get away with simply setting the global in add_domainname(); it only gets called to write into git_default_email. However, let's make the code a little more obvious to future readers by actually passing a pointer to our "bogus" flag down the call-chain. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | ident: make xgetpwuid_self() a static local helperJeff King2015-12-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This function is defined in wrapper.c, but nobody besides ident.c uses it. And nobody is likely to in the future, either, as anything that cares about the user's name should be going through the ident code. Moving it here is a cleanup of the global namespace, but it will also enable further cleanups inside ident.c. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | Merge branch 'jk/send-email-ssl-errors'Junio C Hamano2015-12-21
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Improve error reporting when SMTP TLS fails. * jk/send-email-ssl-errors: send-email: enable SSL level 1 debug output
| * | | | | | | send-email: enable SSL level 1 debug outputJohn Keeping2015-12-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a server's certificate isn't accepted by send-email, the output is: Unable to initialize SMTP properly. Check config and use --smtp-debug. but adding --smtp-debug=1 just produces the same output since we don't get as far as talking SMTP. Turning on SSL debug at level 1 gives: DEBUG: .../IO/Socket/SSL.pm:1796: SSL connect attempt failed error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed DEBUG: .../IO/Socket/SSL.pm:673: fatal SSL error: SSL connect attempt failed error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed DEBUG: .../IO/Socket/SSL.pm:1780: IO::Socket::IP configuration failed IO::Socket::SSL defines level 1 debug as "print out errors from IO::Socket::SSL and ciphers from Net::SSLeay". In fact, it aliases Net::SSLeay::trace which is defined to guarantee silence at level 0 and only emit error messages at level 1, so let's enable it by default. The modification of warnings is needed to avoid a warning about: Name "IO::Socket::SSL::DEBUG" used only once: possible typo Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | | Merge branch 'sg/completion-no-column'Junio C Hamano2015-12-21
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The completion script (in contrib/) used to list "git column" (which is not an end-user facing command) as one of the choices * sg/completion-no-column: completion: remove 'git column' from porcelain commands
| * | | | | | | | completion: remove 'git column' from porcelain commandsSZEDER Gábor2015-12-11
| | |_|_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'git column' is an internal helper, so it should not be offered on 'git <TAB>' along with porcelain commands. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | | Merge branch 'mc/push-recurse-submodules-config'Junio C Hamano2015-12-21
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add new config to avoid typing "--recurse-submodules" on each push. * mc/push-recurse-submodules-config: push: follow the "last one wins" convention for --recurse-submodules push: test that --recurse-submodules on command line overrides config push: add recurseSubmodules config option
| * | | | | | | | push: follow the "last one wins" convention for --recurse-submodulesMike Crowe2015-12-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the "last one wins" convention for --recurse-submodules rather than treating conflicting options as an error. Also, fix the declaration of the file-scope recurse_submodules global variable to put it on a separate line. Signed-off-by: Mike Crowe <mac@mcrowe.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | push: test that --recurse-submodules on command line overrides configMike Crowe2015-12-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t5531 only checked that the push.recurseSubmodules config option was overridden by passing --recurse-submodules=check on the command line. Add new tests for overriding with --recurse-submodules=no, --no-recurse-submodules and --recurse-submodules=push too. Also correct minor typo in test commit message. Signed-off-by: Mike Crowe <mac@mcrowe.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | push: add recurseSubmodules config optionMike Crowe2015-11-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The --recurse-submodules command line parameter has existed for some time but it has no config file equivalent. Following the style of the corresponding parameter for git fetch, let's invent push.recurseSubmodules to provide a default for this parameter. This also requires the addition of --recurse-submodules=no to allow the configuration to be overridden on the command line when required. The most straightforward way to implement this appears to be to make push use code in submodule-config in a similar way to fetch. Signed-off-by: Mike Crowe <mac@mcrowe.com> Signed-off-by: Jeff King <peff@peff.net>