aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-12-05 11:39:13 -0800
committerJunio C Hamano <gitster@pobox.com>2009-12-05 11:39:13 -0800
commit3880c18336a77b1a37ec88e5a515498c73eb5551 (patch)
tree33fc7550fe84438699baebaca89bf836f44fb328
parent1a56be134f9477296a7ade040e8b802bf3a643a1 (diff)
parentaa031314bf8189a15290d5bd0d85fa2a0307ceb7 (diff)
downloadgit-3880c18336a77b1a37ec88e5a515498c73eb5551.tar.gz
git-3880c18336a77b1a37ec88e5a515498c73eb5551.tar.xz
Sync with 1.6.5.5
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--Documentation/.gitignore1
-rw-r--r--Documentation/Makefile23
-rw-r--r--Documentation/RelNotes-1.6.5.5.txt9
-rw-r--r--Documentation/git-archive.txt5
-rw-r--r--Documentation/git.txt3
-rw-r--r--Documentation/manpage-base-url.xsl.in10
-rw-r--r--builtin-rerere.c2
-rw-r--r--builtin-reset.c6
-rw-r--r--diffcore-delta.c11
-rwxr-xr-xt/t7103-reset-bare.sh32
10 files changed, 80 insertions, 22 deletions
diff --git a/Documentation/.gitignore b/Documentation/.gitignore
index d8edd9040..1c3a9fead 100644
--- a/Documentation/.gitignore
+++ b/Documentation/.gitignore
@@ -8,3 +8,4 @@ gitman.info
howto-index.txt
doc.dep
cmds-*.txt
+manpage-base-url.xsl
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 3f1042eeb..4797b2dc3 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -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 $<
diff --git a/Documentation/RelNotes-1.6.5.5.txt b/Documentation/RelNotes-1.6.5.5.txt
index 616e0dd0f..ecfc57d87 100644
--- a/Documentation/RelNotes-1.6.5.5.txt
+++ b/Documentation/RelNotes-1.6.5.5.txt
@@ -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.
diff --git a/Documentation/git-archive.txt b/Documentation/git-archive.txt
index 3d1c1e75b..e57979198 100644
--- a/Documentation/git-archive.txt
+++ b/Documentation/git-archive.txt
@@ -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
---------------------
diff --git a/Documentation/git.txt b/Documentation/git.txt
index 36637afa0..ad6037baa 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -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],
diff --git a/Documentation/manpage-base-url.xsl.in b/Documentation/manpage-base-url.xsl.in
new file mode 100644
index 000000000..e800904df
--- /dev/null
+++ b/Documentation/manpage-base-url.xsl.in
@@ -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>
diff --git a/builtin-rerere.c b/builtin-rerere.c
index 343d6cde4..2be9ffb77 100644
--- a/builtin-rerere.c
+++ b/builtin-rerere.c
@@ -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;
diff --git a/builtin-reset.c b/builtin-reset.c
index 73e60223d..11d1c6e4d 100644
--- a/builtin-reset.c
+++ b/builtin-reset.c
@@ -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
diff --git a/diffcore-delta.c b/diffcore-delta.c
index e670f8512..7cf431d26 100644
--- a/diffcore-delta.c
+++ b/diffcore-delta.c
@@ -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);
diff --git a/t/t7103-reset-bare.sh b/t/t7103-reset-bare.sh
index 42bf518c6..68041df5f 100755
--- a/t/t7103-reset-bare.sh
+++ b/t/t7103-reset-bare.sh
@@ -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 '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' '
+test_expect_success 'soft reset is allowed in bare' '
git reset --soft HEAD^ &&
test "`git show --pretty=format:%s | head -n 1`" = "one"
'