Merge branch 'maint'
authorJunio C Hamano <junkio@cox.net>
Fri, 4 May 2007 06:26:54 +0000 (23:26 -0700)
committerJunio C Hamano <junkio@cox.net>
Fri, 4 May 2007 06:26:54 +0000 (23:26 -0700)
* maint:
gitweb: use decode_utf8 directly
posix compatibility for t4200
Document 'opendiff' value in config.txt and git-mergetool.txt
Allow PERL_PATH="/usr/bin/env perl"
Make xstrndup common
diff.c: fix "size cache" handling.
http-fetch: Disable use of curl multi support for libcurl < 7.16.

Documentation/config.txt
Documentation/git-mergetool.txt
commit.c
diff.c
git-compat-util.h
gitweb/gitweb.perl
http.h
perl/Makefile
t/t4200-rerere.sh
index c257cdf525e2daa3b90140430327e6f5d2ea6bda..24f9655fef8b9acbeb239554d55585480a0eede7 100644 (file)
@@ -520,7 +520,7 @@ merge.summary::
 merge.tool::
        Controls which merge resolution program is used by
        gitlink:git-mergetool[l].  Valid values are: "kdiff3", "tkdiff",
-       "meld", "xxdiff", "emerge", "vimdiff"
+       "meld", "xxdiff", "emerge", "vimdiff", and "opendiff"
 
 merge.verbosity::
        Controls the amount of output shown by the recursive merge
index 34288fe08b3962554178fd8a6baa8f7030096baf..add01e855a09c34b6aa9c83af6efcd17f24f3c9d 100644 (file)
@@ -25,7 +25,7 @@ OPTIONS
 -t or --tool=<tool>::
        Use the merge resolution program specified by <tool>.
        Valid merge tools are:
-       kdiff3, tkdiff, meld, xxdiff, emerge, and vimdiff.
+       kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, and opendiff
 +
 If a merge resolution program is not specified, 'git mergetool'
 will use the configuration variable merge.tool.  If the
index f1ba972d9abcb218b9aae0680a753edeb3666bc3..aa7059c1c6dd7650aa0623443372cfa804a0787c 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -718,14 +718,6 @@ static char *logmsg_reencode(const struct commit *commit,
        return out;
 }
 
-static char *xstrndup(const char *text, int len)
-{
-       char *result = xmalloc(len + 1);
-       memcpy(result, text, len);
-       result[len] = '\0';
-       return result;
-}
-
 static void fill_person(struct interp *table, const char *msg, int len)
 {
        int start, end, tz = 0;
diff --git a/diff.c b/diff.c
index 9dfded76642c1136701fb05557c182dc92448394..7bbe7590b2e6b8c1f153902e0375df193c5268f2 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -1572,14 +1572,15 @@ int diff_populate_filespec(struct diff_filespec *s, int size_only)
                enum object_type type;
                struct sha1_size_cache *e;
 
+               if (size_only && use_size_cache &&
+                   (e = locate_size_cache(s->sha1, 1, 0)) != NULL) {
+                       s->size = e->size;
+                       return 0;
+               }
+
                if (size_only) {
-                       e = locate_size_cache(s->sha1, 1, 0);
-                       if (e) {
-                               s->size = e->size;
-                               return 0;
-                       }
                        type = sha1_object_info(s->sha1, &s->size);
-                       if (type < 0)
+                       if (use_size_cache && 0 < type)
                                locate_size_cache(s->sha1, 0, s->size);
                }
                else {
index 2c84016ac9942eb62c24d143a551c8f1c8f48bb6..c08688c8f355ccf61a746bbe1ac9a6788bdea7e3 100644 (file)
@@ -197,6 +197,19 @@ static inline void *xmalloc(size_t size)
        return ret;
 }
 
+static inline char *xstrndup(const char *str, size_t len)
+{
+       char *p;
+
+       p = memchr(str, '\0', len);
+       if (p)
+               len = p - str;
+       p = xmalloc(len + 1);
+       memcpy(p, str, len);
+       p[len] = '\0';
+       return p;
+}
+
 static inline void *xrealloc(void *ptr, size_t size)
 {
        void *ret = realloc(ptr, size);
index cbd8d03e64baa6324192e0be8a910c508b196d05..ba5cc43e5b7ed6c9e980c60202c062d010bf170a 100755 (executable)
@@ -564,12 +564,6 @@ sub validate_refname {
        return $input;
 }
 
-# very thin wrapper for decode("utf8", $str, Encode::FB_DEFAULT);
-sub to_utf8 {
-       my $str = shift;
-       return decode("utf8", $str, Encode::FB_DEFAULT);
-}
-
 # quote unsafe chars, but keep the slash, even when it's not
 # correct, but quoted slashes look too horrible in bookmarks
 sub esc_param {
@@ -594,7 +588,7 @@ ($;%)
        my $str = shift;
        my %opts = @_;
 
-       $str = to_utf8($str);
+       $str = decode_utf8($str);
        $str = $cgi->escapeHTML($str);
        if ($opts{'-nbsp'}) {
                $str =~ s/ /&nbsp;/g;
@@ -608,7 +602,7 @@ sub esc_path {
        my $str = shift;
        my %opts = @_;
 
-       $str = to_utf8($str);
+       $str = decode_utf8($str);
        $str = $cgi->escapeHTML($str);
        if ($opts{'-nbsp'}) {
                $str =~ s/ /&nbsp;/g;
@@ -891,7 +885,7 @@ sub format_subject_html {
 
        if (length($short) < length($long)) {
                return $cgi->a({-href => $href, -class => "list subject",
-                               -title => to_utf8($long)},
+                               -title => decode_utf8($long)},
                       esc_html($short) . $extra);
        } else {
                return $cgi->a({-href => $href, -class => "list subject"},
@@ -1126,7 +1120,7 @@ sub git_get_projects_list {
                        if (check_export_ok("$projectroot/$path")) {
                                my $pr = {
                                        path => $path,
-                                       owner => to_utf8($owner),
+                                       owner => decode_utf8($owner),
                                };
                                push @list, $pr;
                                (my $forks_path = $path) =~ s/\.git$//;
@@ -1156,7 +1150,7 @@ sub git_get_project_owner {
                        $pr = unescape($pr);
                        $ow = unescape($ow);
                        if ($pr eq $project) {
-                               $owner = to_utf8($ow);
+                               $owner = decode_utf8($ow);
                                last;
                        }
                }
@@ -1630,7 +1624,7 @@ sub get_file_owner {
        }
        my $owner = $gcos;
        $owner =~ s/[,;].*$//;
-       return to_utf8($owner);
+       return decode_utf8($owner);
 }
 
 ## ......................................................................
@@ -1713,7 +1707,7 @@ sub git_header_html {
 
        my $title = "$site_name";
        if (defined $project) {
-               $title .= " - " . to_utf8($project);
+               $title .= " - " . decode_utf8($project);
                if (defined $action) {
                        $title .= "/$action";
                        if (defined $file_name) {
@@ -1986,7 +1980,7 @@ sub git_print_page_path {
 
        print "<div class=\"page_path\">";
        print $cgi->a({-href => href(action=>"tree", hash_base=>$hb),
-                     -title => 'tree root'}, to_utf8("[$project]"));
+                     -title => 'tree root'}, decode_utf8("[$project]"));
        print " / ";
        if (defined $name) {
                my @dirname = split '/', $name;
@@ -2604,7 +2598,7 @@ sub git_project_list_body {
                ($pr->{'age'}, $pr->{'age_string'}) = @aa;
                if (!defined $pr->{'descr'}) {
                        my $descr = git_get_project_description($pr->{'path'}) || "";
-                       $pr->{'descr_long'} = to_utf8($descr);
+                       $pr->{'descr_long'} = decode_utf8($descr);
                        $pr->{'descr'} = chop_str($descr, 25, 5);
                }
                if (!defined $pr->{'owner'}) {
@@ -3636,7 +3630,7 @@ sub git_snapshot {
                $hash = git_get_head_hash($project);
        }
 
-       my $filename = to_utf8(basename($project)) . "-$hash.tar.$suffix";
+       my $filename = decode_utf8(basename($project)) . "-$hash.tar.$suffix";
 
        print $cgi->header(
                -type => "application/$ctype",
diff --git a/http.h b/http.h
index 324fcf4f5482dc67c3f68df0be30fb0aa210401e..69b6b667d956933eca7153b51867493d7271df0b 100644 (file)
--- a/http.h
+++ b/http.h
@@ -6,7 +6,7 @@
 #include <curl/curl.h>
 #include <curl/easy.h>
 
-#if LIBCURL_VERSION_NUM >= 0x070908
+#if LIBCURL_VERSION_NUM >= 0x071000
 #define USE_CURL_MULTI
 #define DEFAULT_MAX_REQUESTS 5
 #endif
index 17d004e5a0a19dc59b928a96a71d1470deb06e53..0d695fd2f35f91b47455dc382d86b52bb51088d2 100644 (file)
@@ -33,7 +33,7 @@ $(makfile): ../GIT-CFLAGS Makefile
        echo '  echo $(instdir_SQ)' >> $@
 else
 $(makfile): Makefile.PL ../GIT-CFLAGS
-       '$(PERL_PATH_SQ)' $< PREFIX='$(prefix_SQ)'
+       $(PERL_PATH) $< PREFIX='$(prefix_SQ)'
 endif
 
 # this is just added comfort for calling make directly in perl dir
index 6ba63d7173ba5d333d80c017c4ef5a8c77b90a11..c64ebbb2e9e9eaf3fbb792a4f119cd9a1c2b4352 100755 (executable)
@@ -44,7 +44,7 @@ mkdir .git/rr-cache
 
 test_expect_failure 'conflicting merge' 'git pull . first'
 
-sha1=$(sed -e 's/\t.*//' .git/rr-cache/MERGE_RR)
+sha1=$(sed -e 's/      .*//' .git/rr-cache/MERGE_RR)
 rr=.git/rr-cache/$sha1
 test_expect_success 'recorded preimage' "grep ======= $rr/preimage"