mirror of
https://github.com/git/git.git
synced 2024-11-24 02:17:02 +08:00
Merge branch 'maint'
* maint: fast-import: close pack before unlinking it pager: do not dup2 stderr if it is already redirected git-show: do not segfault when showing a bad tag
This commit is contained in:
commit
90c3302173
@ -340,7 +340,13 @@ int cmd_show(int argc, const char **argv, const char *prefix)
|
||||
t->tag,
|
||||
diff_get_color_opt(&rev.diffopt, DIFF_RESET));
|
||||
ret = show_object(o->sha1, 1, &rev);
|
||||
objects[i].item = parse_object(t->tagged->sha1);
|
||||
if (ret)
|
||||
break;
|
||||
o = parse_object(t->tagged->sha1);
|
||||
if (!o)
|
||||
ret = error("Could not read object %s",
|
||||
sha1_to_hex(t->tagged->sha1));
|
||||
objects[i].item = o;
|
||||
i--;
|
||||
break;
|
||||
}
|
||||
|
@ -983,8 +983,10 @@ static void end_packfile(void)
|
||||
|
||||
pack_id++;
|
||||
}
|
||||
else
|
||||
else {
|
||||
close(old_p->pack_fd);
|
||||
unlink(old_p->pack_name);
|
||||
}
|
||||
free(old_p);
|
||||
|
||||
/* We can't carry a delta across packfiles. */
|
||||
|
3
pager.c
3
pager.c
@ -70,7 +70,8 @@ void setup_pager(void)
|
||||
|
||||
/* original process continues, but writes to the pipe */
|
||||
dup2(pager_process.in, 1);
|
||||
dup2(pager_process.in, 2);
|
||||
if (isatty(2))
|
||||
dup2(pager_process.in, 2);
|
||||
close(pager_process.in);
|
||||
|
||||
/* this makes sure that the parent terminates after the pager */
|
||||
|
20
t/t7007-show.sh
Executable file
20
t/t7007-show.sh
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='git show'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success setup '
|
||||
echo hello world >foo &&
|
||||
H=$(git hash-object -w foo) &&
|
||||
git tag -a foo-tag -m "Tags $H" $H &&
|
||||
HH=$(expr "$H" : "\(..\)") &&
|
||||
H38=$(expr "$H" : "..\(.*\)") &&
|
||||
rm -f .git/objects/$HH/$H38
|
||||
'
|
||||
|
||||
test_expect_success 'showing a tag that point at a missing object' '
|
||||
test_must_fail git --no-pager show foo-tag
|
||||
'
|
||||
|
||||
test_done
|
Loading…
Reference in New Issue
Block a user