Merge branch 'maint'

* maint:
  git-shortlog: Fix two formatting errors in asciidoc documentation
  Fix overwriting of files when applying contextually independent diffs
  git-svn: don't allow globs to match regular files
This commit is contained in:
Junio C Hamano 2007-04-18 16:17:28 -07:00
commit 6fb8e8f401
5 changed files with 43 additions and 3 deletions

View file

@ -59,3 +59,7 @@ Fixes since v1.5.1
- git-svn dcommit and rebase was confused by patches that were
merged from another branch that is managed by git-svn.
- git-svn used to get confused when globbing remote branch/tag
spec (e.g. "branches = proj/branches/*:refs/remotes/origin/*")
is used and there was a plain file that matched the glob.

View file

@ -7,6 +7,7 @@ git-shortlog - Summarize 'git log' output
SYNOPSIS
--------
[verse]
git-log --pretty=short | 'git-shortlog' [-h] [-n] [-s]
git-shortlog [-n|--number] [-s|--summary] [<committish>...]
@ -33,7 +34,8 @@ OPTIONS
FILES
-----
'.mailmap'::
.mailmap::
If this file exists, it will be used for mapping author email
addresses to a real author name. One mapping per line, first
the author name followed by the email address enclosed by

View file

@ -2416,8 +2416,7 @@ static void create_one_file(char *path, unsigned mode, const char *buf, unsigned
* used to be.
*/
struct stat st;
errno = 0;
if (!lstat(path, &st) && S_ISDIR(st.st_mode) && !rmdir(path))
if (!lstat(path, &st) && (!S_ISDIR(st.st_mode) || !rmdir(path)))
errno = EEXIST;
}

View file

@ -3162,6 +3162,8 @@ sub match_globs {
my $p = $1;
my $pathname = $g->{path}->full_path($p);
next if $exists->{$pathname};
next if ($self->check_path($pathname, $r) !=
$SVN::Node::dir);
$exists->{$pathname} = Git::SVN->init(
$self->{url}, $pathname, undef,
$g->{ref}->full_path($p), 1);

33
t/t4121-apply-diffs.sh Executable file
View file

@ -0,0 +1,33 @@
#!/bin/sh
test_description='git-apply for contextually independent diffs'
. ./test-lib.sh
echo '1
2
3
4
5
6
7
8' >file
test_expect_success 'setup' \
'git add file &&
git commit -q -m 1 &&
git checkout -b test &&
mv file file.tmp &&
echo 0 >file &&
cat file.tmp >>file &&
rm file.tmp &&
git commit -a -q -m 2 &&
echo 9 >>file &&
git commit -a -q -m 3 &&
git checkout master'
test_expect_success \
'check if contextually independent diffs for the same file apply' \
'( git diff test~2 test~1; git diff test~1 test~0 )| git apply'
test_done