Merge branch 'maint-1.5.4' into maint
* maint-1.5.4: svn-git: Use binmode for reading/writing binary rev maps diff options documentation: refer to --diff-filter in --name-status git-svn bug with blank commits and author file archive.c: format_subst - fixed bogus argument to memchr copy.c: copy_fd - correctly report write errors gitattributes: Fix subdirectory attributes specified from root directory
This commit is contained in:
@ -83,7 +83,8 @@ endif::git-format-patch[]
|
|||||||
Show only names of changed files.
|
Show only names of changed files.
|
||||||
|
|
||||||
--name-status::
|
--name-status::
|
||||||
Show only names and status of changed files.
|
Show only names and status of changed files. See the description
|
||||||
|
of the `--diff-filter` option on what the status letters mean.
|
||||||
|
|
||||||
--color::
|
--color::
|
||||||
Show colored diff.
|
Show colored diff.
|
||||||
|
@ -16,9 +16,9 @@ static void format_subst(const struct commit *commit,
|
|||||||
const char *b, *c;
|
const char *b, *c;
|
||||||
|
|
||||||
b = memmem(src, len, "$Format:", 8);
|
b = memmem(src, len, "$Format:", 8);
|
||||||
if (!b || src + len < b + 9)
|
if (!b)
|
||||||
break;
|
break;
|
||||||
c = memchr(b + 8, '$', len - 8);
|
c = memchr(b + 8, '$', (src + len) - b - 8);
|
||||||
if (!c)
|
if (!c)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
4
attr.c
4
attr.c
@ -546,7 +546,9 @@ static int path_matches(const char *pathname, int pathlen,
|
|||||||
(baselen && pathname[baselen] != '/') ||
|
(baselen && pathname[baselen] != '/') ||
|
||||||
strncmp(pathname, base, baselen))
|
strncmp(pathname, base, baselen))
|
||||||
return 0;
|
return 0;
|
||||||
return fnmatch(pattern, pathname + baselen + 1, FNM_PATHNAME) == 0;
|
if (baselen != 0)
|
||||||
|
baselen++;
|
||||||
|
return fnmatch(pattern, pathname + baselen, FNM_PATHNAME) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fill_one(const char *what, struct match_attr *a, int rem)
|
static int fill_one(const char *what, struct match_attr *a, int rem)
|
||||||
|
8
copy.c
8
copy.c
@ -9,8 +9,7 @@ int copy_fd(int ifd, int ofd)
|
|||||||
if (!len)
|
if (!len)
|
||||||
break;
|
break;
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
int read_error;
|
int read_error = errno;
|
||||||
read_error = errno;
|
|
||||||
close(ifd);
|
close(ifd);
|
||||||
return error("copy-fd: read returned %s",
|
return error("copy-fd: read returned %s",
|
||||||
strerror(read_error));
|
strerror(read_error));
|
||||||
@ -25,9 +24,10 @@ int copy_fd(int ifd, int ofd)
|
|||||||
close(ifd);
|
close(ifd);
|
||||||
return error("copy-fd: write returned 0");
|
return error("copy-fd: write returned 0");
|
||||||
} else {
|
} else {
|
||||||
|
int write_error = errno;
|
||||||
close(ifd);
|
close(ifd);
|
||||||
return error("copy-fd: write returned %s",
|
return error("copy-fd: write returned %s",
|
||||||
strerror(errno));
|
strerror(write_error));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -48,7 +48,7 @@ int copy_file(const char *dst, const char *src, int mode)
|
|||||||
}
|
}
|
||||||
status = copy_fd(fdi, fdo);
|
status = copy_fd(fdi, fdo);
|
||||||
if (close(fdo) != 0)
|
if (close(fdo) != 0)
|
||||||
return error("%s: write error: %s", dst, strerror(errno));
|
return error("%s: close error: %s", dst, strerror(errno));
|
||||||
|
|
||||||
if (!status && adjust_shared_perm(dst))
|
if (!status && adjust_shared_perm(dst))
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -2375,8 +2375,7 @@ sub check_author {
|
|||||||
my ($author) = @_;
|
my ($author) = @_;
|
||||||
if (!defined $author || length $author == 0) {
|
if (!defined $author || length $author == 0) {
|
||||||
$author = '(no author)';
|
$author = '(no author)';
|
||||||
}
|
} elsif (defined $::_authors && ! defined $::users{$author}) {
|
||||||
if (defined $::_authors && ! defined $::users{$author}) {
|
|
||||||
die "Author: $author not defined in $::_authors file\n";
|
die "Author: $author not defined in $::_authors file\n";
|
||||||
}
|
}
|
||||||
$author;
|
$author;
|
||||||
@ -2519,6 +2518,7 @@ sub rebuild_from_rev_db {
|
|||||||
my ($self, $path) = @_;
|
my ($self, $path) = @_;
|
||||||
my $r = -1;
|
my $r = -1;
|
||||||
open my $fh, '<', $path or croak "open: $!";
|
open my $fh, '<', $path or croak "open: $!";
|
||||||
|
binmode $fh or croak "binmode: $!";
|
||||||
while (<$fh>) {
|
while (<$fh>) {
|
||||||
length($_) == 41 or croak "inconsistent size in ($_) != 41";
|
length($_) == 41 or croak "inconsistent size in ($_) != 41";
|
||||||
chomp($_);
|
chomp($_);
|
||||||
@ -2616,6 +2616,7 @@ sub rebuild {
|
|||||||
sub _rev_map_set {
|
sub _rev_map_set {
|
||||||
my ($fh, $rev, $commit) = @_;
|
my ($fh, $rev, $commit) = @_;
|
||||||
|
|
||||||
|
binmode $fh or croak "binmode: $!";
|
||||||
my $size = (stat($fh))[7];
|
my $size = (stat($fh))[7];
|
||||||
($size % 24) == 0 or croak "inconsistent size: $size";
|
($size % 24) == 0 or croak "inconsistent size: $size";
|
||||||
|
|
||||||
@ -2719,6 +2720,7 @@ sub rev_map_max {
|
|||||||
my $map_path = $self->map_path;
|
my $map_path = $self->map_path;
|
||||||
stat $map_path or return $want_commit ? (0, undef) : 0;
|
stat $map_path or return $want_commit ? (0, undef) : 0;
|
||||||
sysopen(my $fh, $map_path, O_RDONLY) or croak "open: $!";
|
sysopen(my $fh, $map_path, O_RDONLY) or croak "open: $!";
|
||||||
|
binmode $fh or croak "binmode: $!";
|
||||||
my $size = (stat($fh))[7];
|
my $size = (stat($fh))[7];
|
||||||
($size % 24) == 0 or croak "inconsistent size: $size";
|
($size % 24) == 0 or croak "inconsistent size: $size";
|
||||||
|
|
||||||
@ -2751,6 +2753,7 @@ sub rev_map_get {
|
|||||||
return undef unless -e $map_path;
|
return undef unless -e $map_path;
|
||||||
|
|
||||||
sysopen(my $fh, $map_path, O_RDONLY) or croak "open: $!";
|
sysopen(my $fh, $map_path, O_RDONLY) or croak "open: $!";
|
||||||
|
binmode $fh or croak "binmode: $!";
|
||||||
my $size = (stat($fh))[7];
|
my $size = (stat($fh))[7];
|
||||||
($size % 24) == 0 or croak "inconsistent size: $size";
|
($size % 24) == 0 or croak "inconsistent size: $size";
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ test_expect_success 'setup' '
|
|||||||
mkdir -p a/b/d a/c &&
|
mkdir -p a/b/d a/c &&
|
||||||
(
|
(
|
||||||
echo "f test=f"
|
echo "f test=f"
|
||||||
|
echo "a/i test=a/i"
|
||||||
) >.gitattributes &&
|
) >.gitattributes &&
|
||||||
(
|
(
|
||||||
echo "g test=a/g" &&
|
echo "g test=a/g" &&
|
||||||
@ -46,4 +47,11 @@ test_expect_success 'attribute test' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'root subdir attribute test' '
|
||||||
|
|
||||||
|
attr_check a/i a/i &&
|
||||||
|
attr_check subdir/a/i unspecified
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Reference in New Issue
Block a user