summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/RelNotes/1.7.5.3.txt32
-rw-r--r--Documentation/RelNotes/1.7.5.4.txt21
-rw-r--r--Documentation/RelNotes/1.7.6.txt95
-rw-r--r--Documentation/blame-options.txt5
-rw-r--r--Documentation/config.txt5
-rw-r--r--Documentation/diff-options.txt12
-rw-r--r--Documentation/git-blame.txt13
-rw-r--r--Documentation/git-clone.txt3
-rw-r--r--Documentation/git-config.txt22
-rw-r--r--Documentation/git-cvsserver.txt2
-rw-r--r--Documentation/git-diff-index.txt4
-rw-r--r--Documentation/git-diff-tree.txt4
-rw-r--r--Documentation/git-grep.txt8
-rw-r--r--Documentation/git-init-db.txt2
-rw-r--r--Documentation/git-init.txt3
-rw-r--r--Documentation/git-instaweb.txt8
-rw-r--r--Documentation/git-ls-remote.txt8
-rw-r--r--Documentation/git-notes.txt16
-rw-r--r--Documentation/git-read-tree.txt5
-rw-r--r--Documentation/git-remote-helpers.txt6
-rw-r--r--Documentation/git-rev-list.txt1
-rw-r--r--Documentation/git-sh-i18n--envsubst.txt36
-rw-r--r--Documentation/git-sh-i18n.txt42
-rw-r--r--Documentation/git-sh-setup.txt11
-rw-r--r--Documentation/git-status.txt40
-rw-r--r--Documentation/git.txt9
-rw-r--r--Documentation/gitattributes.txt31
-rw-r--r--Documentation/glossary-content.txt34
-rw-r--r--Documentation/pretty-options.txt5
-rw-r--r--Documentation/rev-list-options.txt4
-rw-r--r--Documentation/technical/api-diff.txt4
31 files changed, 397 insertions, 94 deletions
diff --git a/Documentation/RelNotes/1.7.5.3.txt b/Documentation/RelNotes/1.7.5.3.txt
new file mode 100644
index 0000000000..9c03353af2
--- /dev/null
+++ b/Documentation/RelNotes/1.7.5.3.txt
@@ -0,0 +1,32 @@
+Git v1.7.5.3 Release Notes
+==========================
+
+Fixes since v1.7.5.2
+--------------------
+
+ * The bash completion scripts should correctly work using zsh's bash
+ completion emulation layer now.
+
+ * Setting $(prefix) in config.mak did not affect where etc/gitconfig
+ file is read from, even though passing it from the command line of
+ $(MAKE) did.
+
+ * The logic to handle "&" (expand to UNIX username) in GECOS field
+ miscounted the length of the name it formatted.
+
+ * "git cherry-pick -s resolve" failed to cherry-pick a root commit.
+
+ * "git diff --word-diff" misbehaved when diff.suppress-blank-empty was
+ in effect.
+
+ * "git log --stdin path" with an input that has additional pathspec
+ used to corrupt memory.
+
+ * "git send-pack" (hence "git push") over smalt-HTTP protocol could
+ deadlock when the client side pack-object died early.
+
+ * Compressed tarball gitweb generates used to be made with the timestamp
+ of the tarball generation; this was bad because snapshot from the same
+ tree should result in a same tarball.
+
+And other minor fixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.5.4.txt b/Documentation/RelNotes/1.7.5.4.txt
new file mode 100644
index 0000000000..cf3f455ced
--- /dev/null
+++ b/Documentation/RelNotes/1.7.5.4.txt
@@ -0,0 +1,21 @@
+Git v1.7.5.4 Release Notes
+==========================
+
+Fixes since v1.7.5.3
+--------------------
+
+ * The single-key mode of "git add -p" was easily fooled into thinking
+ that it was told to add everthing ('a') when up-arrow was pressed by
+ mistake.
+
+ * Setting a git command that uses custom configuration via "-c var=val"
+ as an alias caused a crash due to a realloc(3) failure.
+
+ * "git diff -C -C" used to disable the rename detection entirely when
+ there are too many copy candidate paths in the tree; now it falls
+ back to "-C" when doing so would keep the copy candidate paths
+ under the rename detection limit.
+
+ * "git rerere" did not diagnose a corrupt MERGE_RR file in some cases.
+
+And other minor fixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.6.txt b/Documentation/RelNotes/1.7.6.txt
index f5faf280c5..9ec498ea39 100644
--- a/Documentation/RelNotes/1.7.6.txt
+++ b/Documentation/RelNotes/1.7.6.txt
@@ -1,4 +1,4 @@
-Git v1.7.6 Release Notes (draft)
+Git v1.7.6 Release Notes
========================
Updates since v1.7.5
@@ -6,7 +6,8 @@ Updates since v1.7.5
* Various git-svn updates.
- * Updates the way content tags are handled in gitweb.
+ * Updates the way content tags are handled in gitweb. Also adds
+ a UI to choose common timezone for displaying the dates.
* Similar to branch names, tagnames that begin with "-" are now
disallowed.
@@ -14,24 +15,44 @@ Updates since v1.7.5
* Clean-up of the C part of i18n (but not l10n---please wait)
continues.
+ * The scripting part of the codebase is getting prepared for i18n/l10n.
+
+ * Pushing and pulling from a repository with large number of refs that
+ point to identical commits are optimized by not listing the same commit
+ during the common ancestor negotiation exchange with the other side.
+
+ * Adding a file larger than core.bigfilethreshold (defaults to 1/2 Gig)
+ using "git add" will send the contents straight to a packfile without
+ having to hold it and its compressed representation both at the same
+ time in memory.
+
* Processes spawned by "[alias] <name> = !process" in the configuration
can inspect GIT_PREFIX environment variable to learn where in the
working tree the original command was invoked.
+ * A magic pathspec ":/" tells a command that limits its operation to
+ the current directory when ran from a subdirectory to work on the
+ entire working tree. In general, ":/path/to/file" would be relative
+ to the root of the working tree hierarchy.
+
+ After "git reset --hard; edit Makefile; cd t/", "git add -u" would
+ be a no-op, but "git add -u :/" would add the updated contents of
+ the Makefile at the top level. If you want to name a path in the
+ current subdirectory whose unusual name begins with ":/", you can
+ name it by "./:/that/path" or by "\:/that/path".
+
* "git blame" learned "--abbrev[=<n>]" option to control the minimum
number of hexdigits shown for commit object names.
+ * "git blame" learned "--line-porcelain" that is less efficient but is
+ easier to parse.
+
* Aborting "git commit --interactive" discards updates to the index
- made during the interctive session.
+ made during the interactive session.
* "git commit" learned a "--patch" option to directly jump to the
per-hunk selection UI of the interactive mode.
- * "git diff -C -C" used to disable the rename detection entirely when
- there are too many copy candidate paths in the tree; now it falls
- back to "-C" when doing so would keep the copy candidate paths
- under the rename detection limit.
-
* "git diff" and its family of commands learned --dirstat=0 to show
directories that contribute less than 0.1% of changes.
@@ -46,10 +67,20 @@ Updates since v1.7.5
characters in it, e.g. "Junio C. Hamano" <jch@example.com>. Earlier
it was up to the user to do this when using its output.
+ * "git format-patch" can take an empty --subject-prefix now.
+
+ * "git grep" learned the "-P" option to take pcre regular expressions.
+
* "git log" and friends learned a new "--notes" option to replace the
"--show-notes" option. Unlike "--show-notes", "--notes=<ref>" does
not imply showing the default notes.
+ * They also learned a log.abbrevCommit configuration variable to augment
+ the --abbrev-commit command line option.
+
+ * "git ls-remote" learned "--exit-code" option to consider it a
+ different kind of error when no remote ref to be shown.
+
* "git merge" learned "-" as a short-hand for "the previous branch", just
like the way "git checkout -" works.
@@ -61,9 +92,20 @@ Updates since v1.7.5
* p4-import (from contrib) learned a new option --preserve-user.
+ * "git read-tree -m" learned "--dry-run" option that reports if a merge
+ would fail without touching the index nor the working tree.
+
* "git rebase" that does not specify on top of which branch to rebase
the current branch now uses @{upstream} of the current branch.
+ * "git rebase" finished either normally or with --abort did not
+ update the reflog for HEAD to record the event to come back to
+ where it started from.
+
+ * "git remote add -t only-this-branch --mirror=fetch" is now allowed. Earlier
+ a fetch-mode mirror meant mirror everything, but now it only means refs are
+ not renamed.
+
* "git rev-list --count" used with "--cherry-mark" counts the cherry-picked
commits separately, producing more a useful output.
@@ -74,10 +116,6 @@ Updates since v1.7.5
still in a conflicted state during a merge, to avoid using information
that is not final and possibly corrupt with conflict markers.
- * Compressed tarball gitweb generates is made without the timestamp of
- the tarball generation; snapshot from the same tree should result in
- a same tarball.
-
Also contains various documentation updates and minor miscellaneous
changes.
@@ -88,36 +126,11 @@ Fixes since v1.7.5
Unless otherwise noted, all the fixes in 1.7.5.X maintenance track are
included in this release.
- * Setting $(prefix) in config.mak did not affect where etc/gitconfig
- file is read from, even though passing it from the command line of
- $(MAKE) did.
- (merge kk/maint-prefix-in-config-mak later)
-
- * The bash completion scripts should correctly work using zsh's bash
- completion emulation layer now.
- (merge fc/completion-zsh later)
-
- * The logic to handle "&" (expand to UNIX username) in GECOS field
- miscounted the length of the name it formatted.
- (merge rg/copy-gecos-username later)
-
- * "git cherry-pick -s resolve" failed to cherry-pick a root commit.
- (merge jk/cherry-pick-root-with-resolve later)
-
* "git config" used to choke with an insanely long line.
(merge ef/maint-strbuf-init later)
- * "git log --stdin path" with an input that has additional pathspec
- used to corrupt memory.
- (merge jc/maint-pathspec-stdin-and-cmdline later)
-
- * "git send-pack" (hence "git push") over smalt-HTTP protocol could
- deadlock when the client side pack-object died early.
- (merge js/maint-send-pack-stateless-rpc-deadlock-fix later)
- (merge jk/git-connection-deadlock-fix later)
+ * "git diff --quiet" did not work well with --diff-filter.
+ (merge jk/diff-not-so-quick later)
----
-exec >/var/tmp/1
-echo O=$(git describe master)
-O=v1.7.5.1-339-g254fd97
-git shortlog --no-merges ^maint ^$O master
+ * "git status -z" did not default to --porcelain output format.
+ (merge bc/maint-status-z-to-use-porcelain later)
diff --git a/Documentation/blame-options.txt b/Documentation/blame-options.txt
index 16e3c68576..e76195ac97 100644
--- a/Documentation/blame-options.txt
+++ b/Documentation/blame-options.txt
@@ -52,6 +52,11 @@ of lines before or after the line given by <start>.
--porcelain::
Show in a format designed for machine consumption.
+--line-porcelain::
+ Show the porcelain format, but output commit information for
+ each line, not just the first time a commit is referenced.
+ Implies --porcelain.
+
--incremental::
Show the result incrementally in a format designed for
machine consumption.
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 1a060ecbc8..6b93777199 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -1315,6 +1315,11 @@ interactive.singlekey::
setting is silently ignored if portable keystroke input
is not available.
+log.abbrevCommit::
+ If true, makes linkgit:git-log[1], linkgit:git-show[1], and
+ linkgit:git-whatchanged[1] assume `\--abbrev-commit`. You may
+ override this option with `\--no-abbrev-commit`.
+
log.date::
Set the default date-time mode for the 'log' command.
Setting a value for log.date is similar to using 'git log''s
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index c7ed946357..24f189f96b 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -224,10 +224,14 @@ endif::git-format-patch[]
ifndef::git-format-patch[]
--check::
- Warn if changes introduce trailing whitespace
- or an indent that uses a space before a tab. Exits with
- non-zero status if problems are found. Not compatible with
- --exit-code.
+ Warn if changes introduce whitespace errors. What are
+ considered whitespace errors is controlled by `core.whitespace`
+ configuration. By default, trailing whitespaces (including
+ lines that solely consist of whitespaces) and a space character
+ that is immediately followed by a tab character inside the
+ initial indent of the line are considered whitespace errors.
+ Exits with non-zero status if problems are found. Not compatible
+ with --exit-code.
endif::git-format-patch[]
--full-index::
diff --git a/Documentation/git-blame.txt b/Documentation/git-blame.txt
index bb8edb4abc..9516914236 100644
--- a/Documentation/git-blame.txt
+++ b/Documentation/git-blame.txt
@@ -105,6 +105,19 @@ The contents of the actual line is output after the above
header, prefixed by a TAB. This is to allow adding more
header elements later.
+The porcelain format generally suppresses commit information that has
+already been seen. For example, two lines that are blamed to the same
+commit will both be shown, but the details for that commit will be shown
+only once. This is more efficient, but may require more state be kept by
+the reader. The `--line-porcelain` option can be used to output full
+commit information for each line, allowing simpler (but less efficient)
+usage like:
+
+ # count the number of lines attributed to each author
+ git blame --line-porcelain file |
+ sed -n 's/^author //p' |
+ sort | uniq -c | sort -rn
+
SPECIFYING RANGES
-----------------
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 86eb4c9368..b093e45497 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -12,7 +12,7 @@ SYNOPSIS
'git clone' [--template=<template_directory>]
[-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
[-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
- [--separate-git-dir|-L <git dir>]
+ [--separate-git-dir <git dir>]
[--depth <depth>] [--recursive|--recurse-submodules] [--] <repository>
[<directory>]
@@ -177,7 +177,6 @@ objects from the source repository into a pack in the cloned repository.
repository does not have a worktree/checkout (i.e. if any of
`--no-checkout`/`-n`, `--bare`, or `--mirror` is given)
--L=<git dir>::
--separate-git-dir=<git dir>::
Instead of placing the cloned repository where it is supposed
to be, place the cloned repository at the specified directory,
diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt
index 8804de327f..e7ecf5d803 100644
--- a/Documentation/git-config.txt
+++ b/Documentation/git-config.txt
@@ -50,16 +50,18 @@ The default is to assume the config file of the current repository,
.git/config unless defined otherwise with GIT_DIR and GIT_CONFIG
(see <<FILES>>).
-This command will fail if:
-
-. The config file is invalid,
-. Can not write to the config file,
-. no section was provided,
-. the section or key is invalid,
-. you try to unset an option which does not exist,
-. you try to unset/set an option for which multiple lines match, or
-. you use '--global' option without $HOME being properly set.
-
+This command will fail (with exit code ret) if:
+
+. The config file is invalid (ret=3),
+. can not write to the config file (ret=4),
+. no section or name was provided (ret=2),
+. the section or key is invalid (ret=1),
+. you try to unset an option which does not exist (ret=5),
+. you try to unset/set an option for which multiple lines match (ret=5),
+. you try to use an invalid regexp (ret=6), or
+. you use '--global' option without $HOME being properly set (ret=128).
+
+On success, the command returns the exit code 0.
OPTIONS
-------
diff --git a/Documentation/git-cvsserver.txt b/Documentation/git-cvsserver.txt
index 88d814af0e..827bc988ed 100644
--- a/Documentation/git-cvsserver.txt
+++ b/Documentation/git-cvsserver.txt
@@ -252,7 +252,7 @@ Configuring database backend
'git-cvsserver' uses the Perl DBI module. Please also read
its documentation if changing these variables, especially
-about `DBI->connect()`.
+about `DBI\->connect()`.
gitcvs.dbname::
Database name. The exact meaning depends on the
diff --git a/Documentation/git-diff-index.txt b/Documentation/git-diff-index.txt
index 6d18486402..2ea22abca2 100644
--- a/Documentation/git-diff-index.txt
+++ b/Documentation/git-diff-index.txt
@@ -96,8 +96,8 @@ show that. So let's say that you have edited `kernel/sched.c`, but
have not actually done a 'git update-index' on it yet - there is no
"object" associated with the new state, and you get:
- torvalds@ppc970:~/v2.6/linux> git diff-index HEAD
- *100644->100664 blob 7476bb......->000000...... kernel/sched.c
+ torvalds@ppc970:~/v2.6/linux> git diff-index --abbrev HEAD
+ :100644 100664 7476bb... 000000... kernel/sched.c
i.e., it shows that the tree has changed, and that `kernel/sched.c` has is
not up-to-date and may contain new stuff. The all-zero sha1 means that to
diff --git a/Documentation/git-diff-tree.txt b/Documentation/git-diff-tree.txt
index 4e5f127efa..1439486e40 100644
--- a/Documentation/git-diff-tree.txt
+++ b/Documentation/git-diff-tree.txt
@@ -138,8 +138,8 @@ so it can be used to name subdirectories.
An example of normal usage is:
- torvalds@ppc970:~/git> git diff-tree 5319e4......
- *100664->100664 blob ac348b.......->a01513....... git-fsck-objects.c
+ torvalds@ppc970:~/git> git diff-tree --abbrev 5319e4
+ :100664 100664 ac348b... a01513... git-fsck-objects.c
which tells you that the last commit changed just one file (it's from
this one:
diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt
index d7523b3e45..e150c77cff 100644
--- a/Documentation/git-grep.txt
+++ b/Documentation/git-grep.txt
@@ -12,7 +12,8 @@ SYNOPSIS
'git grep' [-a | --text] [-I] [-i | --ignore-case] [-w | --word-regexp]
[-v | --invert-match] [-h|-H] [--full-name]
[-E | --extended-regexp] [-G | --basic-regexp]
- [-F | --fixed-strings] [-n]
+ [-P | --perl-regexp]
+ [-F | --fixed-strings] [-n | --line-number]
[-l | --files-with-matches] [-L | --files-without-match]
[(-O | --open-files-in-pager) [<pager>]]
[-z | --null]
@@ -97,6 +98,11 @@ OPTIONS
Use POSIX extended/basic regexp for patterns. Default
is to use basic regexp.
+-P::
+--perl-regexp::
+ Use Perl-compatible regexp for patterns. Requires libpcre to be
+ compiled in.
+
-F::
--fixed-strings::
Use fixed strings for patterns (don't interpret pattern
diff --git a/Documentation/git-init-db.txt b/Documentation/git-init-db.txt
index 2c4c716f33..9f97f5a915 100644
--- a/Documentation/git-init-db.txt
+++ b/Documentation/git-init-db.txt
@@ -8,7 +8,7 @@ git-init-db - Creates an empty git repository
SYNOPSIS
--------
-'git init-db' [-q | --quiet] [--bare] [--template=<template_directory>] [--shared[=<permissions>]]
+'git init-db' [-q | --quiet] [--bare] [--template=<template_directory>] [--separate-git-dir <git dir>] [--shared[=<permissions>]]
DESCRIPTION
diff --git a/Documentation/git-init.txt b/Documentation/git-init.txt
index 58cd01145a..f2777a7786 100644
--- a/Documentation/git-init.txt
+++ b/Documentation/git-init.txt
@@ -9,7 +9,7 @@ git-init - Create an empty git repository or reinitialize an existing one
SYNOPSIS
--------
'git init' [-q | --quiet] [--bare] [--template=<template_directory>]
- [--separate-git-dir|-L <git dir>]
+ [--separate-git-dir <git dir>]
[--shared[=<permissions>]] [directory]
@@ -54,7 +54,6 @@ current working directory.
Specify the directory from which templates will be used. (See the "TEMPLATE
DIRECTORY" section below.)
--L=<git dir>::
--separate-git-dir=<git dir>::
Instead of initializing the repository where it is supposed to be,
diff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt
index 08f85ba046..ea95c90460 100644
--- a/Documentation/git-instaweb.txt
+++ b/Documentation/git-instaweb.txt
@@ -51,8 +51,8 @@ OPTIONS
start::
--start::
- Start the httpd instance and exit. This does not generate
- any of the configuration files for spawning a new instance.
+ Start the httpd instance and exit. Regenerate configuration files
+ as necessary for spawning a new instance.
stop::
--stop::
@@ -62,8 +62,8 @@ stop::
restart::
--restart::
- Restart the httpd instance and exit. This does not generate
- any of the configuration files for spawning a new instance.
+ Restart the httpd instance and exit. Regenerate configuration files
+ as necessary for spawning a new instance.
CONFIGURATION
-------------
diff --git a/Documentation/git-ls-remote.txt b/Documentation/git-ls-remote.txt
index c3df8c0ebe..7a9b86a58a 100644
--- a/Documentation/git-ls-remote.txt
+++ b/Documentation/git-ls-remote.txt
@@ -10,7 +10,7 @@ SYNOPSIS
--------
[verse]
'git ls-remote' [--heads] [--tags] [-u <exec> | --upload-pack <exec>]
- <repository> [<refs>...]
+ [--exit-code] <repository> [<refs>...]
DESCRIPTION
-----------
@@ -36,6 +36,12 @@ OPTIONS
SSH and where the SSH daemon does not use the PATH configured by the
user.
+--exit-code::
+ Exit with status "2" when no matching refs are found in the remote
+ repository. Usually the command exits with status "0" to indicate
+ it successfully talked with the remote repository, whether it
+ found any matching refs.
+
<repository>::
Location of the repository. The shorthand defined in
$GIT_DIR/branches/ can be used. Use "." (dot) to list references in
diff --git a/Documentation/git-notes.txt b/Documentation/git-notes.txt
index 913ecd8c43..6a187f2e23 100644
--- a/Documentation/git-notes.txt
+++ b/Documentation/git-notes.txt
@@ -17,7 +17,7 @@ SYNOPSIS
'git notes' merge [-v | -q] [-s <strategy> ] <notes_ref>
'git notes' merge --commit [-v | -q]
'git notes' merge --abort [-v | -q]
-'git notes' remove [<object>]
+'git notes' remove [--ignore-missing] [--stdin] [<object>...]
'git notes' prune [-n | -v]
'git notes' get-ref
@@ -106,8 +106,9 @@ When done, the user can either finalize the merge with
'git notes merge --abort'.
remove::
- Remove the notes for a given object (defaults to HEAD).
- This is equivalent to specifying an empty note message to
+ Remove the notes for given objects (defaults to HEAD). When
+ giving zero or one object from the command line, this is
+ equivalent to specifying an empty note message to
the `edit` subcommand.
prune::
@@ -154,6 +155,15 @@ OPTIONS
'GIT_NOTES_REF' and the "core.notesRef" configuration. The ref
is taken to be in `refs/notes/` if it is not qualified.
+--ignore-missing::
+ Do not consider it an error to request removing notes from an
+ object that does not have notes attached to it.
+
+--stdin::
+ Also read the object names to remove notes from from the standard
+ input (there is no reason you cannot combine this with object
+ names from the command line).
+
-n::
--dry-run::
Do not remove anything; just report the object names whose notes
diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt
index 26fdadc642..46a96f2313 100644
--- a/Documentation/git-read-tree.txt
+++ b/Documentation/git-read-tree.txt
@@ -53,6 +53,11 @@ OPTIONS
trees that are not directly related to the current
working tree status into a temporary index file.
+-n::
+--dry-run::
+ Check if the command would error out, without updating the index
+ nor the files in the working tree for real.
+
-v::
Show the progress of checking files out.
diff --git a/Documentation/git-remote-helpers.txt b/Documentation/git-remote-helpers.txt
index 87cd11f2c4..58f6ad4994 100644
--- a/Documentation/git-remote-helpers.txt
+++ b/Documentation/git-remote-helpers.txt
@@ -181,11 +181,11 @@ CAPABILITIES
When using the import command, expect the source ref to have
been written to the destination ref. The earliest applicable
refspec takes precedence. For example
- "refs/heads/*:refs/svn/origin/branches/*" means that, after an
- "import refs/heads/name", the script has written to
+ "refs/heads/{asterisk}:refs/svn/origin/branches/{asterisk}" means
+ that, after an "import refs/heads/name", the script has written to
refs/svn/origin/branches/name. If this capability is used at
all, it must cover all refs reported by the list command; if
- it is not used, it is effectively "*:*"
+ it is not used, it is effectively "{asterisk}:{asterisk}"
REF LIST ATTRIBUTES
-------------------
diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt
index 415f4f0b30..38fafcaa6b 100644
--- a/Documentation/git-rev-list.txt
+++ b/Documentation/git-rev-list.txt
@@ -29,6 +29,7 @@ SYNOPSIS
[ \--tags[=<pattern>] ]
[ \--remotes[=<pattern>] ]
[ \--glob=<glob-pattern> ]
+ [ \--ignore-missing ]
[ \--stdin ]
[ \--quiet ]
[ \--topo-order ]
diff --git a/Documentation/git-sh-i18n--envsubst.txt b/Documentation/git-sh-i18n--envsubst.txt
new file mode 100644
index 0000000000..61e4c08dac
--- /dev/null
+++ b/Documentation/git-sh-i18n--envsubst.txt
@@ -0,0 +1,36 @@
+git-sh-i18n--envsubst(1)
+========================
+
+NAME
+----
+git-sh-i18n--envsubst - Git's own envsubst(1) for i18n fallbacks
+
+SYNOPSIS
+--------
+[verse]
+eval_gettext () {
+ printf "%s" "$1" | (
+ export PATH $('git sh-i18n--envsubst' --variables "$1");
+ 'git sh-i18n--envsubst' "$1"
+ )
+}
+
+DESCRIPTION
+-----------
+
+This is not a command the end user would want to run. Ever.
+This documentation is meant for people who are studying the
+plumbing scripts and/or are writing new ones.
+
+git-sh-i18n--envsubst is Git's stripped-down copy of the GNU
+`envsubst(1)` program that comes with the GNU gettext package. It's
+used internally by linkgit:git-sh-i18n[1] to interpolate the variables
+passed to the the `eval_gettext` function.
+
+No promises are made about the interface, or that this
+program won't disappear without warning in the next version
+of Git. Don't use it.
+
+GIT
+---
+Part of the linkgit:git[1] suite
diff --git a/Documentation/git-sh-i18n.txt b/Documentation/git-sh-i18n.txt
new file mode 100644
index 0000000000..3b1f7ac7b5
--- /dev/null
+++ b/Documentation/git-sh-i18n.txt
@@ -0,0 +1,42 @@
+git-sh-i18n(1)
+==============
+
+NAME
+----
+git-sh-i18n - Git's i18n setup code for shell scripts
+
+SYNOPSIS
+--------
+'. "$(git --exec-path)/git-sh-i18n"'
+
+DESCRIPTION
+-----------
+
+This is not a command the end user would want to run. Ever.
+This documentation is meant for people who are studying the
+Porcelain-ish scripts and/or are writing new ones.
+
+The 'git sh-i18n scriptlet is designed to be sourced (using
+`.`) by Git's porcelain programs implemented in shell
+script. It provides wrappers for the GNU `gettext` and
+`eval_gettext` functions accessible through the `gettext.sh`
+script, and provides pass-through fallbacks on systems
+without GNU gettext.
+
+FUNCTIONS
+---------
+
+gettext::
+ Currently a dummy fall-through function implemented as a wrapper
+ around `printf(1)`. Will be replaced by a real gettext
+ implementation in a later version.
+
+eval_gettext::
+ Currently a dummy fall-through function implemented as a wrapper
+ around `printf(1)` with variables expanded by the
+ linkgit:git-sh-i18n--envsubst[1] helper. Will be replaced by a
+ real gettext implementation in a later version.
+
+GIT
+---
+Part of the linkgit:git[1] suite
diff --git a/Documentation/git-sh-setup.txt b/Documentation/git-sh-setup.txt
index 053df505bc..27fd8ba854 100644
--- a/Documentation/git-sh-setup.txt
+++ b/Documentation/git-sh-setup.txt
@@ -58,9 +58,14 @@ cd_to_toplevel::
runs chdir to the toplevel of the working tree.
require_work_tree::
- checks if the repository is a bare repository, and dies
- if so. Used by scripts that require working tree
- (e.g. `checkout`).
+ checks if the current directory is within the working tree
+ of the repository, and otherwise dies.
+
+require_work_tree_exists::
+ checks if the working tree associated with the repository
+ exists, and otherwise dies. Often done before calling
+ cd_to_toplevel, which is impossible to do if there is no
+ working tree.
get_author_ident_from_commit::
outputs code for use with eval to set the GIT_AUTHOR_NAME,
diff --git a/Documentation/git-status.txt b/Documentation/git-status.txt
index 00b699fef7..38cb741f18 100644
--- a/Documentation/git-status.txt
+++ b/Documentation/git-status.txt
@@ -32,9 +32,10 @@ OPTIONS
Show the branch and tracking info even in short-format.
--porcelain::
- Give the output in a stable, easy-to-parse format for scripts.
- Currently this is identical to --short output, but is guaranteed
- not to change in the future, making it safe for scripts.
+ Give the output in an easy-to-parse format for scripts.
+ This is similar to the short output, but will remain stable
+ across git versions and regardless of user configuration. See
+ below for details.
-u[<mode>]::
--untracked-files[=<mode>]::
@@ -78,23 +79,27 @@ OUTPUT
The output from this command is designed to be used as a commit
template comment, and all the output lines are prefixed with '#'.
The default, long format, is designed to be human readable,
-verbose and descriptive. They are subject to change in any time.
+verbose and descriptive. Its contents and format are subject to change
+at any time.
The paths mentioned in the output, unlike many other git commands, are
made relative to the current directory if you are working in a
subdirectory (this is on purpose, to help cutting and pasting). See
the status.relativePaths config option below.
-In short-format, the status of each path is shown as
+Short Format
+~~~~~~~~~~~~
+
+In the short-format, the status of each path is shown as
XY PATH1 -> PATH2
-where `PATH1` is the path in the `HEAD`, and ` -> PATH2` part is
+where `PATH1` is the path in the `HEAD`, and the ` \-> PATH2` part is
shown only when `PATH1` corresponds to a different path in the
index/worktree (i.e. the file is renamed). The 'XY' is a two-letter
status code.
-The fields (including the `->`) are separated from each other by a
+The fields (including the `\->`) are separated from each other by a
single space. If a filename contains whitespace or other nonprintable
characters, that field will be quoted in the manner of a C string
literal: surrounded by ASCII double quote (34) characters, and with
@@ -143,10 +148,25 @@ If -b is used the short-format status is preceded by a line
## branchname tracking info
-There is an alternate -z format recommended for machine parsing. In
+Porcelain Format
+~~~~~~~~~~~~~~~~
+
+The porcelain format is similar to the short format, but is guaranteed
+not to change in a backwards-incompatible way between git versions or
+based on user configuration. This makes it ideal for parsing by scripts.
+The description of the short format above also describes the porcelain
+format, with a few exceptions:
+
+1. The user's color.status configuration is not respected; color will
+ always be off.
+
+2. The user's status.relativePaths configuration is not respected; paths
+ shown will always be relative to the repository root.
+
+There is also an alternate -z format recommended for machine parsing. In
that format, the status field is the same, but some other things
-change. First, the '->' is omitted from rename entries and the field
-order is reversed (e.g 'from -> to' becomes 'to from'). Second, a NUL
+change. First, the '\->' is omitted from rename entries and the field
+order is reversed (e.g 'from \-> to' becomes 'to from'). Second, a NUL
(ASCII 0) follows each filename, replacing space as a field separator
and the terminating newline (but a space still separates the status
field from the first filename). Third, filenames containing special
diff --git a/Documentation/git.txt b/Documentation/git.txt
index 19d4deff70..3c7a832343 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -44,9 +44,16 @@ 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.5.2/git.html[documentation for release 1.7.5.2]
+* link:v1.7.6/git.html[documentation for release 1.7.6]
* release notes for
+ link:RelNotes/1.7.6.txt[1.7.6].
+
+* link:v1.7.5.4/git.html[documentation for release 1.7.5.4]
+
+* release notes for
+ link:RelNotes/1.7.5.4.txt[1.7.5.4],
+ link:RelNotes/1.7.5.3.txt[1.7.5.3],
link:RelNotes/1.7.5.2.txt[1.7.5.2],
link:RelNotes/1.7.5.1.txt[1.7.5.1],
link:RelNotes/1.7.5.txt[1.7.5].
diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt
index 15aebc6062..412c55b549 100644
--- a/Documentation/gitattributes.txt
+++ b/Documentation/gitattributes.txt
@@ -593,6 +593,37 @@ and now produces better output), you can remove the cache
manually with `git update-ref -d refs/notes/textconv/jpg` (where
"jpg" is the name of the diff driver, as in the example above).
+Choosing textconv versus external diff
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If you want to show differences between binary or specially-formatted
+blobs in your repository, you can choose to use either an external diff
+command, or to use textconv to convert them to a diff-able text format.
+Which method you choose depends on your exact situation.
+
+The advantage of using an external diff command is flexibility. You are
+not bound to find line-oriented changes, nor is it necessary for the
+output to resemble unified diff. You are free to locate and report
+changes in the most appropriate way for your data format.
+
+A textconv, by comparison, is much more limiting. You provide a
+transformation of the data into a line-oriented text format, and git
+uses its regular diff tools to generate the output. There are several
+advantages to choosing this method:
+
+1. Ease of use. It is often much simpler to write a binary to text
+ transformation than it is to perform your own diff. In many cases,
+ existing programs can be used as textconv filters (e.g., exif,
+ odt2txt).
+
+2. Git diff features. By performing only the transformation step
+ yourself, you can still utilize many of git's diff features,
+ including colorization, word-diff, and combined diffs for merges.
+
+3. Caching. Textconv caching can speed up repeated diffs, such as those
+ you might trigger by running `git log -p`.
+
+
Marking files as binary
^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt
index 33716a31d0..8f62d1abee 100644
--- a/Documentation/glossary-content.txt
+++ b/Documentation/glossary-content.txt
@@ -277,7 +277,8 @@ This commit is referred to as a "merge commit", or sometimes just a
Pattern used to specify paths.
+
Pathspecs are used on the command line of "git ls-files", "git
-ls-tree", "git grep", "git checkout", and many other commands to
+ls-tree", "git add", "git grep", "git diff", "git checkout",
+and many other commands to
limit the scope of operations to some subset of the tree or
worktree. See the documentation of each command for whether
paths are relative to the current directory or toplevel. The
@@ -296,6 +297,37 @@ For example, Documentation/*.jpg will match all .jpg files
in the Documentation subtree,
including Documentation/chapter_1/figure_1.jpg.
++
+A pathspec that begins with a colon `:` has special meaning. In the
+short form, the leading colon `:` is followed by zero or more "magic
+signature" letters (which optionally is terminated by another colon `:`),
+and the remainder is the pattern to match against the path. The optional
+colon that terminates the "magic signature" can be omitted if the pattern
+begins with a character that cannot be a "magic signature" and is not a
+colon.
++
+In the long form, the leading colon `:` is followed by a open
+parenthesis `(`, a comma-separated list of zero or more "magic words",
+and a close parentheses `)`, and the remainder is the pattern to match
+against the path.
++
+The "magic signature" consists of an ASCII symbol that is not
+alphanumeric.
++
+--
+top `/`;;
+ The magic word `top` (mnemonic: `/`) makes the pattern match
+ from the root of the working tree, even when you are running
+ the command from inside a subdirectory.
+--
++
+Currently only the slash `/` is recognized as the "magic signature",
+but it is envisioned that we will support more types of magic in later
+versions of git.
++
+A pathspec with only a colon means "there is no pathspec". This form
+should not be combined with other pathspec.
+
[[def_parent]]parent::
A <<def_commit_object,commit object>> contains a (possibly empty) list
of the logical predecessor(s) in the line of development, i.e. its
diff --git a/Documentation/pretty-options.txt b/Documentation/pretty-options.txt
index d5c977262a..2a3dc8664f 100644
--- a/Documentation/pretty-options.txt
+++ b/Documentation/pretty-options.txt
@@ -19,6 +19,11 @@ configuration (see linkgit:git-config[1]).
This should make "--pretty=oneline" a whole lot more readable for
people using 80-column terminals.
+--no-abbrev-commit::
+ Show the full 40-byte hexadecimal commit object name. This negates
+ `--abbrev-commit` and those options which imply it such as
+ "--oneline". It also overrides the 'log.abbrevCommit' variable.
+
--oneline::
This is a shorthand for "--pretty=oneline --abbrev-commit"
used together.
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 52bae31fcb..7e7ba68781 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -139,6 +139,10 @@ parents) and `--max-parents=-1` (negative numbers denote no upper limit).
is automatically prepended if missing. If pattern lacks '?', '*',
or '[', '/*' at the end is implied.
+--ignore-missing::
+
+ Upon seeing an invalid object name in the input, pretend as if
+ the bad input was not given.
ifndef::git-rev-list[]
--bisect::
diff --git a/Documentation/technical/api-diff.txt b/Documentation/technical/api-diff.txt
index 20b0241d30..2d2ebc04b7 100644
--- a/Documentation/technical/api-diff.txt
+++ b/Documentation/technical/api-diff.txt
@@ -32,7 +32,7 @@ Calling sequence
* As you find different pairs of files, call `diff_change()` to feed
modified files, `diff_addremove()` to feed created or deleted files,
- or `diff_unmerged()` to feed a file whose state is 'unmerged' to the
+ or `diff_unmerge()` to feed a file whose state is 'unmerged' to the
API. These are thin wrappers to a lower-level `diff_queue()` function
that is flexible enough to record any of these kinds of changes.
@@ -50,7 +50,7 @@ Data structures
This is the internal representation for a single file (blob). It
records the blob object name (if known -- for a work tree file it
typically is a NUL SHA-1), filemode and pathname. This is what the
-`diff_addremove()`, `diff_change()` and `diff_unmerged()` synthesize and
+`diff_addremove()`, `diff_change()` and `diff_unmerge()` synthesize and
feed `diff_queue()` function with.
* `struct diff_filepair`