Hi,
I use git-repo which makes use of Git for Windows and also uses the
gpg tool bundled in Git for Windows.
I am able to run the git-repo with Git-2.18.0-64-bit.exe, but recently
I updated the Git to new release of Git for Windows 2.19.1 and that
does not work with git-repo tool. I found that basic issue is not with
Git, but with gpg bundled with latest Git version.
I have tested both version for below 4 cases and here are the test
results in below table:
Case Test Description Result For Git-2.18.0-64-bit.exe Result For
Git-2.19.1-64-bit.exe
CASE1: gpg import with default GNUPG Home [Result: SUCCESS for both versions]
CASE2: gpg import with setting environment variable for GNUPGHOME and
path provided in git style [Result: SUCCESS for both versions]
CASE3: gpg import with setting environment variable for GNUPGHOME and
path provided in windows style single slash \ is escaped by providing
double slash \\ [Result: SUCCESS for 2.18.0 but FAILED for 2.19.1]
CASE4: gpg import with setting environment variable for GNUPGHOME and
path provided in windows style with single slash \ replaced with
forward slash / [Result: SUCCESS for 2.18.0 but FAILED for 2.19.1]
I know the gpg version is changed in 2.19 release.
But somehow the Git-Repo tool, which I am using, creates GNUPGHOME
path as per CASE3 above. So right now I am able to use the tool with
older version of Git. It may be issue in future to not upgrade Git.
Please see if this makes any sense to fix this thing in gpg.
Here is the output with CASE3 (complete logs attached with the mail)
==============================================================================================================
=== CASE3: NOT Working with setting environment variable for GNUPGHOME
and path provided in windows style ====
=== IT LOOKS Like concatenate the current working directory to the
value of GNUPGHOME ========================
==============================================================================================================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ export GNUPGHOME=C:\\gpgTesting\\.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ echo $GNUPGHOME
C:\gpgTesting\.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --import
gpg: keyblock resource
'/c/gpgTesting/C:\gpgTesting\.gnupg/pubring.kbx': No such file or
directory
gpg: signal Interrupt caught ... exiting
--
Thanks,
Himanshu Singh.
====================
=== Version Info ===
====================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ git --version
git version 2.19.1.windows.1
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --version
gpg (GnuPG) 2.2.9-unknown
libgcrypt 1.8.3
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: /c/Users/hsingh/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
==============================================
=== CASE1: Working with default GNUPG Home ===
==============================================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --import
gpg: keybox '/c/Users/hsingh/.gnupg/pubring.kbx' created
gpg: signal Interrupt caught ... exiting
=====================================================================================================
=== CASE2: Working with setting environment variable for GNUPGHOME and path provided in git style ===
=====================================================================================================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ export GNUPGHOME=/C/gpgTesting/.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ echo $GNUPGHOME
/C/gpgTesting/.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --import
gpg: keybox '/C/gpgTesting/.gnupg/pubring.kbx' created
gpg: signal Interrupt caught ... exiting
==============================================================================================================
=== CASE3: NOT Working with setting environment variable for GNUPGHOME and path provided in windows style ====
=== IT LOOKS Like concatenate the current working directory to the value of GNUPGHOME ========================
==============================================================================================================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ export GNUPGHOME=C:\\gpgTesting\\.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ echo $GNUPGHOME
C:\gpgTesting\.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --import
gpg: keyblock resource '/c/gpgTesting/C:\gpgTesting\.gnupg/pubring.kbx': No such file or directory
gpg: signal Interrupt caught ... exiting
================================================================================================================================
=== CASE4: NOT Working with setting environment variable for GNUPGHOME and path provided in windows style with forward slash ===
=== IT LOOKS Like concatenate the current working directory to the value of GNUPGHOME ==========================================
================================================================================================================================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ export GNUPGHOME=C:/gpgTesting/.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ echo $GNUPGHOME
C:/gpgTesting/.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --import
gpg: Fatal: can't create directory '/c/gpgTesting/C:/gpgTesting/.gnupg': No such file or directory
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$
====================
=== Version Info ===
====================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ git --version
git version 2.18.0.windows.1
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --version
gpg (GnuPG) 1.4.22
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
==============================================
=== CASE1: Working with default GNUPG Home ===
==============================================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --import
gpg: keyring `/c/Users/hsingh/.gnupg/secring.gpg' created
gpg: keyring `/c/Users/hsingh/.gnupg/pubring.gpg' created
gpg: Interrupt caught ... exiting
=====================================================================================================
=== CASE2: Working with setting environment variable for GNUPGHOME and path provided in git style ===
=====================================================================================================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ export GNUPGHOME=/C/gpgTesting/.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ echo $GNUPGHOME
/C/gpgTesting/.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --import
gpg: WARNING: unsafe permissions on homedir `/C/gpgTesting/.gnupg'
gpg: keyring `/C/gpgTesting/.gnupg/secring.gpg' created
gpg: keyring `/C/gpgTesting/.gnupg/pubring.gpg' created
gpg: Interrupt caught ... exiting
=========================================================================================================
=== CASE3: Working with setting environment variable for GNUPGHOME and path provided in windows style ===
=========================================================================================================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ export GNUPGHOME=C:\\gpgTesting\\.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --import
gpg: WARNING: unsafe permissions on homedir `C:\gpgTesting\.gnupg'
gpg: keyring `C:\gpgTesting\.gnupg/secring.gpg' created
gpg: keyring `C:\gpgTesting\.gnupg/pubring.gpg' created
gpg: Interrupt caught ... exiting
============================================================================================================================
=== CASE4: Working with setting environment variable for GNUPGHOME and path provided in windows style with forward slash ===
============================================================================================================================
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ export GNUPGHOME=C:/gpgTesting/.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ echo $GNUPGHOME
C:/gpgTesting/.gnupg
hsingh@HSINGH-LT MINGW64 /c/gpgTesting
$ gpg --import
gpg: WARNING: unsafe permissions on homedir `C:/gpgTesting/.gnupg'
gpg: keyring `C:/gpgTesting/.gnupg/secring.gpg' created
gpg: keyring `C:/gpgTesting/.gnupg/pubring.gpg' created
gpg: Interrupt caught ... exiting
hsingh@HSINGH-LT MINGW64 /c/gpgTesting