mirror of
https://github.com/git/git.git
synced 2026-01-18 06:34:21 +00:00
Merge branch 'master' into next
* master: (23 commits) Git 1.7.1-rc2 Documentation/remote-helpers: Fix typos and improve language Fixup: Second argument may be any arbitrary string Documentation/remote-helpers: Add invocation section Documentation/urls: Rewrite to accomodate <transport>::<address> Documentation/remote-helpers: Rewrite description Documentation: Describe other situations where -z affects git diff rebase-interactive: silence warning when no commits rewritten t3301: add tests to use --format="%N" documentation: clarify direction of core.autocrlf diff: use large integers for diffstat calculations gitk: Display dirty submodules correctly pretty: Initialize notes if %N is used gitk: Fix display of copyright symbol gitk: Add emacs editor variable block gitk: Avoid calling tk_setPalette on Windows gitk: Don't clobber "Remember this view" setting gitk: Add comments to explain encode_view_opts and decode_view_opts gitk: Use consistent font for all text input fields gitk: Set the font for all listbox widgets ... Conflicts: builtin/log.c
This commit is contained in:
@@ -6,6 +6,8 @@ Updates since v1.7.0
|
||||
|
||||
* Eric Raymond is the maintainer of updated CIAbot scripts, in contrib/.
|
||||
|
||||
* gitk updates.
|
||||
|
||||
* Some commands (e.g. svn and http interfaces) that interactively ask
|
||||
for a password can be told to use an external program given via
|
||||
GIT_ASKPASS.
|
||||
@@ -66,6 +68,8 @@ Updates since v1.7.0
|
||||
* "gitweb" installation procedure can use "minified" js/css files
|
||||
better.
|
||||
|
||||
* Various documentation updates.
|
||||
|
||||
Fixes since v1.7.0
|
||||
------------------
|
||||
|
||||
@@ -75,6 +79,9 @@ release, unless otherwise noted.
|
||||
* "git add frotz/nitfol" did not complain when the entire frotz/ directory
|
||||
was ignored.
|
||||
|
||||
* "git diff --stat" used "int" to count the size of differences,
|
||||
which could result in overflowing.
|
||||
|
||||
* "git rev-list --pretty=oneline" didn't terminate a record with LF for
|
||||
commits without any message.
|
||||
|
||||
@@ -84,5 +91,5 @@ release, unless otherwise noted.
|
||||
---
|
||||
exec >/var/tmp/1
|
||||
echo O=$(git describe)
|
||||
O=v1.7.1-rc0-36-gb92cbb6
|
||||
O=v1.7.1-rc1-49-g407a963
|
||||
git shortlog --no-merges ^maint $O..
|
||||
|
||||
@@ -198,11 +198,11 @@ core.quotepath::
|
||||
|
||||
core.autocrlf::
|
||||
If true, makes git convert `CRLF` at the end of lines in text files to
|
||||
`LF` when reading from the filesystem, and convert in reverse when
|
||||
writing to the filesystem. The variable can be set to
|
||||
`LF` when reading from the work tree, and convert in reverse when
|
||||
writing to the work tree. The variable can be set to
|
||||
'input', in which case the conversion happens only while
|
||||
reading from the filesystem but files are written out with
|
||||
`LF` at the end of lines. A file is considered
|
||||
reading from the work tree but files are written out to the work
|
||||
tree with `LF` at the end of lines. A file is considered
|
||||
"text" (i.e. be subjected to the autocrlf mechanism) based on
|
||||
the file's `crlf` attribute, or if `crlf` is unspecified,
|
||||
based on the file's contents. See linkgit:gitattributes[5].
|
||||
|
||||
@@ -94,8 +94,8 @@ Also, when `--raw` or `--numstat` has been given, do not munge
|
||||
pathnames and use NULs as output field terminators.
|
||||
endif::git-log[]
|
||||
ifndef::git-log[]
|
||||
When `--raw` or `--numstat` has been given, do not munge
|
||||
pathnames and use NULs as output field terminators.
|
||||
When `--raw`, `--numstat`, `--name-only` or `--name-status` has been
|
||||
given, do not munge pathnames and use NULs as output field terminators.
|
||||
endif::git-log[]
|
||||
+
|
||||
Without this option, each pathname output will have TAB, LF, double quotes,
|
||||
|
||||
@@ -3,20 +3,69 @@ git-remote-helpers(1)
|
||||
|
||||
NAME
|
||||
----
|
||||
git-remote-helpers - Helper programs for interoperation with remote git
|
||||
git-remote-helpers - Helper programs to interact with remote repositories
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git remote-<transport>' <remote>
|
||||
'git remote-<transport>' <repository> [<URL>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
These programs are normally not used directly by end users, but are
|
||||
invoked by various git programs that interact with remote repositories
|
||||
when the repository they would operate on will be accessed using
|
||||
transport code not linked into the main git binary. Various particular
|
||||
helper programs will behave as documented here.
|
||||
Remote helper programs are normally not used directly by end users,
|
||||
but they are invoked by git when it needs to interact with remote
|
||||
repositories git does not support natively. A given helper will
|
||||
implement a subset of the capabilities documented here. When git
|
||||
needs to interact with a repository using a remote helper, it spawns
|
||||
the helper as an independent process, sends commands to the helper's
|
||||
standard input, and expects results from the helper's standard
|
||||
output. Because a remote helper runs as an independent process from
|
||||
git, there is no need to re-link git to add a new helper, nor any
|
||||
need to link the helper with the implementation of git.
|
||||
|
||||
Every helper must support the "capabilities" command, which git will
|
||||
use to determine what other commands the helper will accept. Other
|
||||
commands generally concern facilities like discovering and updating
|
||||
remote refs, transporting objects between the object database and
|
||||
the remote repository, and updating the local object store.
|
||||
|
||||
Helpers supporting the 'fetch' capability can discover refs from the
|
||||
remote repository and transfer objects reachable from those refs to
|
||||
the local object store. Helpers supporting the 'push' capability can
|
||||
transfer local objects to the remote repository and update remote refs.
|
||||
|
||||
Git comes with a "curl" family of remote helpers, that handle various
|
||||
transport protocols, such as 'git-remote-http', 'git-remote-https',
|
||||
'git-remote-ftp' and 'git-remote-ftps'. They implement the capabilities
|
||||
'fetch', 'option', and 'push'.
|
||||
|
||||
INVOCATION
|
||||
----------
|
||||
|
||||
Remote helper programs are invoked with one or (optionally) two
|
||||
arguments. The first argument specifies a remote repository as in git;
|
||||
it is either the name of a configured remote or a URL. The second
|
||||
argument specifies a URL; it is usually of the form
|
||||
'<transport>://<address>', but any arbitrary string is possible.
|
||||
|
||||
When git encounters a URL of the form '<transport>://<address>', where
|
||||
'<transport>' is a protocol that it cannot handle natively, it
|
||||
automatically invokes 'git remote-<transport>' with the full URL as
|
||||
the second argument. If such a URL is encountered directly on the
|
||||
command line, the first argument is the same as the second, and if it
|
||||
is encountered in a configured remote, the first argument is the name
|
||||
of that remote.
|
||||
|
||||
A URL of the form '<transport>::<address>' explicitly instructs git to
|
||||
invoke 'git remote-<transport>' with '<address>' as the second
|
||||
argument. If such a URL is encountered directly on the command line,
|
||||
the first argument is '<address>', and if it is encountered in a
|
||||
configured remote, the first argument is the name of that remote.
|
||||
|
||||
Additionally, when a configured remote has 'remote.<name>.vcs' set to
|
||||
'<transport>', git explicitly invokes 'git remote-<transport>' with
|
||||
'<name>' as the first argument. If set, the second argument is
|
||||
'remote.<name>.url'; otherwise, the second argument is omitted.
|
||||
|
||||
COMMANDS
|
||||
--------
|
||||
@@ -25,8 +74,8 @@ Commands are given by the caller on the helper's standard input, one per line.
|
||||
|
||||
'capabilities'::
|
||||
Lists the capabilities of the helper, one per line, ending
|
||||
with a blank line. Each capability may be preceded with '*'.
|
||||
This marks them mandatory for git version using the remote
|
||||
with a blank line. Each capability may be preceded with '*',
|
||||
which marks them mandatory for git version using the remote
|
||||
helper to understand (unknown mandatory capability is fatal
|
||||
error).
|
||||
|
||||
@@ -35,27 +84,27 @@ Commands are given by the caller on the helper's standard input, one per line.
|
||||
[<attr> ...]". The value may be a hex sha1 hash, "@<dest>" for
|
||||
a symref, or "?" to indicate that the helper could not get the
|
||||
value of the ref. A space-separated list of attributes follows
|
||||
the name; unrecognized attributes are ignored. After the
|
||||
complete list, outputs a blank line.
|
||||
the name; unrecognized attributes are ignored. The list ends
|
||||
with a blank line.
|
||||
+
|
||||
If 'push' is supported this may be called as 'list for-push'
|
||||
to obtain the current refs prior to sending one or more 'push'
|
||||
commands to the helper.
|
||||
|
||||
'option' <name> <value>::
|
||||
Set the transport helper option <name> to <value>. Outputs a
|
||||
Sets the transport helper option <name> to <value>. Outputs a
|
||||
single line containing one of 'ok' (option successfully set),
|
||||
'unsupported' (option not recognized) or 'error <msg>'
|
||||
(option <name> is supported but <value> is not correct
|
||||
(option <name> is supported but <value> is not valid
|
||||
for it). Options should be set before other commands,
|
||||
and may how those commands behave.
|
||||
and may influence the behavior of those commands.
|
||||
+
|
||||
Supported if the helper has the "option" capability.
|
||||
|
||||
'fetch' <sha1> <name>::
|
||||
Fetches the given object, writing the necessary objects
|
||||
to the database. Fetch commands are sent in a batch, one
|
||||
per line, and the batch is terminated with a blank line.
|
||||
per line, terminated with a blank line.
|
||||
Outputs a single blank line when all fetch commands in the
|
||||
same batch are complete. Only objects which were reported
|
||||
in the ref list with a sha1 may be fetched this way.
|
||||
@@ -67,7 +116,7 @@ suitably updated.
|
||||
Supported if the helper has the "fetch" capability.
|
||||
|
||||
'push' +<src>:<dst>::
|
||||
Pushes the given <src> commit or branch locally to the
|
||||
Pushes the given local <src> commit or branch to the
|
||||
remote branch described by <dst>. A batch sequence of
|
||||
one or more push commands is terminated with a blank line.
|
||||
+
|
||||
@@ -91,6 +140,9 @@ Supported if the helper has the "push" capability.
|
||||
by applying the refspecs from the "refspec" capability to the
|
||||
name of the ref.
|
||||
+
|
||||
Especially useful for interoperability with a foreign versioning
|
||||
system.
|
||||
+
|
||||
Supported if the helper has the "import" capability.
|
||||
|
||||
'connect' <service>::
|
||||
@@ -119,16 +171,11 @@ CAPABILITIES
|
||||
------------
|
||||
|
||||
'fetch'::
|
||||
This helper supports the 'fetch' command.
|
||||
|
||||
'option'::
|
||||
This helper supports the option command.
|
||||
|
||||
'push'::
|
||||
This helper supports the 'push' command.
|
||||
|
||||
'import'::
|
||||
This helper supports the 'import' command.
|
||||
'connect'::
|
||||
This helper supports the corresponding command with the same name.
|
||||
|
||||
'refspec' 'spec'::
|
||||
When using the import command, expect the source ref to have
|
||||
@@ -140,9 +187,6 @@ CAPABILITIES
|
||||
all, it must cover all refs reported by the list command; if
|
||||
it is not used, it is effectively "*:*"
|
||||
|
||||
'connect'::
|
||||
This helper supports the 'connect' command.
|
||||
|
||||
REF LIST ATTRIBUTES
|
||||
-------------------
|
||||
|
||||
@@ -158,19 +202,19 @@ REF LIST ATTRIBUTES
|
||||
OPTIONS
|
||||
-------
|
||||
'option verbosity' <N>::
|
||||
Change the level of messages displayed by the helper.
|
||||
When N is 0 the end-user has asked the process to be
|
||||
quiet, and the helper should produce only error output.
|
||||
N of 1 is the default level of verbosity, higher values
|
||||
Changes the verbosity of messages displayed by the helper.
|
||||
A value of 0 for N means that processes operate
|
||||
quietly, and the helper produces only error output.
|
||||
1 is the default level of verbosity, and higher values
|
||||
of N correspond to the number of -v flags passed on the
|
||||
command line.
|
||||
|
||||
'option progress' \{'true'|'false'\}::
|
||||
Enable (or disable) progress messages displayed by the
|
||||
Enables (or disables) progress messages displayed by the
|
||||
transport helper during a command.
|
||||
|
||||
'option depth' <depth>::
|
||||
Deepen the history of a shallow repository.
|
||||
Deepens the history of a shallow repository.
|
||||
|
||||
'option followtags' \{'true'|'false'\}::
|
||||
If enabled the helper should automatically fetch annotated
|
||||
@@ -186,11 +230,15 @@ OPTIONS
|
||||
helpers this only applies to the 'push', if supported.
|
||||
|
||||
'option servpath <c-style-quoted-path>'::
|
||||
Set service path (--upload-pack, --receive-pack etc.) for
|
||||
next connect. Remote helper MAY support this option. Remote
|
||||
helper MUST NOT rely on this option being set before
|
||||
Sets service path (--upload-pack, --receive-pack etc.) for
|
||||
next connect. Remote helper may support this option, but
|
||||
must not rely on this option being set before
|
||||
connect request occurs.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-remote[1]
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
Documentation by Daniel Barkalow and Ilari Liusvaara
|
||||
|
||||
@@ -1,44 +1,57 @@
|
||||
GIT URLS[[URLS]]
|
||||
----------------
|
||||
|
||||
One of the following notations can be used
|
||||
to name the remote repository:
|
||||
In general, URLs contain information about the transport protocol, the
|
||||
address of the remote server, and the path to the repository.
|
||||
Depending on the transport protocol, some of this information may be
|
||||
absent.
|
||||
|
||||
Git natively supports ssh, git, http, https, ftp, ftps, and rsync
|
||||
protocols. The following syntaxes may be used with them:
|
||||
|
||||
- rsync://host.xz/path/to/repo.git/
|
||||
- http://host.xz{startsb}:port{endsb}/path/to/repo.git/
|
||||
- https://host.xz{startsb}:port{endsb}/path/to/repo.git/
|
||||
- git://host.xz{startsb}:port{endsb}/path/to/repo.git/
|
||||
- git://host.xz{startsb}:port{endsb}/~user/path/to/repo.git/
|
||||
- ssh://{startsb}user@{endsb}host.xz{startsb}:port{endsb}/path/to/repo.git/
|
||||
- ssh://{startsb}user@{endsb}host.xz/path/to/repo.git/
|
||||
- ssh://{startsb}user@{endsb}host.xz/~user/path/to/repo.git/
|
||||
- ssh://{startsb}user@{endsb}host.xz/~/path/to/repo.git
|
||||
- git://host.xz{startsb}:port{endsb}/path/to/repo.git/
|
||||
- http{startsb}s{endsb}://host.xz{startsb}:port{endsb}/path/to/repo.git/
|
||||
- ftp{startsb}s{endsb}://host.xz{startsb}:port{endsb}/path/to/repo.git/
|
||||
- rsync://host.xz/path/to/repo.git/
|
||||
|
||||
SSH is the default transport protocol over the network. You can
|
||||
optionally specify which user to log-in as, and an alternate,
|
||||
scp-like syntax is also supported. Both syntaxes support
|
||||
username expansion, as does the native git protocol, but
|
||||
only the former supports port specification. The following
|
||||
three are identical to the last three above, respectively:
|
||||
An alternative scp-like syntax may also be used with the ssh protocol:
|
||||
|
||||
- {startsb}user@{endsb}host.xz:/path/to/repo.git/
|
||||
- {startsb}user@{endsb}host.xz:~user/path/to/repo.git/
|
||||
- {startsb}user@{endsb}host.xz:path/to/repo.git
|
||||
- {startsb}user@{endsb}host.xz:path/to/repo.git/
|
||||
|
||||
To sync with a local directory, you can use:
|
||||
The ssh and git protocols additionally support ~username expansion:
|
||||
|
||||
- ssh://{startsb}user@{endsb}host.xz{startsb}:port{endsb}/~{startsb}user{endsb}/path/to/repo.git/
|
||||
- git://host.xz{startsb}:port{endsb}/~{startsb}user{endsb}/path/to/repo.git/
|
||||
- {startsb}user@{endsb}host.xz:/~{startsb}user{endsb}/path/to/repo.git/
|
||||
|
||||
For local respositories, also supported by git natively, the following
|
||||
syntaxes may be used:
|
||||
|
||||
- /path/to/repo.git/
|
||||
- file:///path/to/repo.git/
|
||||
|
||||
ifndef::git-clone[]
|
||||
They are mostly equivalent, except when cloning. See
|
||||
linkgit:git-clone[1] for details.
|
||||
These two syntaxes are mostly equivalent, except when cloning, when
|
||||
the former implies --local option. See linkgit:git-clone[1] for
|
||||
details.
|
||||
endif::git-clone[]
|
||||
|
||||
ifdef::git-clone[]
|
||||
They are equivalent, except the former implies --local option.
|
||||
These two syntaxes are mostly equivalent, except the former implies
|
||||
--local option.
|
||||
endif::git-clone[]
|
||||
|
||||
When git doesn't know how to handle a certain transport protocol, it
|
||||
attempts to use the 'remote-<transport>' remote helper, if one
|
||||
exists. To explicitly request a remote helper, the following syntax
|
||||
may be used:
|
||||
|
||||
- <transport>::<address>
|
||||
|
||||
where <address> may be a path, a server and path, or an arbitrary
|
||||
URL-like string recognized by the specific remote helper being
|
||||
invoked. See linkgit:git-remote-helpers[1] for details.
|
||||
|
||||
If there are a large number of similarly-named remote repositories and
|
||||
you want to use a different format for them (such that the URLs you
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
GVF=GIT-VERSION-FILE
|
||||
DEF_VER=v1.7.1.rc1.GIT
|
||||
DEF_VER=v1.7.1.rc2
|
||||
|
||||
LF='
|
||||
'
|
||||
|
||||
@@ -54,6 +54,7 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
|
||||
{
|
||||
int i;
|
||||
int decoration_given = 0;
|
||||
struct userformat_want w;
|
||||
|
||||
rev->abbrev = DEFAULT_ABBREV;
|
||||
rev->commit_format = CMIT_FMT_DEFAULT;
|
||||
@@ -76,7 +77,10 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
|
||||
usage(builtin_log_usage);
|
||||
argc = setup_revisions(argc, argv, rev, opt);
|
||||
|
||||
if (!rev->show_notes_given && !rev->pretty_given)
|
||||
memset(&w, 0, sizeof(w));
|
||||
userformat_find_requirements(NULL, &w);
|
||||
|
||||
if (!rev->show_notes_given && (!rev->pretty_given || w.notes))
|
||||
rev->show_notes = 1;
|
||||
if (rev->show_notes)
|
||||
init_display_notes(&rev->notes_opt);
|
||||
|
||||
5
commit.h
5
commit.h
@@ -74,11 +74,16 @@ struct pretty_print_context
|
||||
struct reflog_walk_info *reflog_info;
|
||||
};
|
||||
|
||||
struct userformat_want {
|
||||
unsigned notes:1;
|
||||
};
|
||||
|
||||
extern int has_non_ascii(const char *text);
|
||||
struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */
|
||||
extern char *reencode_commit_message(const struct commit *commit,
|
||||
const char **encoding_p);
|
||||
extern void get_commit_format(const char *arg, struct rev_info *);
|
||||
extern void userformat_find_requirements(const char *fmt, struct userformat_want *w);
|
||||
extern void format_commit_message(const struct commit *commit,
|
||||
const char *format, struct strbuf *sb,
|
||||
const struct pretty_print_context *context);
|
||||
|
||||
21
diff.c
21
diff.c
@@ -936,7 +936,7 @@ struct diffstat_t {
|
||||
unsigned is_unmerged:1;
|
||||
unsigned is_binary:1;
|
||||
unsigned is_renamed:1;
|
||||
unsigned int added, deleted;
|
||||
uintmax_t added, deleted;
|
||||
} **files;
|
||||
};
|
||||
|
||||
@@ -1028,7 +1028,7 @@ static void fill_print_name(struct diffstat_file *file)
|
||||
static void show_stats(struct diffstat_t *data, struct diff_options *options)
|
||||
{
|
||||
int i, len, add, del, adds = 0, dels = 0;
|
||||
int max_change = 0, max_len = 0;
|
||||
uintmax_t max_change = 0, max_len = 0;
|
||||
int total_files = data->nr;
|
||||
int width, name_width;
|
||||
const char *reset, *set, *add_c, *del_c;
|
||||
@@ -1057,7 +1057,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
|
||||
|
||||
for (i = 0; i < data->nr; i++) {
|
||||
struct diffstat_file *file = data->files[i];
|
||||
int change = file->added + file->deleted;
|
||||
uintmax_t change = file->added + file->deleted;
|
||||
fill_print_name(file);
|
||||
len = strlen(file->print_name);
|
||||
if (max_len < len)
|
||||
@@ -1085,8 +1085,8 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
|
||||
for (i = 0; i < data->nr; i++) {
|
||||
const char *prefix = "";
|
||||
char *name = data->files[i]->print_name;
|
||||
int added = data->files[i]->added;
|
||||
int deleted = data->files[i]->deleted;
|
||||
uintmax_t added = data->files[i]->added;
|
||||
uintmax_t deleted = data->files[i]->deleted;
|
||||
int name_len;
|
||||
|
||||
/*
|
||||
@@ -1107,9 +1107,11 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
|
||||
if (data->files[i]->is_binary) {
|
||||
show_name(options->file, prefix, name, len);
|
||||
fprintf(options->file, " Bin ");
|
||||
fprintf(options->file, "%s%d%s", del_c, deleted, reset);
|
||||
fprintf(options->file, "%s%"PRIuMAX"%s",
|
||||
del_c, deleted, reset);
|
||||
fprintf(options->file, " -> ");
|
||||
fprintf(options->file, "%s%d%s", add_c, added, reset);
|
||||
fprintf(options->file, "%s%"PRIuMAX"%s",
|
||||
add_c, added, reset);
|
||||
fprintf(options->file, " bytes");
|
||||
fprintf(options->file, "\n");
|
||||
continue;
|
||||
@@ -1138,7 +1140,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
|
||||
del = scale_linear(del, width, max_change);
|
||||
}
|
||||
show_name(options->file, prefix, name, len);
|
||||
fprintf(options->file, "%5d%s", added + deleted,
|
||||
fprintf(options->file, "%5"PRIuMAX"%s", added + deleted,
|
||||
added + deleted ? " " : "");
|
||||
show_graph(options->file, '+', add, add_c, reset);
|
||||
show_graph(options->file, '-', del, del_c, reset);
|
||||
@@ -1188,7 +1190,8 @@ static void show_numstat(struct diffstat_t *data, struct diff_options *options)
|
||||
fprintf(options->file, "-\t-\t");
|
||||
else
|
||||
fprintf(options->file,
|
||||
"%d\t%d\t", file->added, file->deleted);
|
||||
"%"PRIuMAX"\t%"PRIuMAX"\t",
|
||||
file->added, file->deleted);
|
||||
if (options->line_termination) {
|
||||
fill_print_name(file);
|
||||
if (!file->is_renamed)
|
||||
|
||||
@@ -565,6 +565,7 @@ do_next () {
|
||||
git diff-tree --stat $(cat "$DOTEST"/head)..HEAD
|
||||
} &&
|
||||
{
|
||||
test -s "$REWRITTEN_LIST" &&
|
||||
git notes copy --for-rewrite=rebase < "$REWRITTEN_LIST" ||
|
||||
true # we don't care if this copying failed
|
||||
} &&
|
||||
|
||||
@@ -1877,8 +1877,11 @@ proc setoptions {} {
|
||||
option add *Menubutton.font uifont startupFile
|
||||
option add *Label.font uifont startupFile
|
||||
option add *Message.font uifont startupFile
|
||||
option add *Entry.font uifont startupFile
|
||||
option add *Entry.font textfont startupFile
|
||||
option add *Text.font textfont startupFile
|
||||
option add *Labelframe.font uifont startupFile
|
||||
option add *Spinbox.font textfont startupFile
|
||||
option add *Listbox.font mainfont startupFile
|
||||
}
|
||||
|
||||
# Make a menu and submenus.
|
||||
@@ -2174,7 +2177,7 @@ proc makewindow {} {
|
||||
set findstring {}
|
||||
set fstring .tf.lbar.findstring
|
||||
lappend entries $fstring
|
||||
${NS}::entry $fstring -width 30 -font textfont -textvariable findstring
|
||||
${NS}::entry $fstring -width 30 -textvariable findstring
|
||||
trace add variable findstring write find_change
|
||||
set findtype [mc "Exact"]
|
||||
set findtypemenu [makedroplist .tf.lbar.findtype \
|
||||
@@ -2217,7 +2220,7 @@ proc makewindow {} {
|
||||
pack .bleft.top.search -side left -padx 5
|
||||
set sstring .bleft.top.sstring
|
||||
set searchstring ""
|
||||
${NS}::entry $sstring -width 20 -font textfont -textvariable searchstring
|
||||
${NS}::entry $sstring -width 20 -textvariable searchstring
|
||||
lappend entries $sstring
|
||||
trace add variable searchstring write incrsearch
|
||||
pack $sstring -side left -expand 1 -fill x
|
||||
@@ -2229,7 +2232,7 @@ proc makewindow {} {
|
||||
-command changediffdisp -variable diffelide -value {1 0}
|
||||
${NS}::label .bleft.mid.labeldiffcontext -text " [mc "Lines of context"]: "
|
||||
pack .bleft.mid.diff .bleft.mid.old .bleft.mid.new -side left
|
||||
spinbox .bleft.mid.diffcontext -width 5 -font textfont \
|
||||
spinbox .bleft.mid.diffcontext -width 5 \
|
||||
-from 0 -increment 1 -to 10000000 \
|
||||
-validate all -validatecommand "diffcontextvalidate %P" \
|
||||
-textvariable diffcontextstring
|
||||
@@ -2383,6 +2386,8 @@ proc makewindow {} {
|
||||
}
|
||||
bindall <$::BM> "canvscan mark %W %x %y"
|
||||
bindall <B$::BM-Motion> "canvscan dragto %W %x %y"
|
||||
bind all <$M1B-Key-w> {destroy [winfo toplevel %W]}
|
||||
bind . <$M1B-Key-w> doquit
|
||||
bindkey <Home> selfirstline
|
||||
bindkey <End> sellastline
|
||||
bind . <Key-Up> "selnextline -1"
|
||||
@@ -2782,7 +2787,7 @@ proc about {} {
|
||||
message $w.m -text [mc "
|
||||
Gitk - a commit viewer for git
|
||||
|
||||
Copyright © 2005-2009 Paul Mackerras
|
||||
Copyright \u00a9 2005-2010 Paul Mackerras
|
||||
|
||||
Use and redistribute under the terms of the GNU General Public License"] \
|
||||
-justify center -aspect 400 -border 2 -bg white -relief groove
|
||||
@@ -2814,6 +2819,7 @@ proc keys {} {
|
||||
[mc "Gitk key bindings:"]
|
||||
|
||||
[mc "<%s-Q> Quit" $M1T]
|
||||
[mc "<%s-W> Close window" $M1T]
|
||||
[mc "<Home> Move to first commit"]
|
||||
[mc "<End> Move to last commit"]
|
||||
[mc "<Up>, p, i Move up one commit"]
|
||||
@@ -3805,10 +3811,10 @@ proc newview {ishighlight} {
|
||||
raise $top
|
||||
return
|
||||
}
|
||||
decode_view_opts $nextviewnum $revtreeargs
|
||||
set newviewname($nextviewnum) "[mc "View"] $nextviewnum"
|
||||
set newviewopts($nextviewnum,perm) 0
|
||||
set newviewopts($nextviewnum,cmd) $viewargscmd($curview)
|
||||
decode_view_opts $nextviewnum $revtreeargs
|
||||
vieweditor $top $nextviewnum [mc "Gitk view definition"]
|
||||
}
|
||||
|
||||
@@ -3845,6 +3851,7 @@ set known_view_options {
|
||||
{cmd t50= + {} {mc "Command to generate more commits to include:"}}
|
||||
}
|
||||
|
||||
# Convert $newviewopts($n, ...) into args for git log.
|
||||
proc encode_view_opts {n} {
|
||||
global known_view_options newviewopts
|
||||
|
||||
@@ -3878,6 +3885,7 @@ proc encode_view_opts {n} {
|
||||
return [concat $rargs [shellsplit $newviewopts($n,args)]]
|
||||
}
|
||||
|
||||
# Fill $newviewopts($n, ...) based on args for git log.
|
||||
proc decode_view_opts {n view_args} {
|
||||
global known_view_options newviewopts
|
||||
|
||||
@@ -3960,10 +3968,10 @@ proc editview {} {
|
||||
raise $top
|
||||
return
|
||||
}
|
||||
decode_view_opts $curview $viewargs($curview)
|
||||
set newviewname($curview) $viewname($curview)
|
||||
set newviewopts($curview,perm) $viewperm($curview)
|
||||
set newviewopts($curview,cmd) $viewargscmd($curview)
|
||||
decode_view_opts $curview $viewargs($curview)
|
||||
vieweditor $top $curview "[mc "Gitk: edit view"] $viewname($curview)"
|
||||
}
|
||||
|
||||
@@ -4037,7 +4045,7 @@ proc vieweditor {top n title} {
|
||||
} elseif {$type eq "path"} {
|
||||
${NS}::label $top.l -text $title
|
||||
pack $top.l -in $top -side top -pady [list 3 0] -anchor w -padx 3
|
||||
text $top.t -width 40 -height 5 -background $bgcolor -font uifont
|
||||
text $top.t -width 40 -height 5 -background $bgcolor
|
||||
if {[info exists viewfiles($n)]} {
|
||||
foreach f $viewfiles($n) {
|
||||
$top.t insert end $f
|
||||
@@ -7501,7 +7509,7 @@ proc getblobdiffs {ids} {
|
||||
global ignorespace
|
||||
global limitdiffs vfilelimit curview
|
||||
global diffencoding targetline diffnparents
|
||||
global git_version
|
||||
global git_version currdiffsubmod
|
||||
|
||||
set textconv {}
|
||||
if {[package vcompare $git_version "1.6.1"] >= 0} {
|
||||
@@ -7528,6 +7536,7 @@ proc getblobdiffs {ids} {
|
||||
set diffencoding [get_path_encoding {}]
|
||||
fconfigure $bdf -blocking 0 -encoding binary -eofchar {}
|
||||
set blobdifffd($ids) $bdf
|
||||
set currdiffsubmod ""
|
||||
filerun $bdf [list getblobdiffline $bdf $diffids]
|
||||
}
|
||||
|
||||
@@ -7598,7 +7607,7 @@ proc getblobdiffline {bdf ids} {
|
||||
global diffnexthead diffnextnote difffilestart
|
||||
global ctext_file_names ctext_file_lines
|
||||
global diffinhdr treediffs mergemax diffnparents
|
||||
global diffencoding jump_to_here targetline diffline
|
||||
global diffencoding jump_to_here targetline diffline currdiffsubmod
|
||||
|
||||
set nr 0
|
||||
$ctext conf -state normal
|
||||
@@ -7679,19 +7688,30 @@ proc getblobdiffline {bdf ids} {
|
||||
|
||||
} elseif {![string compare -length 10 "Submodule " $line]} {
|
||||
# start of a new submodule
|
||||
if {[string compare [$ctext get "end - 4c" end] "\n \n\n"]} {
|
||||
if {[regexp -indices "\[0-9a-f\]+\\.\\." $line nameend]} {
|
||||
set fname [string range $line 10 [expr [lindex $nameend 0] - 2]]
|
||||
} else {
|
||||
set fname [string range $line 10 [expr [string first "contains " $line] - 2]]
|
||||
}
|
||||
if {$currdiffsubmod != $fname} {
|
||||
$ctext insert end "\n"; # Add newline after commit message
|
||||
}
|
||||
set curdiffstart [$ctext index "end - 1c"]
|
||||
lappend ctext_file_names ""
|
||||
set fname [string range $line 10 [expr [string last " " $line] - 1]]
|
||||
lappend ctext_file_lines $fname
|
||||
makediffhdr $fname $ids
|
||||
$ctext insert end "\n$line\n" filesep
|
||||
if {$currdiffsubmod != $fname} {
|
||||
lappend ctext_file_lines $fname
|
||||
makediffhdr $fname $ids
|
||||
set currdiffsubmod $fname
|
||||
$ctext insert end "\n$line\n" filesep
|
||||
} else {
|
||||
$ctext insert end "$line\n" filesep
|
||||
}
|
||||
} elseif {![string compare -length 3 " >" $line]} {
|
||||
set $currdiffsubmod ""
|
||||
set line [encoding convertfrom $diffencoding $line]
|
||||
$ctext insert end "$line\n" dresult
|
||||
} elseif {![string compare -length 3 " <" $line]} {
|
||||
set $currdiffsubmod ""
|
||||
set line [encoding convertfrom $diffencoding $line]
|
||||
$ctext insert end "$line\n" d0
|
||||
} elseif {$diffinhdr} {
|
||||
@@ -8527,7 +8547,7 @@ proc do_cmp_commits {a b} {
|
||||
}
|
||||
|
||||
proc diffcommits {a b} {
|
||||
global diffcontext diffids blobdifffd diffinhdr
|
||||
global diffcontext diffids blobdifffd diffinhdr currdiffsubmod
|
||||
|
||||
set tmpdir [gitknewtmpdir]
|
||||
set fna [file join $tmpdir "commit-[string range $a 0 7]"]
|
||||
@@ -8548,6 +8568,7 @@ proc diffcommits {a b} {
|
||||
set diffids [list commits $a $b]
|
||||
set blobdifffd($diffids) $fd
|
||||
set diffinhdr 0
|
||||
set currdiffsubmod ""
|
||||
filerun $fd [list getblobdiffline $fd $diffids]
|
||||
}
|
||||
|
||||
@@ -10528,7 +10549,6 @@ proc mkfontdisp {font top which} {
|
||||
set fontpref($font) [set $font]
|
||||
${NS}::button $top.${font}but -text $which \
|
||||
-command [list choosefont $font $which]
|
||||
if {!$use_ttk} {$top.${font}but configure -font optionfont}
|
||||
${NS}::label $top.$font -relief flat -font $font \
|
||||
-text $fontattr($font,family) -justify left
|
||||
grid x $top.${font}but $top.$font -sticky w
|
||||
@@ -10791,15 +10811,6 @@ proc doprefs {} {
|
||||
mkfontdisp textfont $top [mc "Diff display font"]
|
||||
mkfontdisp uifont $top [mc "User interface font"]
|
||||
|
||||
if {!$use_ttk} {
|
||||
foreach w {maxpctl maxwidthl showlocal autoselect tabstopl ntag
|
||||
ldiff lattr extdifff.l extdifff.b bgbut fgbut
|
||||
diffoldbut diffnewbut hunksepbut markbgbut selbgbut
|
||||
want_ttk ttk_note} {
|
||||
$top.$w configure -font optionfont
|
||||
}
|
||||
}
|
||||
|
||||
${NS}::frame $top.buts
|
||||
${NS}::button $top.buts.ok -text [mc "OK"] -command prefsok -default active
|
||||
${NS}::button $top.buts.can -text [mc "Cancel"] -command prefscan -default normal
|
||||
@@ -10849,6 +10860,7 @@ proc setselbg {c} {
|
||||
# radiobuttons look bad. This chooses white for selectColor if the
|
||||
# background color is light, or black if it is dark.
|
||||
proc setui {c} {
|
||||
if {[tk windowingsystem] eq "win32"} { return }
|
||||
set bg [winfo rgb . $c]
|
||||
set selc black
|
||||
if {[lindex $bg 0] + 1.5 * [lindex $bg 1] + 0.5 * [lindex $bg 2] > 100000} {
|
||||
@@ -11411,8 +11423,6 @@ namespace import ::msgcat::mc
|
||||
|
||||
catch {source ~/.gitk}
|
||||
|
||||
font create optionfont -family sans-serif -size -12
|
||||
|
||||
parsefont mainfont $mainfont
|
||||
eval font create mainfont [fontflags mainfont]
|
||||
eval font create mainfontbold [fontflags mainfont 1]
|
||||
@@ -11613,3 +11623,9 @@ if {[tk windowingsystem] eq "win32"} {
|
||||
}
|
||||
|
||||
getcommits {}
|
||||
|
||||
# Local variables:
|
||||
# mode: tcl
|
||||
# indent-tabs-mode: t
|
||||
# tab-width: 8
|
||||
# End:
|
||||
|
||||
@@ -334,14 +334,14 @@ msgid ""
|
||||
"\n"
|
||||
"Gitk - a commit viewer for git\n"
|
||||
"\n"
|
||||
"Copyright ©9 2005-2009 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Use and redistribute under the terms of the GNU General Public License"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gitk - eine Visualisierung der Git-Historie\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2009 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public License"
|
||||
|
||||
|
||||
@@ -281,14 +281,14 @@ msgid ""
|
||||
"\n"
|
||||
"Gitk - a commit viewer for git\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2008 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Use and redistribute under the terms of the GNU General Public License"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gitk - un visualizador de revisiones para git\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2008 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Uso y redistribución permitidos según los términos de la Licencia Pública "
|
||||
"General de GNU (GNU GPL)"
|
||||
|
||||
@@ -334,14 +334,14 @@ msgid ""
|
||||
"\n"
|
||||
"Gitk - a commit viewer for git\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2008 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Use and redistribute under the terms of the GNU General Public License"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gitk - visualisateur de commit pour git\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2008 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Utilisation et redistribution soumises aux termes de la GNU General Public "
|
||||
"License"
|
||||
|
||||
@@ -333,14 +333,14 @@ msgid ""
|
||||
"\n"
|
||||
"Gitk - a commit viewer for git\n"
|
||||
"\n"
|
||||
"Copyright ©9 2005-2009 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Use and redistribute under the terms of the GNU General Public License"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gitk - commit nézegető a githez\n"
|
||||
"\n"
|
||||
"Szerzői jog ©9 2005-2009 Paul Mackerras\n"
|
||||
"Szerzői jog \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Használd és terjeszd a GNU General Public License feltételei mellett"
|
||||
|
||||
|
||||
@@ -334,14 +334,14 @@ msgid ""
|
||||
"\n"
|
||||
"Gitk - a commit viewer for git\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2009 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Use and redistribute under the terms of the GNU General Public License"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gitk - un visualizzatore di revisioni per git\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2009 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Utilizzo e redistribuzione permessi sotto i termini della GNU General Public "
|
||||
"License"
|
||||
|
||||
@@ -335,14 +335,14 @@ msgid ""
|
||||
"\n"
|
||||
"Gitk - a commit viewer for git\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2008 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Use and redistribute under the terms of the GNU General Public License"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gitk - gitコミットビューア\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2008 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"使用および再配布は GNU General Public License に従ってください"
|
||||
|
||||
|
||||
@@ -313,14 +313,14 @@ msgid ""
|
||||
"\n"
|
||||
"Gitk - a commit viewer for git\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2008 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Use and redistribute under the terms of the GNU General Public License"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gitk - программа просмотра истории репозиториев Git\n"
|
||||
"\n"
|
||||
"Copyright (c) 2005-2008 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Использование и распространение согласно условиям GNU General Public License"
|
||||
|
||||
|
||||
@@ -334,14 +334,14 @@ msgid ""
|
||||
"\n"
|
||||
"Gitk - a commit viewer for git\n"
|
||||
"\n"
|
||||
"Copyright ©9 2005-2009 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Use and redistribute under the terms of the GNU General Public License"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gitk - en incheckningsvisare för git\n"
|
||||
"\n"
|
||||
"Copyright © 2005-2009 Paul Mackerras\n"
|
||||
"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
|
||||
"\n"
|
||||
"Använd och vidareförmedla enligt villkoren i GNU General Public License"
|
||||
|
||||
|
||||
40
pretty.c
40
pretty.c
@@ -775,10 +775,13 @@ static size_t format_commit_one(struct strbuf *sb, const char *placeholder,
|
||||
}
|
||||
return 0; /* unknown %g placeholder */
|
||||
case 'N':
|
||||
format_display_notes(commit->object.sha1, sb,
|
||||
git_log_output_encoding ? git_log_output_encoding
|
||||
: git_commit_encoding, 0);
|
||||
return 1;
|
||||
if (c->pretty_ctx->show_notes) {
|
||||
format_display_notes(commit->object.sha1, sb,
|
||||
git_log_output_encoding ? git_log_output_encoding
|
||||
: git_commit_encoding, 0);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* For the rest we have to parse the commit header. */
|
||||
@@ -859,6 +862,35 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder,
|
||||
return consumed + 1;
|
||||
}
|
||||
|
||||
static size_t userformat_want_item(struct strbuf *sb, const char *placeholder,
|
||||
void *context)
|
||||
{
|
||||
struct userformat_want *w = context;
|
||||
|
||||
if (*placeholder == '+' || *placeholder == '-')
|
||||
placeholder++;
|
||||
|
||||
switch (*placeholder) {
|
||||
case 'N':
|
||||
w->notes = 1;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void userformat_find_requirements(const char *fmt, struct userformat_want *w)
|
||||
{
|
||||
struct strbuf dummy = STRBUF_INIT;
|
||||
|
||||
if (!fmt) {
|
||||
if (!user_format)
|
||||
return;
|
||||
fmt = user_format;
|
||||
}
|
||||
strbuf_expand(&dummy, user_format, userformat_want_item, w);
|
||||
strbuf_release(&dummy);
|
||||
}
|
||||
|
||||
void format_commit_message(const struct commit *commit,
|
||||
const char *format, struct strbuf *sb,
|
||||
const struct pretty_print_context *pretty_ctx)
|
||||
|
||||
@@ -55,6 +55,15 @@ test_expect_success 'handle empty notes gracefully' '
|
||||
git notes show ; test 1 = $?
|
||||
'
|
||||
|
||||
test_expect_success 'show non-existent notes entry with %N' '
|
||||
for l in A B
|
||||
do
|
||||
echo "$l"
|
||||
done >expect &&
|
||||
git show -s --format='A%n%NB' >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
test_expect_success 'create notes' '
|
||||
git config core.notesRef refs/notes/commits &&
|
||||
MSG=b4 git notes add &&
|
||||
@@ -65,6 +74,15 @@ test_expect_success 'create notes' '
|
||||
test_must_fail git notes show HEAD^
|
||||
'
|
||||
|
||||
test_expect_success 'show notes entry with %N' '
|
||||
for l in A b4 B
|
||||
do
|
||||
echo "$l"
|
||||
done >expect &&
|
||||
git show -s --format='A%n%NB' >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect <<EOF
|
||||
d423f8c refs/notes/commits@{0}: notes: Notes added by 'git notes add'
|
||||
EOF
|
||||
|
||||
Reference in New Issue
Block a user