Merge branch 'maint'
* 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.
This commit is contained in:
commit
0d0ba03a18
@ -206,10 +206,29 @@ endif::git-format-patch[]
|
|||||||
the diff-patch output format. Non default number of
|
the diff-patch output format. Non default number of
|
||||||
digits can be specified with `--abbrev=<n>`.
|
digits can be specified with `--abbrev=<n>`.
|
||||||
|
|
||||||
-B::
|
-B[<n>][/<m>]::
|
||||||
Break complete rewrite changes into pairs of delete and create.
|
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::
|
-M[<n>]::
|
||||||
ifndef::git-log[]
|
ifndef::git-log[]
|
||||||
Detect renames.
|
Detect renames.
|
||||||
endif::git-log[]
|
endif::git-log[]
|
||||||
@ -218,9 +237,15 @@ ifdef::git-log[]
|
|||||||
For following files across renames while traversing history, see
|
For following files across renames while traversing history, see
|
||||||
`--follow`.
|
`--follow`.
|
||||||
endif::git-log[]
|
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`.
|
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[]
|
ifndef::git-format-patch[]
|
||||||
--diff-filter=[ACDMRTUXB*]::
|
--diff-filter=[ACDMRTUXB*]::
|
||||||
|
@ -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,
|
Without these options, the command applies the patch only to files,
|
||||||
and does not require them to be in a git repository.
|
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
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
<patch>...::
|
<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
|
are ignored and only the absence or presence of the corresponding
|
||||||
subdirectory is checked and (if possible) updated.
|
subdirectory is checked and (if possible) updated.
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
linkgit:git-am[1].
|
||||||
|
|
||||||
|
|
||||||
Author
|
Author
|
||||||
------
|
------
|
||||||
Written by Linus Torvalds <torvalds@osdl.org>
|
Written by Linus Torvalds <torvalds@osdl.org>
|
||||||
|
@ -55,6 +55,9 @@ OPTIONS
|
|||||||
paths. With this, the full diff is shown for commits that touch
|
paths. With this, the full diff is shown for commits that touch
|
||||||
the specified paths; this means that "<path>..." limits only
|
the specified paths; this means that "<path>..." limits only
|
||||||
commits, and doesn't limit diff for those commits.
|
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::
|
--log-size::
|
||||||
Before the log message print out its size in bytes. Intended
|
Before the log message print out its size in bytes. Intended
|
||||||
|
@ -129,10 +129,12 @@ OPTIONS
|
|||||||
is taken to be in `refs/notes/` if it is not qualified.
|
is taken to be in `refs/notes/` if it is not qualified.
|
||||||
|
|
||||||
-n::
|
-n::
|
||||||
|
--dry-run::
|
||||||
Do not remove anything; just report the object names whose notes
|
Do not remove anything; just report the object names whose notes
|
||||||
would be removed.
|
would be removed.
|
||||||
|
|
||||||
-v::
|
-v::
|
||||||
|
--verbose::
|
||||||
Report all object names whose notes are removed.
|
Report all object names whose notes are removed.
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,10 +31,12 @@ OPTIONS
|
|||||||
-------
|
-------
|
||||||
|
|
||||||
-n::
|
-n::
|
||||||
|
--dry-run::
|
||||||
Do not remove anything; just report what it would
|
Do not remove anything; just report what it would
|
||||||
remove.
|
remove.
|
||||||
|
|
||||||
-v::
|
-v::
|
||||||
|
--verbose::
|
||||||
Report all removed objects.
|
Report all removed objects.
|
||||||
|
|
||||||
\--::
|
\--::
|
||||||
|
@ -163,9 +163,15 @@ flag, so you can do
|
|||||||
|
|
||||||
to get a listing of all tags together with what they dereference.
|
to get a listing of all tags together with what they dereference.
|
||||||
|
|
||||||
|
FILES
|
||||||
|
-----
|
||||||
|
`.git/refs/*`, `.git/packed-refs`
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
linkgit:git-ls-remote[1]
|
linkgit:git-ls-remote[1],
|
||||||
|
linkgit:git-update-ref[1],
|
||||||
|
linkgit:gitrepository-layout[5]
|
||||||
|
|
||||||
AUTHORS
|
AUTHORS
|
||||||
-------
|
-------
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
--pretty[='<format>']::
|
--pretty[='<format>']::
|
||||||
--format[='<format>']::
|
--format='<format>'::
|
||||||
|
|
||||||
Pretty-print the contents of the commit logs in a given format,
|
Pretty-print the contents of the commit logs in a given format,
|
||||||
where '<format>' can be one of 'oneline', 'short', 'medium',
|
where '<format>' can be one of 'oneline', 'short', 'medium',
|
||||||
|
3
Makefile
3
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/commit.o builtin/revert.o wt-status.o: wt-status.h
|
||||||
builtin/tar-tree.o archive-tar.o: tar.h
|
builtin/tar-tree.o archive-tar.o: tar.h
|
||||||
builtin/pack-objects.o: thread-utils.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-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-interface.o $(XDIFF_OBJS): \
|
||||||
xdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \
|
xdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \
|
||||||
|
@ -33,28 +33,38 @@ static void collapse_slashes(char *dst, const char *src)
|
|||||||
*dst = '\0';
|
*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)
|
int cmd_check_ref_format(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
if (argc == 2 && !strcmp(argv[1], "-h"))
|
if (argc == 2 && !strcmp(argv[1], "-h"))
|
||||||
usage(builtin_check_ref_format_usage);
|
usage(builtin_check_ref_format_usage);
|
||||||
|
|
||||||
if (argc == 3 && !strcmp(argv[1], "--branch")) {
|
if (argc == 3 && !strcmp(argv[1], "--branch"))
|
||||||
struct strbuf sb = STRBUF_INIT;
|
return check_ref_format_branch(argv[2]);
|
||||||
|
if (argc == 3 && !strcmp(argv[1], "--print"))
|
||||||
if (strbuf_check_branch_ref(&sb, argv[2]))
|
return check_ref_format_print(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 != 2)
|
if (argc != 2)
|
||||||
usage(builtin_check_ref_format_usage);
|
usage(builtin_check_ref_format_usage);
|
||||||
return !!check_ref_format(argv[1]);
|
return !!check_ref_format(argv[1]);
|
||||||
|
@ -798,8 +798,9 @@ static int prune(int argc, const char **argv, const char *prefix)
|
|||||||
struct notes_tree *t;
|
struct notes_tree *t;
|
||||||
int show_only = 0, verbose = 0;
|
int show_only = 0, verbose = 0;
|
||||||
struct option options[] = {
|
struct option options[] = {
|
||||||
OPT_BOOLEAN('n', NULL, &show_only, "do not remove, show only"),
|
OPT_BOOLEAN('n', "dry-run", &show_only,
|
||||||
OPT_BOOLEAN('v', NULL, &verbose, "report pruned notes"),
|
"do not remove, show only"),
|
||||||
|
OPT_BOOLEAN('v', "verbose", &verbose, "report pruned notes"),
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -125,10 +125,9 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
|
|||||||
{
|
{
|
||||||
struct rev_info revs;
|
struct rev_info revs;
|
||||||
const struct option options[] = {
|
const struct option options[] = {
|
||||||
OPT_BOOLEAN('n', NULL, &show_only,
|
OPT_BOOLEAN('n', "dry-run", &show_only,
|
||||||
"do not remove, show only"),
|
"do not remove, show only"),
|
||||||
OPT_BOOLEAN('v', NULL, &verbose,
|
OPT_BOOLEAN('v', "verbose", &verbose, "report pruned objects"),
|
||||||
"report pruned objects"),
|
|
||||||
OPT_DATE(0, "expire", &expire,
|
OPT_DATE(0, "expire", &expire,
|
||||||
"expire objects older than <time>"),
|
"expire objects older than <time>"),
|
||||||
OPT_END()
|
OPT_END()
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#define MAX_SCORE 60000.0
|
#define MAX_SCORE 60000.0
|
||||||
#define DEFAULT_RENAME_SCORE 30000 /* rename/copy similarity minimum (50%) */
|
#define DEFAULT_RENAME_SCORE 30000 /* rename/copy similarity minimum (50%) */
|
||||||
#define DEFAULT_BREAK_SCORE 30000 /* minimum for break to happen (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 */
|
#define MINIMUM_BREAK_SIZE 400 /* do not break a file smaller than this */
|
||||||
|
|
||||||
|
@ -346,7 +346,7 @@ do
|
|||||||
--root)
|
--root)
|
||||||
rebase_root=t
|
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
|
force_rebase=t
|
||||||
;;
|
;;
|
||||||
--rerere-autoupdate|--no-rerere-autoupdate)
|
--rerere-autoupdate|--no-rerere-autoupdate)
|
||||||
|
@ -6521,12 +6521,13 @@ sub git_search {
|
|||||||
$paging_nav .= " ⋅ next";
|
$paging_nav .= " ⋅ next";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($#commitlist >= 100) {
|
|
||||||
}
|
|
||||||
|
|
||||||
git_print_page_nav('','', $hash,$co{'tree'},$hash, $paging_nav);
|
git_print_page_nav('','', $hash,$co{'tree'},$hash, $paging_nav);
|
||||||
git_print_header_div('commit', esc_html($co{'title'}), $hash);
|
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') {
|
if ($searchtype eq 'pickaxe') {
|
||||||
|
12
imap-send.c
12
imap-send.c
@ -543,9 +543,13 @@ static struct imap_cmd *v_issue_imap_cmd(struct imap_store *ctx,
|
|||||||
while (imap->literal_pending)
|
while (imap->literal_pending)
|
||||||
get_cmd_result(ctx, NULL);
|
get_cmd_result(ctx, NULL);
|
||||||
|
|
||||||
bufl = nfsnprintf(buf, sizeof(buf), cmd->cb.data ? CAP(LITERALPLUS) ?
|
if (!cmd->cb.data)
|
||||||
"%d %s{%d+}\r\n" : "%d %s{%d}\r\n" : "%d %s\r\n",
|
bufl = nfsnprintf(buf, sizeof(buf), "%d %s\r\n", cmd->tag, cmd->cmd);
|
||||||
cmd->tag, cmd->cmd, cmd->cb.dlen);
|
else
|
||||||
|
bufl = nfsnprintf(buf, sizeof(buf), "%d %s{%d%s}\r\n",
|
||||||
|
cmd->tag, cmd->cmd, cmd->cb.dlen,
|
||||||
|
CAP(LITERALPLUS) ? "+" : "");
|
||||||
|
|
||||||
if (Verbose) {
|
if (Verbose) {
|
||||||
if (imap->num_in_progress)
|
if (imap->num_in_progress)
|
||||||
printf("(%d in progress) ", 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;
|
int gai;
|
||||||
char portstr[6];
|
char portstr[6];
|
||||||
|
|
||||||
snprintf(portstr, sizeof(portstr), "%hu", srvc->port);
|
snprintf(portstr, sizeof(portstr), "%d", srvc->port);
|
||||||
|
|
||||||
memset(&hints, 0, sizeof(hints));
|
memset(&hints, 0, sizeof(hints));
|
||||||
hints.ai_socktype = SOCK_STREAM;
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
|
@ -41,6 +41,23 @@ test_expect_success "check-ref-format --branch @{-1}" '
|
|||||||
refname2=$(git check-ref-format --branch @{-2}) &&
|
refname2=$(git check-ref-format --branch @{-2}) &&
|
||||||
test "$refname2" = master'
|
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() {
|
valid_ref_normalized() {
|
||||||
test_expect_success "ref name '$1' simplifies to '$2'" "
|
test_expect_success "ref name '$1' simplifies to '$2'" "
|
||||||
refname=\$(git check-ref-format --print '$1') &&
|
refname=\$(git check-ref-format --print '$1') &&
|
||||||
|
@ -147,7 +147,8 @@ test_expect_success 'use index-filter to move into a subdirectory' '
|
|||||||
GIT_INDEX_FILE=\$GIT_INDEX_FILE.new \
|
GIT_INDEX_FILE=\$GIT_INDEX_FILE.new \
|
||||||
git update-index --index-info &&
|
git update-index --index-info &&
|
||||||
mv \"\$GIT_INDEX_FILE.new\" \"\$GIT_INDEX_FILE\"" directorymoved &&
|
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' '
|
test_expect_success 'stops when msg filter fails' '
|
||||||
old=$(git rev-parse HEAD) &&
|
old=$(git rev-parse HEAD) &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user