Code

Merge branch 'maint'
authorJunio C Hamano <gitster@pobox.com>
Mon, 9 Aug 2010 20:05:47 +0000 (13:05 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Aug 2010 20:05:47 +0000 (13:05 -0700)
* maint:
  gitweb: clarify search results page when no matching commit found
  Documentation: add a FILES section for show-ref
  Makefile: add missing dependency on http.h
  Makefile: add missing dependencies on url.h
  Documentation/git-log: Clarify --full-diff
  git-rebase: fix typo when parsing --force-rebase
  imap-send: Fix sprintf usage
  prune: allow --dry-run for -n and --verbose for -v
  notes: allow --dry-run for -n and --verbose for -v
  Document -B<n>[/<m>], -M<n> and -C<n> variants of -B, -M and -C
  Documentation: cite git-am from git-apply
  t7003: fix subdirectory-filter test
  Allow "check-ref-format --branch" from subdirectory
  check-ref-format: handle subcommands in separate functions
  pretty-options.txt: match --format's documentation with implementation.

17 files changed:
Documentation/diff-options.txt
Documentation/git-apply.txt
Documentation/git-log.txt
Documentation/git-notes.txt
Documentation/git-prune.txt
Documentation/git-show-ref.txt
Documentation/pretty-options.txt
Makefile
builtin/check-ref-format.c
builtin/notes.c
builtin/prune.c
diffcore.h
git-rebase.sh
gitweb/gitweb.perl
imap-send.c
t/t1402-check-ref-format.sh
t/t7003-filter-branch.sh

index 2371262b10aad44391406e126a1a8027b543fd49..eecedaab6e172f227f2451f4b3d35c9e6e99bf1e 100644 (file)
@@ -206,10 +206,29 @@ endif::git-format-patch[]
        the diff-patch output format.  Non default number of
        digits can be specified with `--abbrev=<n>`.
 
--B::
-       Break complete rewrite changes into pairs of delete and create.
-
--M::
+-B[<n>][/<m>]::
+       Break complete rewrite changes into pairs of delete and
+       create. This serves two purposes:
++
+It affects the way a change that amounts to a total rewrite of a file
+not as a series of deletion and insertion mixed together with a very
+few lines that happen to match textually as the context, but as a
+single deletion of everything old followed by a single insertion of
+everything new, and the number `m` controls this aspect of the -B
+option (defaults to 60%). `-B/70%` specifies that less than 30% of the
+original should remain in the result for git to consider it a total
+rewrite (i.e. otherwise the resulting patch will be a series of
+deletion and insertion mixed together with context lines).
++
+When used with -M, a totally-rewritten file is also considered as the
+source of a rename (usually -M only considers a file that disappeared
+as the source of a rename), and the number `n` controls this aspect of
+the -B option (defaults to 50%). `-B20%` specifies that a change with
+addition and deletion compared to 20% or more of the file's size are
+eligible for being picked up as a possible source of a rename to
+another file.
+
+-M[<n>]::
 ifndef::git-log[]
        Detect renames.
 endif::git-log[]
@@ -218,9 +237,15 @@ ifdef::git-log[]
        For following files across renames while traversing history, see
        `--follow`.
 endif::git-log[]
+       If `n` is specified, it is a is a threshold on the similarity
+       index (i.e. amount of addition/deletions compared to the
+       file's size). For example, `-M90%` means git should consider a
+       delete/add pair to be a rename if more than 90% of the file
+       hasn't changed.
 
--C::
+-C[<n>]::
        Detect copies as well as renames.  See also `--find-copies-harder`.
+       If `n` is specified, it has the same meaning as for `-M<n>`.
 
 ifndef::git-format-patch[]
 --diff-filter=[ACDMRTUXB*]::
index 8463439ac5047d5f1921db4d6f2d765e7728c73b..4a74b23d403d970643fcb8e0438ab6649f54e54c 100644 (file)
@@ -26,6 +26,10 @@ with the `--cache` option the patch is only applied to the index.
 Without these options, the command applies the patch only to files,
 and does not require them to be in a git repository.
 
+This command applies the patch but does not create a commit.  Use
+linkgit:git-am[1] to create commits from patches generated by
+linkgit:git-format-patch[1] and/or received by email.
+
 OPTIONS
 -------
 <patch>...::
@@ -242,6 +246,12 @@ If `--index` is not specified, then the submodule commits in the patch
 are ignored and only the absence or presence of the corresponding
 subdirectory is checked and (if possible) updated.
 
+
+SEE ALSO
+--------
+linkgit:git-am[1].
+
+
 Author
 ------
 Written by Linus Torvalds <torvalds@osdl.org>
index e970664fe1a47c3f35f0f7c60b6c8f9781caed31..c213bdbdc500b1117805bc84cb2a0f31eeff3bcd 100644 (file)
@@ -55,6 +55,9 @@ OPTIONS
        paths.  With this, the full diff is shown for commits that touch
        the specified paths; this means that "<path>..." limits only
        commits, and doesn't limit diff for those commits.
++
+Note that this affects all diff-based output types, e.g. those
+produced by --stat etc.
 
 --log-size::
        Before the log message print out its size in bytes. Intended
index 5540af5d1667aad16ac11c53593921733c4af56f..2981d8c5efd4e7e0f65d051cfe3b28d3430e3213 100644 (file)
@@ -129,10 +129,12 @@ OPTIONS
        is taken to be in `refs/notes/` if it is not qualified.
 
 -n::
+--dry-run::
        Do not remove anything; just report the object names whose notes
        would be removed.
 
 -v::
+--verbose::
        Report all object names whose notes are removed.
 
 
index 15cfb7a8dc8e5e6eb25ee58b8fe15d89ad62dc8a..4d673a56864ca88de0e98f54a6de469e99ea0f44 100644 (file)
@@ -31,10 +31,12 @@ OPTIONS
 -------
 
 -n::
+--dry-run::
        Do not remove anything; just report what it would
        remove.
 
 -v::
+--verbose::
        Report all removed objects.
 
 \--::
index 3f9d9c6db39e030c82e1159043c45c834a47012c..75780d7d63894e220bf938da0b4f5dca40d6301d 100644 (file)
@@ -163,9 +163,15 @@ flag, so you can do
 
 to get a listing of all tags together with what they dereference.
 
+FILES
+-----
+`.git/refs/*`, `.git/packed-refs`
+
 SEE ALSO
 --------
-linkgit:git-ls-remote[1]
+linkgit:git-ls-remote[1],
+linkgit:git-update-ref[1],
+linkgit:gitrepository-layout[5]
 
 AUTHORS
 -------
index d78e121c76ef12b2d72fbdf1558fa967dfdba85b..9b6f3899ec28fb431c1f3969bf5bfb717c12f346 100644 (file)
@@ -1,5 +1,5 @@
 --pretty[='<format>']::
---format[='<format>']::
+--format='<format>'::
 
        Pretty-print the contents of the commit logs in a given format,
        where '<format>' can be one of 'oneline', 'short', 'medium',
index f33648da013237db8ab7ab7e13e37060ae2bdb25..e151516532ebddbba6ca09aca15f0f4ff45ecb9b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1854,8 +1854,9 @@ builtin/prune.o builtin/reflog.o reachable.o: reachable.h
 builtin/commit.o builtin/revert.o wt-status.o: wt-status.h
 builtin/tar-tree.o archive-tar.o: tar.h
 builtin/pack-objects.o: thread-utils.h
+connect.o transport.o http-backend.o: url.h
 http-fetch.o http-walker.o remote-curl.o transport.o walker.o: walker.h
-http.o http-walker.o http-push.o remote-curl.o: http.h
+http.o http-walker.o http-push.o http-fetch.o remote-curl.o: http.h
 
 xdiff-interface.o $(XDIFF_OBJS): \
        xdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \
index b106c65d80dfc8fe794d46e34ea1ff78b04f3056..ae3f28115a7a4d65d8bb6f284cd1ececa4f9c2ef 100644 (file)
@@ -33,28 +33,38 @@ static void collapse_slashes(char *dst, const char *src)
        *dst = '\0';
 }
 
+static int check_ref_format_branch(const char *arg)
+{
+       struct strbuf sb = STRBUF_INIT;
+       int nongit;
+
+       setup_git_directory_gently(&nongit);
+       if (strbuf_check_branch_ref(&sb, arg))
+               die("'%s' is not a valid branch name", arg);
+       printf("%s\n", sb.buf + 11);
+       return 0;
+}
+
+static int check_ref_format_print(const char *arg)
+{
+       char *refname = xmalloc(strlen(arg) + 1);
+
+       if (check_ref_format(arg))
+               return 1;
+       collapse_slashes(refname, arg);
+       printf("%s\n", refname);
+       return 0;
+}
+
 int cmd_check_ref_format(int argc, const char **argv, const char *prefix)
 {
        if (argc == 2 && !strcmp(argv[1], "-h"))
                usage(builtin_check_ref_format_usage);
 
-       if (argc == 3 && !strcmp(argv[1], "--branch")) {
-               struct strbuf sb = STRBUF_INIT;
-
-               if (strbuf_check_branch_ref(&sb, argv[2]))
-                       die("'%s' is not a valid branch name", argv[2]);
-               printf("%s\n", sb.buf + 11);
-               exit(0);
-       }
-       if (argc == 3 && !strcmp(argv[1], "--print")) {
-               char *refname = xmalloc(strlen(argv[2]) + 1);
-
-               if (check_ref_format(argv[2]))
-                       exit(1);
-               collapse_slashes(refname, argv[2]);
-               printf("%s\n", refname);
-               exit(0);
-       }
+       if (argc == 3 && !strcmp(argv[1], "--branch"))
+               return check_ref_format_branch(argv[2]);
+       if (argc == 3 && !strcmp(argv[1], "--print"))
+               return check_ref_format_print(argv[2]);
        if (argc != 2)
                usage(builtin_check_ref_format_usage);
        return !!check_ref_format(argv[1]);
index 190005f3cd44a35a6fffb20b1e4c74622b4d93f7..fbc347c9f09e0da4ba43982a5f7b29882080f150 100644 (file)
@@ -798,8 +798,9 @@ static int prune(int argc, const char **argv, const char *prefix)
        struct notes_tree *t;
        int show_only = 0, verbose = 0;
        struct option options[] = {
-               OPT_BOOLEAN('n', NULL, &show_only, "do not remove, show only"),
-               OPT_BOOLEAN('v', NULL, &verbose, "report pruned notes"),
+               OPT_BOOLEAN('n', "dry-run", &show_only,
+                           "do not remove, show only"),
+               OPT_BOOLEAN('v', "verbose", &verbose, "report pruned notes"),
                OPT_END()
        };
 
index 81f915ec315eb75e529fed8f2f6bab436755f598..99218ba49e2c6ea7ff7185e6397bb73bca213a66 100644 (file)
@@ -125,10 +125,9 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
 {
        struct rev_info revs;
        const struct option options[] = {
-               OPT_BOOLEAN('n', NULL, &show_only,
+               OPT_BOOLEAN('n', "dry-run", &show_only,
                            "do not remove, show only"),
-               OPT_BOOLEAN('v', NULL, &verbose,
-                       "report pruned objects"),
+               OPT_BOOLEAN('v', "verbose", &verbose, "report pruned objects"),
                OPT_DATE(0, "expire", &expire,
                         "expire objects older than <time>"),
                OPT_END()
index 491bea0b44963461cfce30b07ec96a9005a3c910..fed9b151b5b7818b0f211787e11b61b784ec9ade 100644 (file)
@@ -18,7 +18,7 @@
 #define MAX_SCORE 60000.0
 #define DEFAULT_RENAME_SCORE 30000 /* rename/copy similarity minimum (50%) */
 #define DEFAULT_BREAK_SCORE  30000 /* minimum for break to happen (50%) */
-#define DEFAULT_MERGE_SCORE  36000 /* maximum for break-merge to happen 60%) */
+#define DEFAULT_MERGE_SCORE  36000 /* maximum for break-merge to happen (60%) */
 
 #define MINIMUM_BREAK_SIZE     400 /* do not break a file smaller than this */
 
index 2d88742cecc5037b945b5e01fba0674177ab6a74..1d38afdb10e24e11dc5428c5a38c27fe2c773a4d 100755 (executable)
@@ -346,7 +346,7 @@ do
        --root)
                rebase_root=t
                ;;
-       -f|--f|--fo|--for|--forc|force|--force-r|--force-re|--force-reb|--force-reba|--force-rebas|--force-rebase|--no-ff)
+       -f|--f|--fo|--for|--forc|--force|--force-r|--force-re|--force-reb|--force-reba|--force-rebas|--force-rebase|--no-ff)
                force_rebase=t
                ;;
        --rerere-autoupdate|--no-rerere-autoupdate)
index 8b0276727146d6fbd9123b6bbe8b5f0631f823b1..4efeebc2276e5532938c25a8eaa188590fbdb794 100755 (executable)
@@ -6521,12 +6521,13 @@ sub git_search {
                        $paging_nav .= " &sdot; next";
                }
 
-               if ($#commitlist >= 100) {
-               }
-
                git_print_page_nav('','', $hash,$co{'tree'},$hash, $paging_nav);
                git_print_header_div('commit', esc_html($co{'title'}), $hash);
-               git_search_grep_body(\@commitlist, 0, 99, $next_link);
+               if ($page == 0 && !@commitlist) {
+                       print "<p>No match.</p>\n";
+               } else {
+                       git_search_grep_body(\@commitlist, 0, 99, $next_link);
+               }
        }
 
        if ($searchtype eq 'pickaxe') {
index 1a577a0a094342315bd3f68e8d13ef7f57a22f50..71506a8dd3ed07fe44c487a644ce9a42b94a7578 100644 (file)
@@ -543,9 +543,13 @@ static struct imap_cmd *v_issue_imap_cmd(struct imap_store *ctx,
        while (imap->literal_pending)
                get_cmd_result(ctx, NULL);
 
-       bufl = nfsnprintf(buf, sizeof(buf), cmd->cb.data ? CAP(LITERALPLUS) ?
-                          "%d %s{%d+}\r\n" : "%d %s{%d}\r\n" : "%d %s\r\n",
-                          cmd->tag, cmd->cmd, cmd->cb.dlen);
+       if (!cmd->cb.data)
+               bufl = nfsnprintf(buf, sizeof(buf), "%d %s\r\n", cmd->tag, cmd->cmd);
+       else
+               bufl = nfsnprintf(buf, sizeof(buf), "%d %s{%d%s}\r\n",
+                                 cmd->tag, cmd->cmd, cmd->cb.dlen,
+                                 CAP(LITERALPLUS) ? "+" : "");
+
        if (Verbose) {
                if (imap->num_in_progress)
                        printf("(%d in progress) ", imap->num_in_progress);
@@ -1086,7 +1090,7 @@ static struct store *imap_open_store(struct imap_server_conf *srvc)
                int gai;
                char portstr[6];
 
-               snprintf(portstr, sizeof(portstr), "%hu", srvc->port);
+               snprintf(portstr, sizeof(portstr), "%d", srvc->port);
 
                memset(&hints, 0, sizeof(hints));
                hints.ai_socktype = SOCK_STREAM;
index eb45afb018f6e3849204b44cce06ae1a4e2e29aa..782e75d00091ebf1fda93ca5dc8e532289a15638 100755 (executable)
@@ -41,6 +41,23 @@ test_expect_success "check-ref-format --branch @{-1}" '
        refname2=$(git check-ref-format --branch @{-2}) &&
        test "$refname2" = master'
 
+test_expect_success 'check-ref-format --branch from subdir' '
+       mkdir subdir &&
+
+       T=$(git write-tree) &&
+       sha1=$(echo A | git commit-tree $T) &&
+       git update-ref refs/heads/master $sha1 &&
+       git update-ref refs/remotes/origin/master $sha1
+       git checkout master &&
+       git checkout origin/master &&
+       git checkout master &&
+       refname=$(
+               cd subdir &&
+               git check-ref-format --branch @{-1}
+       ) &&
+       test "$refname" = "$sha1"
+'
+
 valid_ref_normalized() {
        test_expect_success "ref name '$1' simplifies to '$2'" "
                refname=\$(git check-ref-format --print '$1') &&
index 0da13a8d6b8f75ba041a353dfc6a356c1e8bbed0..fd7e3a113c9e3fcedc1c18c0b1a87a2c0ffef15b 100755 (executable)
@@ -147,7 +147,8 @@ test_expect_success 'use index-filter to move into a subdirectory' '
                  GIT_INDEX_FILE=\$GIT_INDEX_FILE.new \
                        git update-index --index-info &&
                  mv \"\$GIT_INDEX_FILE.new\" \"\$GIT_INDEX_FILE\"" directorymoved &&
-       test -z "$(git diff HEAD directorymoved:newsubdir)"'
+       git diff --exit-code HEAD directorymoved:newsubdir
+'
 
 test_expect_success 'stops when msg filter fails' '
        old=$(git rev-parse HEAD) &&