Skip to content

Commit 1319a52

Browse files
committed
Merge branch 'msys2'
2 parents 8113afc + 8925b15 commit 1319a52

File tree

5 files changed

+70
-20
lines changed

5 files changed

+70
-20
lines changed

compat/mingw.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2577,6 +2577,9 @@ static void setup_windows_environment(void)
25772577
if (!tmp && (tmp = getenv("USERPROFILE")))
25782578
setenv("HOME", tmp, 1);
25792579
}
2580+
2581+
if (!getenv("LC_ALL") && !getenv("LC_CTYPE") && !getenv("LANG"))
2582+
setenv("LC_CTYPE", "C", 1);
25802583
}
25812584

25822585
int handle_long_path(wchar_t *path, int len, int max_path, int expand)

compat/terminal.c

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "git-compat-util.h"
1+
#include "cache.h"
22
#include "compat/terminal.h"
33
#include "sigchain.h"
44
#include "strbuf.h"
@@ -193,6 +193,55 @@ static int mingw_getchar(void)
193193
}
194194
#define getchar mingw_getchar
195195

196+
static char *shell_prompt(const char *prompt, int echo)
197+
{
198+
const char *read_input[] = {
199+
/* Note: call 'bash' explicitly, as 'read -s' is bash-specific */
200+
"bash", "-c", echo ?
201+
"cat >/dev/tty && read -r line </dev/tty && echo \"$line\"" :
202+
"cat >/dev/tty && read -r -s line </dev/tty && echo \"$line\" && echo >/dev/tty",
203+
NULL
204+
};
205+
struct child_process child = CHILD_PROCESS_INIT;
206+
static struct strbuf buffer = STRBUF_INIT;
207+
int prompt_len = strlen(prompt), len = -1, code;
208+
209+
child.argv = read_input;
210+
child.in = -1;
211+
child.out = -1;
212+
child.silent_exec_failure = 1;
213+
214+
if (start_command(&child))
215+
return NULL;
216+
217+
if (write_in_full(child.in, prompt, prompt_len) != prompt_len) {
218+
error("could not write to prompt script");
219+
close(child.in);
220+
goto ret;
221+
}
222+
close(child.in);
223+
224+
strbuf_reset(&buffer);
225+
len = strbuf_read(&buffer, child.out, 1024);
226+
if (len < 0) {
227+
error("could not read from prompt script");
228+
goto ret;
229+
}
230+
231+
strbuf_strip_suffix(&buffer, "\n");
232+
strbuf_strip_suffix(&buffer, "\r");
233+
234+
ret:
235+
close(child.out);
236+
code = finish_command(&child);
237+
if (code) {
238+
error("failed to execute prompt script (exit code %d)", code);
239+
return NULL;
240+
}
241+
242+
return len < 0 ? NULL : buffer.buf;
243+
}
244+
196245
#endif
197246

198247
#ifndef FORCE_TEXT
@@ -205,6 +254,15 @@ char *git_terminal_prompt(const char *prompt, int echo)
205254
int r;
206255
FILE *input_fh, *output_fh;
207256

257+
#ifdef GIT_WINDOWS_NATIVE
258+
259+
/* try shell_prompt first, fall back to CONIN/OUT if bash is missing */
260+
char *result = shell_prompt(prompt, echo);
261+
if (result)
262+
return result;
263+
264+
#endif
265+
208266
input_fh = fopen(INPUT_PATH, "r" FORCE_TEXT);
209267
if (!input_fh)
210268
return NULL;

gpg-interface.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -296,11 +296,9 @@ int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *sig
296296
struct child_process gpg = CHILD_PROCESS_INIT;
297297
int ret;
298298
size_t i, j, bottom;
299-
struct strbuf gpg_status = STRBUF_INIT;
300299

301300
argv_array_pushl(&gpg.args,
302301
use_format->program,
303-
"--status-fd=2",
304302
"-bsau", signing_key,
305303
NULL);
306304

@@ -312,12 +310,10 @@ int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *sig
312310
*/
313311
sigchain_push(SIGPIPE, SIG_IGN);
314312
ret = pipe_command(&gpg, buffer->buf, buffer->len,
315-
signature, 1024, &gpg_status, 0);
313+
signature, 1024, NULL, 0);
316314
sigchain_pop(SIGPIPE);
317315

318-
ret |= !strstr(gpg_status.buf, "\n[GNUPG:] SIG_CREATED ");
319-
strbuf_release(&gpg_status);
320-
if (ret)
316+
if (ret || signature->len == bottom)
321317
return error(_("gpg failed to sign the data"));
322318

323319
/* Strip CR from the line endings, in case we are on Windows. */

t/t7004-tag.sh

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1366,26 +1366,13 @@ test_expect_success GPG \
13661366
'test_config user.signingkey BobTheMouse &&
13671367
test_must_fail git tag -s -m tail tag-gpg-failure'
13681368

1369-
# try to produce invalid signature
1370-
test_expect_success GPG \
1371-
'git tag -s fails if gpg is misconfigured (bad signature format)' \
1372-
'test_config gpg.program echo &&
1373-
test_must_fail git tag -s -m tail tag-gpg-failure'
1374-
13751369
# try to sign with bad user.signingkey
13761370
test_expect_success GPGSM \
13771371
'git tag -s fails if gpgsm is misconfigured (bad key)' \
13781372
'test_config user.signingkey BobTheMouse &&
13791373
test_config gpg.format x509 &&
13801374
test_must_fail git tag -s -m tail tag-gpg-failure'
13811375

1382-
# try to produce invalid signature
1383-
test_expect_success GPGSM \
1384-
'git tag -s fails if gpgsm is misconfigured (bad signature format)' \
1385-
'test_config gpg.x509.program echo &&
1386-
test_config gpg.format x509 &&
1387-
test_must_fail git tag -s -m tail tag-gpg-failure'
1388-
13891376
# try to verify without gpg:
13901377

13911378
rm -rf gpghome

t/t9020-remote-svn.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ then
1212
test_done
1313
fi
1414

15+
if test_have_prereq MINGW
16+
then
17+
skip_all='skipping remote-svn tests for lack of POSIX'
18+
test_done
19+
fi
20+
1521
# Override svnrdump with our simulator
1622
PATH="$HOME:$PATH"
1723
export PATH PYTHON_PATH GIT_BUILD_DIR

0 commit comments

Comments
 (0)