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 howto-index.txt
doc.dep doc.dep
cmds-*.txt cmds-*.txt
manpage-base-url.xsl

View File

@ -105,18 +105,15 @@ XMLTO_EXTRA += -m manpage-suppress-sp.xsl
endif endif
# Newer DocBook stylesheet emits warning cruft in the output when # Newer DocBook stylesheet emits warning cruft in the output when
# this is not set, and if set it shows an absolute link. We can # this is not set, and if set it shows an absolute link. Older
# use MAN_BASE_URL=http://www.kernel.org/pub/software/scm/git/docs/ # stylesheets simply ignore this parameter.
# but distros may want to set it to /usr/share/doc/git-core/docs/ or
# something like that.
# #
# As older stylesheets simply ignore this parameter, it ought to be # Distros may want to use MAN_BASE_URL=file:///path/to/git/docs/
# safe to set it to empty string when the base URL is not specified, # or similar.
# but unfortunately we cannot do so unconditionally because at least ifndef MAN_BASE_URL
# xmlto 0.0.18 is reported to lack --stringparam option. MAN_BASE_URL = file://$(htmldir)/
ifdef MAN_BASE_URL
XMLTO_EXTRA += --stringparam man.base.url.for.relative.links=$(MAN_BASE_URL)
endif endif
XMLTO_EXTRA += -m manpage-base-url.xsl
# If your target system uses GNU groff, it may try to render # If your target system uses GNU groff, it may try to render
# apostrophes as a "pretty" apostrophe using unicode. This breaks # apostrophes as a "pretty" apostrophe using unicode. This breaks
@ -245,6 +242,7 @@ clean:
$(RM) howto-index.txt howto/*.html doc.dep $(RM) howto-index.txt howto/*.html doc.dep
$(RM) technical/api-*.html technical/api-index.txt $(RM) technical/api-*.html technical/api-index.txt
$(RM) $(cmds_txt) *.made $(RM) $(cmds_txt) *.made
$(RM) manpage-base-url.xsl
$(MAN_HTML): %.html : %.txt $(MAN_HTML): %.html : %.txt
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
@ -252,7 +250,10 @@ $(MAN_HTML): %.html : %.txt
$(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $< && \ $(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $< && \
mv $@+ $@ 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) $@ && \ $(QUIET_XMLTO)$(RM) $@ && \
xmlto -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< 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 twice, and held onto memory after it has used the data in it
unnecessarily before it freed. 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 * "git format-patch revisions... -- path" issued an incorrect error
message that suggested to use "--" on the command line when path 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 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 * "git rebase" got confused when the log message began with certain
strings that looked like Subject:, Date: or From: header. 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. The tree or commit to produce an archive for.
path:: path::
If one or more paths are specified, include only these in the Without an optional path parameter, all files and subdirectories
archive, otherwise include 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 BACKEND EXTRA OPTIONS
--------------------- ---------------------

View File

@ -43,9 +43,10 @@ unreleased) version of git, that is available from 'master'
branch of the `git.git` repository. branch of the `git.git` repository.
Documentation for older releases are available here: 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 * 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.4.txt[1.6.5.4],
link:RelNotes-1.6.5.3.txt[1.6.5.3], link:RelNotes-1.6.5.3.txt[1.6.5.3],
link:RelNotes-1.6.5.2.txt[1.6.5.2], 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); git_config(git_rerere_gc_config, NULL);
dir = opendir(git_path("rr-cache")); dir = opendir(git_path("rr-cache"));
if (!dir)
die_errno("unable to open rr-cache directory");
while ((e = readdir(dir))) { while ((e = readdir(dir))) {
if (is_dot_or_dotdot(e->d_name)) if (is_dot_or_dotdot(e->d_name))
continue; continue;

View File

@ -286,8 +286,10 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
if (reset_type == NONE) if (reset_type == NONE)
reset_type = MIXED; /* by default */ reset_type = MIXED; /* by default */
if (reset_type == HARD && is_bare_repository()) if ((reset_type == HARD || reset_type == MERGE)
die("hard reset makes no sense in a bare repository"); && !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 /* Soft reset does not touch the index file nor the working tree
* at all, but requires them in a good order. Other resets reset * 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) { while (d->cnt) {
if (d->hashval >= s->hashval) if (d->hashval >= s->hashval)
break; break;
la += d->cnt;
d++; d++;
} }
src_cnt = s->cnt; 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) { if (src_cnt < dst_cnt) {
la += dst_cnt - src_cnt; la += dst_cnt - src_cnt;
sc += src_cnt; sc += src_cnt;
@ -213,6 +218,10 @@ int diffcore_count_changes(struct diff_filespec *src,
sc += dst_cnt; sc += dst_cnt;
s++; s++;
} }
while (d->cnt) {
la += d->cnt;
d++;
}
if (!src_count_p) if (!src_count_p)
free(src_count); free(src_count);

View File

@ -11,16 +11,42 @@ test_expect_success 'setup non-bare' '
git commit -a -m two 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' ' test_expect_success 'setup bare' '
git clone --bare . bare.git && git clone --bare . bare.git &&
cd bare.git cd bare.git
' '
test_expect_success 'hard reset is not allowed' ' test_expect_success 'hard reset is not allowed in bare' '
test_must_fail git reset --hard HEAD^ 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^ && git reset --soft HEAD^ &&
test "`git show --pretty=format:%s | head -n 1`" = "one" test "`git show --pretty=format:%s | head -n 1`" = "one"
' '