Sync with 1.7.0.4
authorJunio C Hamano <gitster@pobox.com>
Wed, 31 Mar 2010 22:14:27 +0000 (15:14 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 31 Mar 2010 22:14:27 +0000 (15:14 -0700)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/RelNotes-1.7.0.4.txt
Documentation/git-http-backend.txt
Documentation/git-show-ref.txt
Documentation/git.txt
GIT-VERSION-GEN
Makefile
builtin/reset.c
compat/bswap.h
compat/mingw.c
diff.c
gitweb/gitweb.perl
index cbc94a2f08a7a18a22b5e8df880999b2bf3f95a5..cf7f60e60d738bab0f319fc32da41259e177ee35 100644 (file)
@@ -1,9 +1,11 @@
-Git v1.7.0.4 Release Notes (draft)
-==================================
+Git v1.7.0.4 Release Notes
+==========================
 
 Fixes since v1.7.0.3
 --------------------
 
+ * Optimized ntohl/htonl on big-endian machines were broken.
+
  * Color values given to "color.<cmd>.<slot>" configuration can now have
    more than one attributes (e.g. "bold ul").
 
@@ -16,4 +18,10 @@ Fixes since v1.7.0.3
  * "git fast-export" didn't check error status and stop when marks file
    cannot be opened.
 
+ * "git format-patch --ignore-if-in-upstream" gave unwarranted errors
+   when the range was empty, instead of silently finishing.
+
+ * "git remote prune" did not detect remote tracking refs that became
+   dangling correctly.
+
 And other minor fixes and documentation updates.
index 52388206570238636d50ed360120d3464f630a94..277d9e141bf81bddb4ba661e43763b7774a1417d 100644 (file)
@@ -35,7 +35,7 @@ These services can be enabled/disabled using the per-repository
 configuration file:
 
 http.getanyfile::
-       This serves older Git clients which are unable to use the
+       This serves Git clients older than version 1.6.6 that are unable to use the
        upload pack service.  When enabled, clients are able to read
        any file within the repository, including objects that are
        no longer reachable from a branch but are still present.
index df17d49b87c260c6f5b3fd75d4aad41b77fcf8c3..3f9d9c6db39e030c82e1159043c45c834a47012c 100644 (file)
@@ -10,7 +10,7 @@ SYNOPSIS
 [verse]
 'git show-ref' [-q|--quiet] [--verify] [--head] [-d|--dereference]
             [-s|--hash[=<n>]] [--abbrev[=<n>]] [--tags]
-            [--heads] [--] <pattern>...
+            [--heads] [--] [<pattern>...]
 'git show-ref' --exclude-existing[=<pattern>] < ref-list
 
 DESCRIPTION
index 4e00b315ff7450efb4a48ba184c6d65991d53c58..657eac831cf0650ce3c4ac6a1f6a690b282cea59 100644 (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.7.0.3/git.html[documentation for release 1.7.0.3]
+* link:v1.7.0.4/git.html[documentation for release 1.7.0.4]
 
 * release notes for
+  link:RelNotes-1.7.0.4.txt[1.7.0.4],
   link:RelNotes-1.7.0.3.txt[1.7.0.3],
   link:RelNotes-1.7.0.2.txt[1.7.0.2],
   link:RelNotes-1.7.0.1.txt[1.7.0.1],
index 076c18ecc3fc9dc77d1be5dc6e960da72c519576..3eb6d8517eeda1e51d042363f0265fc87f4e5ba0 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=GIT-VERSION-FILE
-DEF_VER=v1.7.0.3
+DEF_VER=v1.7.0.4
 
 LF='
 '
index 3a6c6ea5259693db4846b91855675218b1e1a920..8a0f5c4d5b9a7c6c3617708014417b918c0ef034 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -919,6 +919,7 @@ ifeq ($(uname_S),IRIX)
        SNPRINTF_RETURNS_BOGUS = YesPlease
        SHELL_PATH = /usr/gnu/bin/bash
        NEEDS_LIBGEN = YesPlease
+       NEEDS_LIBICONV = YesPlease
 endif
 ifeq ($(uname_S),IRIX64)
        NO_SETENV=YesPlease
@@ -937,6 +938,7 @@ ifeq ($(uname_S),IRIX64)
        SNPRINTF_RETURNS_BOGUS = YesPlease
        SHELL_PATH=/usr/gnu/bin/bash
        NEEDS_LIBGEN = YesPlease
+       NEEDS_LIBICONV = YesPlease
 endif
 ifeq ($(uname_S),HP-UX)
        NO_IPV6=YesPlease
index 2c3a69adc674bb3f539d29b2d29116e89f887066..1283068fd24c371e39f0271d01dd6b3aac437d4b 100644 (file)
@@ -23,7 +23,8 @@
 
 static const char * const git_reset_usage[] = {
        "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]",
-       "git reset [--mixed] <commit> [--] <paths>...",
+       "git reset [-q] <commit> [--] <paths>...",
+       "git reset --patch [<commit>] [--] [<paths>...]",
        NULL
 };
 
index f3b8c44181776a99c3eb79e15542104d67001c9d..54756dbb05ba99ab1679f17a50f04c3f1cede8e6 100644 (file)
@@ -17,6 +17,8 @@ static inline uint32_t default_swab32(uint32_t val)
                ((val & 0x000000ff) << 24));
 }
 
+#undef bswap32
+
 #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 
 #define bswap32(x) ({ \
index c5bfb39b3949430cd06093afdbc85ecc22f8c9c7..30716903f5c3072588ddaae71f557f14d7806fde 100644 (file)
@@ -275,8 +275,17 @@ int mingw_utime (const char *file_name, const struct utimbuf *times)
        int fh, rc;
 
        /* must have write permission */
-       if ((fh = open(file_name, O_RDWR | O_BINARY)) < 0)
-               return -1;
+       DWORD attrs = GetFileAttributes(file_name);
+       if (attrs != INVALID_FILE_ATTRIBUTES &&
+           (attrs & FILE_ATTRIBUTE_READONLY)) {
+               /* ignore errors here; open() will report them */
+               SetFileAttributes(file_name, attrs & ~FILE_ATTRIBUTE_READONLY);
+       }
+
+       if ((fh = open(file_name, O_RDWR | O_BINARY)) < 0) {
+               rc = -1;
+               goto revert_attrs;
+       }
 
        time_t_to_filetime(times->modtime, &mft);
        time_t_to_filetime(times->actime, &aft);
@@ -286,6 +295,13 @@ int mingw_utime (const char *file_name, const struct utimbuf *times)
        } else
                rc = 0;
        close(fh);
+
+revert_attrs:
+       if (attrs != INVALID_FILE_ATTRIBUTES &&
+           (attrs & FILE_ATTRIBUTE_READONLY)) {
+               /* ignore errors again */
+               SetFileAttributes(file_name, attrs);
+       }
        return rc;
 }
 
diff --git a/diff.c b/diff.c
index f5d93e9694d2f5e78bfa3d8dc886968d7cdd5867..2daa732a360b2e846791156be5ceb33b85b4eac9 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -3883,6 +3883,7 @@ static char *run_textconv(const char *pgm, struct diff_filespec *spec,
        const char **arg = argv;
        struct child_process child;
        struct strbuf buf = STRBUF_INIT;
+       int err = 0;
 
        temp = prepare_temp_file(spec->path, spec);
        *arg++ = pgm;
@@ -3893,16 +3894,20 @@ static char *run_textconv(const char *pgm, struct diff_filespec *spec,
        child.use_shell = 1;
        child.argv = argv;
        child.out = -1;
-       if (start_command(&child) != 0 ||
-           strbuf_read(&buf, child.out, 0) < 0 ||
-           finish_command(&child) != 0) {
-               close(child.out);
-               strbuf_release(&buf);
+       if (start_command(&child)) {
                remove_tempfile();
-               error("error running textconv command '%s'", pgm);
                return NULL;
        }
+
+       if (strbuf_read(&buf, child.out, 0) < 0)
+               err = error("error reading from textconv command '%s'", pgm);
        close(child.out);
+
+       if (finish_command(&child) || err) {
+               strbuf_release(&buf);
+               remove_tempfile();
+               return NULL;
+       }
        remove_tempfile();
 
        return strbuf_detach(&buf, outsize);
index a2d2283ec921acac7b068537eb85f63c16de9556..c356e95f18f0f784584ce644c08e1966ca1be52f 100755 (executable)
@@ -2216,8 +2216,7 @@ sub config_to_multi {
 sub git_get_project_config {
        my ($key, $type) = @_;
 
-       # do we have project
-       return unless (defined $project && defined $git_dir);
+       return unless defined $git_dir;
 
        # key sanity check
        return unless ($key);