Sync with 1.6.5.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2009-12-05 11:39:13 -08:00
commit 3880c18336
10 changed files with 80 additions and 22 deletions

View file

@ -8,3 +8,4 @@ gitman.info
howto-index.txt
doc.dep
cmds-*.txt
manpage-base-url.xsl

View file

@ -105,18 +105,15 @@ XMLTO_EXTRA += -m manpage-suppress-sp.xsl
endif
# Newer DocBook stylesheet emits warning cruft in the output when
# this is not set, and if set it shows an absolute link. We can
# use MAN_BASE_URL=http://www.kernel.org/pub/software/scm/git/docs/
# but distros may want to set it to /usr/share/doc/git-core/docs/ or
# something like that.
# this is not set, and if set it shows an absolute link. Older
# stylesheets simply ignore this parameter.
#
# As older stylesheets simply ignore this parameter, it ought to be
# safe to set it to empty string when the base URL is not specified,
# but unfortunately we cannot do so unconditionally because at least
# xmlto 0.0.18 is reported to lack --stringparam option.
ifdef MAN_BASE_URL
XMLTO_EXTRA += --stringparam man.base.url.for.relative.links=$(MAN_BASE_URL)
# Distros may want to use MAN_BASE_URL=file:///path/to/git/docs/
# or similar.
ifndef MAN_BASE_URL
MAN_BASE_URL = file://$(htmldir)/
endif
XMLTO_EXTRA += -m manpage-base-url.xsl
# If your target system uses GNU groff, it may try to render
# apostrophes as a "pretty" apostrophe using unicode. This breaks
@ -245,6 +242,7 @@ clean:
$(RM) howto-index.txt howto/*.html doc.dep
$(RM) technical/api-*.html technical/api-index.txt
$(RM) $(cmds_txt) *.made
$(RM) manpage-base-url.xsl
$(MAN_HTML): %.html : %.txt
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
@ -252,7 +250,10 @@ $(MAN_HTML): %.html : %.txt
$(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $< && \
mv $@+ $@
%.1 %.5 %.7 : %.xml
manpage-base-url.xsl: manpage-base-url.xsl.in
sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
%.1 %.5 %.7 : %.xml manpage-base-url.xsl
$(QUIET_XMLTO)$(RM) $@ && \
xmlto -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<

View file

@ -18,6 +18,9 @@ Fixes since v1.6.5.4
twice, and held onto memory after it has used the data in it
unnecessarily before it freed.
* "git diff -B" and "git diff --dirstat" was not counting newly added
contents correctly.
* "git format-patch revisions... -- path" issued an incorrect error
message that suggested to use "--" on the command line when path
does not exist in the current work tree (it is a separate matter if
@ -39,6 +42,8 @@ Fixes since v1.6.5.4
* "git rebase" got confused when the log message began with certain
strings that looked like Subject:, Date: or From: header.
Other minor documentation updates are included.
* "git reset" accidentally run in .git/ directory checked out the
work tree contents in there.
v1.6.5.4-47-gdda8f4b
Other minor documentation updates are included.

View file

@ -74,8 +74,9 @@ OPTIONS
The tree or commit to produce an archive for.
path::
If one or more paths are specified, include only these in the
archive, otherwise include all files and subdirectories.
Without an optional path parameter, all files and subdirectories
of the current working directory are included in the archive.
If one or more paths are specified, only these are included.
BACKEND EXTRA OPTIONS
---------------------

View file

@ -43,9 +43,10 @@ unreleased) version of git, that is available from 'master'
branch of the `git.git` repository.
Documentation for older releases are available here:
* link:v1.6.5.4/git.html[documentation for release 1.6.5.4]
* link:v1.6.5.5/git.html[documentation for release 1.6.5.5]
* release notes for
link:RelNotes-1.6.5.5.txt[1.6.5.5],
link:RelNotes-1.6.5.4.txt[1.6.5.4],
link:RelNotes-1.6.5.3.txt[1.6.5.3],
link:RelNotes-1.6.5.2.txt[1.6.5.2],

View file

@ -0,0 +1,10 @@
<!-- manpage-base-url.xsl:
special settings for manpages rendered from newer docbook -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<!-- set a base URL for relative links -->
<xsl:param name="man.base.url.for.relative.links"
>@@MAN_BASE_URL@@</xsl:param>
</xsl:stylesheet>

View file

@ -48,6 +48,8 @@ static void garbage_collect(struct string_list *rr)
git_config(git_rerere_gc_config, NULL);
dir = opendir(git_path("rr-cache"));
if (!dir)
die_errno("unable to open rr-cache directory");
while ((e = readdir(dir))) {
if (is_dot_or_dotdot(e->d_name))
continue;

View file

@ -286,8 +286,10 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
if (reset_type == NONE)
reset_type = MIXED; /* by default */
if (reset_type == HARD && is_bare_repository())
die("hard reset makes no sense in a bare repository");
if ((reset_type == HARD || reset_type == MERGE)
&& !is_inside_work_tree())
die("%s reset requires a work tree",
reset_type_names[reset_type]);
/* Soft reset does not touch the index file nor the working tree
* at all, but requires them in a good order. Other resets reset

View file

@ -201,10 +201,15 @@ int diffcore_count_changes(struct diff_filespec *src,
while (d->cnt) {
if (d->hashval >= s->hashval)
break;
la += d->cnt;
d++;
}
src_cnt = s->cnt;
dst_cnt = d->hashval == s->hashval ? d->cnt : 0;
dst_cnt = 0;
if (d->cnt && d->hashval == s->hashval) {
dst_cnt = d->cnt;
d++;
}
if (src_cnt < dst_cnt) {
la += dst_cnt - src_cnt;
sc += src_cnt;
@ -213,6 +218,10 @@ int diffcore_count_changes(struct diff_filespec *src,
sc += dst_cnt;
s++;
}
while (d->cnt) {
la += d->cnt;
d++;
}
if (!src_count_p)
free(src_count);

View file

@ -11,16 +11,42 @@ test_expect_success 'setup non-bare' '
git commit -a -m two
'
test_expect_success 'hard reset requires a worktree' '
(cd .git &&
test_must_fail git reset --hard)
'
test_expect_success 'merge reset requires a worktree' '
(cd .git &&
test_must_fail git reset --merge)
'
test_expect_success 'mixed reset is ok' '
(cd .git && git reset)
'
test_expect_success 'soft reset is ok' '
(cd .git && git reset --soft)
'
test_expect_success 'setup bare' '
git clone --bare . bare.git &&
cd bare.git
'
test_expect_success 'hard reset is not allowed' '
test_must_fail git reset --hard HEAD^
test_expect_success 'hard reset is not allowed in bare' '
test_must_fail git reset --hard HEAD^
'
test_expect_success 'soft reset is allowed' '
test_expect_success 'merge reset is not allowed in bare' '
test_must_fail git reset --merge HEAD^
'
test_expect_success 'mixed reset is not allowed in bare' '
test_must_fail git reset --mixed HEAD^
'
test_expect_success 'soft reset is allowed in bare' '
git reset --soft HEAD^ &&
test "`git show --pretty=format:%s | head -n 1`" = "one"
'