diff options
Diffstat (limited to 'Documentation')
83 files changed, 898 insertions, 273 deletions
diff --git a/Documentation/.gitignore b/Documentation/.gitignore index 2f938f471a..d8edd90406 100644 --- a/Documentation/.gitignore +++ b/Documentation/.gitignore @@ -2,7 +2,9 @@ *.html *.[1-8] *.made +*.texi git.info +gitman.info howto-index.txt doc.dep cmds-*.txt diff --git a/Documentation/RelNotes-1.5.6.txt b/Documentation/RelNotes-1.5.6.txt index a79e4b9393..e143d8d61b 100644 --- a/Documentation/RelNotes-1.5.6.txt +++ b/Documentation/RelNotes-1.5.6.txt @@ -18,11 +18,15 @@ Updates since v1.5.5 * "git init" now autodetects the case sensitivity of the filesystem and sets core.ignorecase accordingly. +* cpio is no longer used; neither "curl" binary (libcurl is still used). + (documentation) * Many freestanding documentation pages have been converted and made - available to "git help" (aka "man git-<command>") as section 7 of the - manual pages. + available to "git help" (aka "man git<something>") as section 7 of + the manual pages. This means bookmarks to some HTML documentation + files may need to be updated (eg "tutorial.html" became + "gittutorial.html"). (performance) @@ -70,7 +74,7 @@ Updates since v1.5.5 * "git init --bare" is a synonym for "git --bare init" now. -* "git gc --auto" honors a new pre-aut-gc hook to temporarily disable it. +* "git gc --auto" honors a new pre-auto-gc hook to temporarily disable it. * "git log --pretty=tformat:<custom format>" gives a LF after each entry, instead of giving a LF between each pair of entries which is how @@ -108,9 +112,4 @@ Fixes since v1.5.5 All of the fixes in v1.5.5 maintenance series are included in this release, unless otherwise noted. - --- -exec >/var/tmp/1 -O=v1.5.6-rc1 -echo O=`git describe refs/heads/master` -git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint +And there are too numerous small fixes to otherwise note here ;-) diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 0e155c936c..b1164753e1 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches @@ -419,6 +419,11 @@ settings but I haven't tried, yet. mail.identity.default.compose_html => false mail.identity.id?.compose_html => false +(Lukas Sandström) + +There is a script in contrib/thunderbird-patch-inline which can help +you include patches with Thunderbird in an easy way. To use it, do the +steps above and then use the script as the external editor. Gnus ---- diff --git a/Documentation/blame-options.txt b/Documentation/blame-options.txt index c11bb7d36c..5428111d73 100644 --- a/Documentation/blame-options.txt +++ b/Documentation/blame-options.txt @@ -41,7 +41,8 @@ of lines before or after the line given by <start>. -S <revs-file>:: Use revs from revs-file instead of calling linkgit:git-rev-list[1]. --p, --porcelain:: +-p:: +--porcelain:: Show in a format designed for machine consumption. --incremental:: @@ -83,5 +84,6 @@ alphanumeric characters that git must detect as moving between files for it to associate those lines with the parent commit. --h, --help:: +-h:: +--help:: Show help message. diff --git a/Documentation/cat-texi.perl b/Documentation/cat-texi.perl index e3d8e9faa8..dbc133cd3c 100755 --- a/Documentation/cat-texi.perl +++ b/Documentation/cat-texi.perl @@ -11,7 +11,7 @@ while (<STDIN>) { if (s/^\@top (.*)/\@node $1,,,Top/) { push @menu, $1; } - s/\(\@pxref{\[URLS\]}\)//; + s/\(\@pxref{\[(URLS|REMOTES)\]}\)//; print TMP; } close TMP; diff --git a/Documentation/config.txt b/Documentation/config.txt index 5331b450ea..1e09a57c8c 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -1013,6 +1013,25 @@ status.relativePaths:: relative to the repository root (this was the default for git prior to v1.5.4). +status.showUntrackedFiles:: + By default, linkgit:git-status[1] and linkgit:git-commit[1] show + files which are not currently tracked by Git. Directories which + contain only untracked files, are shown with the directory name + only. Showing untracked files means that Git needs to lstat() all + all the files in the whole repository, which might be slow on some + systems. So, this variable controls how the commands displays + the untracked files. Possible values are: ++ +-- + - 'no' - Show no untracked files + - 'normal' - Shows untracked files and directories + - 'all' - Shows also individual files in untracked directories. +-- ++ +If this variable is not specified, it defaults to 'normal'. +This variable can be overridden with the -u|--untracked-files option +of linkgit:git-status[1] and linkgit:git-commit[1]. + tar.umask:: This variable can be used to restrict the permission bits of tar archive entries. The default is 0002, which turns off the diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt index b675911480..85c87180db 100644 --- a/Documentation/fetch-options.txt +++ b/Documentation/fetch-options.txt @@ -1,22 +1,26 @@ --q, \--quiet:: +-q:: +--quiet:: Pass --quiet to git-fetch-pack and silence any other internally used programs. --v, \--verbose:: +-v:: +--verbose:: Be verbose. --a, \--append:: +-a:: +--append:: Append ref names and object names of fetched refs to the existing contents of `.git/FETCH_HEAD`. Without this option old data in `.git/FETCH_HEAD` will be overwritten. -\--upload-pack <upload-pack>:: +--upload-pack <upload-pack>:: When given, and the repository to fetch from is handled by 'git-fetch-pack', '--exec=<upload-pack>' is passed to the command to specify non-default path for the command run on the other end. --f, \--force:: +-f:: +--force:: When `git-fetch` is used with `<rbranch>:<lbranch>` refspec, it refuses to update the local branch `<lbranch>` unless the remote branch `<rbranch>` it @@ -24,16 +28,18 @@ overrides that check. ifdef::git-pull[] -\--no-tags:: +--no-tags:: endif::git-pull[] ifndef::git-pull[] --n, \--no-tags:: +-n:: +--no-tags:: endif::git-pull[] By default, tags that point at objects that are downloaded from the remote repository are fetched and stored locally. This option disables this automatic tag following. --t, \--tags:: +-t:: +--tags:: Most of the tags are fetched automatically as branch heads are downloaded, but tags that do not point at objects reachable from the branch heads that are being @@ -41,10 +47,12 @@ endif::git-pull[] flag lets all tags and their associated objects be downloaded. --k, \--keep:: +-k:: +--keep:: Keep downloaded pack. --u, \--update-head-ok:: +-u:: +--update-head-ok:: By default `git-fetch` refuses to update the head which corresponds to the current branch. This flag disables the check. This is purely for the internal use for `git-pull` @@ -52,7 +60,7 @@ endif::git-pull[] implementing your own Porcelain you are not supposed to use it. -\--depth=<depth>:: +--depth=<depth>:: Deepen the history of a 'shallow' repository created by `git clone` with `--depth=<depth>` option (see linkgit:git-clone[1]) by the specified number of commits. diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt index 88165da38f..b8e3fa6759 100644 --- a/Documentation/git-add.txt +++ b/Documentation/git-add.txt @@ -8,8 +8,9 @@ git-add - Add file contents to the index SYNOPSIS -------- [verse] -'git-add' [-n] [-v] [-f] [--interactive | -i] [--patch | -p] [-u] [--refresh] - [--ignore-errors] [--] <filepattern>... +'git-add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p] + [--update | -u] [--refresh] [--ignore-errors] [--] + <filepattern>... DESCRIPTION ----------- @@ -50,27 +51,33 @@ OPTIONS and `dir/file2`) can be given to add all files in the directory, recursively. --n, \--dry-run:: +-n:: +--dry-run:: Don't actually add the file(s), just show if they exist. --v, \--verbose:: +-v:: +--verbose:: Be verbose. -f:: +--force:: Allow adding otherwise ignored files. --i, \--interactive:: +-i:: +--interactive:: Add modified contents in the working tree interactively to the index. Optional path arguments may be supplied to limit operation to a subset of the working tree. See ``Interactive mode'' for details. --p, \--patch:: +-p:: +--patch:: Similar to Interactive mode but the initial command loop is bypassed and the 'patch' subcommand is invoked using each of the specified filepatterns before exiting. -u:: +--update:: Update only files that git already knows about, staging modified content for commit and marking deleted files for removal. This is similar @@ -79,11 +86,11 @@ OPTIONS command line. If no paths are specified, all tracked files in the current directory and its subdirectories are updated. -\--refresh:: +--refresh:: Don't add the file(s), but only refresh their stat() information in the index. -\--ignore-errors:: +--ignore-errors:: If some files could not be added because of errors indexing them, do not abort the operation, but continue adding the others. The command shall still exit with non-zero status. diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt index 7f6f5b472a..46544a0769 100644 --- a/Documentation/git-am.txt +++ b/Documentation/git-am.txt @@ -28,14 +28,17 @@ OPTIONS supply this argument, reads from the standard input. If you supply directories, they'll be treated as Maildirs. --s, --signoff:: +-s:: +--signoff:: Add `Signed-off-by:` line to the commit message, using the committer identity of yourself. --k, --keep:: +-k:: +--keep:: Pass `-k` flag to `git-mailinfo` (see linkgit:git-mailinfo[1]). --u, --utf8:: +-u:: +--utf8:: Pass `-u` flag to `git-mailinfo` (see linkgit:git-mailinfo[1]). The proposed commit log message taken from the e-mail is re-coded into UTF-8 encoding (configuration variable @@ -49,13 +52,15 @@ default. You could use `--no-utf8` to override this. Pass `-n` flag to `git-mailinfo` (see linkgit:git-mailinfo[1]). --3, --3way:: +-3:: +--3way:: When the patch does not apply cleanly, fall back on 3-way merge, if the patch records the identity of blobs it is supposed to apply to, and we have those blobs available locally. --b, --binary:: +-b:: +--binary:: Pass `--allow-binary-replacement` flag to `git-apply` (see linkgit:git-apply[1]). @@ -64,19 +69,22 @@ default. You could use `--no-utf8` to override this. program that applies the patch. --C<n>, -p<n>:: +-C<n>:: +-p<n>:: These flags are passed to the `git-apply` (see linkgit:git-apply[1]) program that applies the patch. --i, --interactive:: +-i:: +--interactive:: Run interactively. --skip:: Skip the current patch. This is only meaningful when restarting an aborted patch. --r, --resolved:: +-r:: +--resolved:: After a patch failure (e.g. attempting to apply conflicting patch), the user has applied it by hand and the index file stores the result of the application. diff --git a/Documentation/git-apply.txt b/Documentation/git-apply.txt index 76277bd178..c8347637da 100644 --- a/Documentation/git-apply.txt +++ b/Documentation/git-apply.txt @@ -73,7 +73,8 @@ OPTIONS When a pure mode change is encountered (which has no index information), the information is read from the current index instead. --R, --reverse:: +-R:: +--reverse:: Apply the patch in reverse. --reject:: @@ -124,7 +125,8 @@ discouraged. the result with this option, which would apply the deletion part but not addition part. ---allow-binary-replacement, --binary:: +--allow-binary-replacement:: +--binary:: Historically we did not allow binary patch applied without an explicit permission from the user, and this flag was the way to do so. Currently we always allow binary @@ -169,7 +171,8 @@ behavior: correctly. This option adds support for applying such patches by working around this bug. --v, --verbose:: +-v:: +--verbose:: Report progress to stderr. By default, only a message about the current patch being applied will be printed. This option will cause additional information to be reported. diff --git a/Documentation/git-archive.txt b/Documentation/git-archive.txt index a3e36dbb0d..9b5f3ae5ed 100644 --- a/Documentation/git-archive.txt +++ b/Documentation/git-archive.txt @@ -36,10 +36,12 @@ OPTIONS Format of the resulting archive: 'tar' or 'zip'. The default is 'tar'. ---list, -l:: +-l:: +--list:: Show all available formats. ---verbose, -v:: +-v:: +--verbose:: Report progress to stderr. --prefix=<prefix>/:: diff --git a/Documentation/git-bisect.txt b/Documentation/git-bisect.txt index 37c7acbe9f..3ca0d330ad 100644 --- a/Documentation/git-bisect.txt +++ b/Documentation/git-bisect.txt @@ -85,10 +85,9 @@ Oh, and then after you want to reset to the original head, do a $ git bisect reset ------------------------------------------------ -to get back to the original branch, instead of being in one of the -bisection branches ("git bisect start" will do that for you too, -actually: it will reset the bisection state, and before it does that -it checks that you're not using some old bisection branch). +to get back to the original branch, instead of being on the bisection +commit ("git bisect start" will do that for you too, actually: it will +reset the bisection state). Bisect visualize ~~~~~~~~~~~~~~~~ diff --git a/Documentation/git-blame.txt b/Documentation/git-blame.txt index 7900f33d4b..8f4fb46685 100644 --- a/Documentation/git-blame.txt +++ b/Documentation/git-blame.txt @@ -52,12 +52,14 @@ include::blame-options.txt[] a certain threshold for git-blame to consider those lines of code to have been moved. --f, --show-name:: +-f:: +--show-name:: Show filename in the original commit. By default filename is shown if there is any line that came from a file with different name, due to rename detection. --n, --show-number:: +-n:: +--show-number:: Show line number in the original commit (Default: off). -s:: diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt index a70fa76f31..0fd58083eb 100644 --- a/Documentation/git-branch.txt +++ b/Documentation/git-branch.txt @@ -95,7 +95,8 @@ OPTIONS -a:: List both remote-tracking branches and local branches. --v, --verbose:: +-v:: +--verbose:: Show sha1 and commit subject line for each head. --abbrev=<length>:: diff --git a/Documentation/git-cat-file.txt b/Documentation/git-cat-file.txt index 3f77dbd107..f58013ca60 100644 --- a/Documentation/git-cat-file.txt +++ b/Documentation/git-cat-file.txt @@ -8,6 +8,7 @@ git-cat-file - Provide content or type/size information for repository objects SYNOPSIS -------- +[verse] 'git-cat-file' [-t | -s | -e | -p | <type>] <object> 'git-cat-file' [--batch | --batch-check] < <list-of-objects> diff --git a/Documentation/git-checkout-index.txt b/Documentation/git-checkout-index.txt index a8cad9c21f..676203b2eb 100644 --- a/Documentation/git-checkout-index.txt +++ b/Documentation/git-checkout-index.txt @@ -22,21 +22,26 @@ Will copy all files listed from the index to the working directory OPTIONS ------- --u|--index:: +-u:: +--index:: update stat information for the checked out entries in the index file. --q|--quiet:: +-q:: +--quiet:: be quiet if files exist or are not in the index --f|--force:: +-f:: +--force:: forces overwrite of existing files --a|--all:: +-a:: +--all:: checks out all files in the index. Cannot be used together with explicit filenames. --n|--no-create:: +-n:: +--no-create:: Don't checkout new files, only refresh files already checked out. diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt index a5bf9d6f89..3ad9760a4d 100644 --- a/Documentation/git-checkout.txt +++ b/Documentation/git-checkout.txt @@ -47,7 +47,8 @@ OPTIONS by linkgit:git-check-ref-format[1]. Some of these checks may restrict the characters allowed in a branch name. --t, --track:: +-t:: +--track:: When creating a new branch, set up configuration so that git-pull will automatically retrieve data from the start point, which must be a branch. Use this if you always pull from the same upstream branch diff --git a/Documentation/git-cherry-pick.txt b/Documentation/git-cherry-pick.txt index 3762272b88..5ac9cfb0ef 100644 --- a/Documentation/git-cherry-pick.txt +++ b/Documentation/git-cherry-pick.txt @@ -22,7 +22,8 @@ OPTIONS For a more complete list of ways to spell commits, see "SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1]. --e|--edit:: +-e:: +--edit:: With this option, `git-cherry-pick` will let you edit the commit message prior to committing. @@ -44,14 +45,16 @@ OPTIONS described above, and `-r` was to disable it. Now the default is not to do `-x` so this option is a no-op. --m parent-number|--mainline parent-number:: +-m parent-number:: +--mainline parent-number:: Usually you cannot cherry-pick a merge because you do not know which side of the merge should be considered the mainline. This option specifies the parent number (starting from 1) of the mainline and allows cherry-pick to replay the change relative to the specified parent. --n|--no-commit:: +-n:: +--no-commit:: Usually the command automatically creates a commit with a commit log message stating which commit was cherry-picked. This flag applies the change necessary @@ -64,7 +67,8 @@ OPTIONS This is useful when cherry-picking more than one commits' effect to your working tree in a row. --s|--signoff:: +-s:: +--signoff:: Add Signed-off-by line at the end of the commit message. diff --git a/Documentation/git-clean.txt b/Documentation/git-clean.txt index deebf3b315..37a82ee4b8 100644 --- a/Documentation/git-clean.txt +++ b/Documentation/git-clean.txt @@ -30,9 +30,11 @@ OPTIONS git-clean will refuse to run unless given -f or -n. -n:: +--dry-run:: Don't actually remove anything, just show what would be done. -q:: +--quiet:: Be quiet, only report errors, but not the files that are successfully removed. diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt index 02d4baab6d..d0fe192fb3 100644 --- a/Documentation/git-commit.txt +++ b/Documentation/git-commit.txt @@ -8,9 +8,9 @@ git-commit - Record changes to the repository SYNOPSIS -------- [verse] -'git-commit' [-a | --interactive] [-s] [-v] [-u] - [(-c | -C) <commit> | -F <file> | -m <msg> | --amend] - [--allow-empty] [--no-verify] [-e] [--author <author>] +'git-commit' [-a | --interactive] [-s] [-v] [-u<mode>] [--amend] + [(-c | -C) <commit>] [-F <file> | -m <msg>] + [--allow-empty] [--no-verify] [-e] [--author=<author>] [--cleanup=<mode>] [--] [[-i | -o ]<file>...] DESCRIPTION @@ -52,39 +52,49 @@ that, you can recover from it with linkgit:git-reset[1]. OPTIONS ------- --a|--all:: +-a:: +--all:: Tell the command to automatically stage files that have been modified and deleted, but new files you have not told git about are not affected. --c or -C <commit>:: - Take existing commit object, and reuse the log message +-C <commit>:: +--reuse-message=<commit>:: + Take an existing commit object, and reuse the log message and the authorship information (including the timestamp) - when creating the commit. With '-C', the editor is not - invoked; with '-c' the user can further edit the commit - message. + when creating the commit. + +-c <commit>:: +--reedit-message=<commit>:: + Like '-C', but with '-c' the editor is invoked, so that + the user can further edit the commit message. -F <file>:: +--file=<file>:: Take the commit message from the given file. Use '-' to read the message from the standard input. ---author <author>:: +--author=<author>:: Override the author name used in the commit. Use `A U Thor <author@example.com>` format. --m <msg>|--message=<msg>:: +-m <msg>:: +--message=<msg>:: Use the given <msg> as the commit message. --t <file>|--template=<file>:: +-t <file>:: +--template=<file>:: Use the contents of the given file as the initial version of the commit message. The editor is invoked and you can make subsequent changes. If a message is specified using the `-m` or `-F` options, this option has no effect. This overrides the `commit.template` configuration variable. --s|--signoff:: +-s:: +--signoff:: Add Signed-off-by line at the end of the commit message. +-n:: --no-verify:: This option bypasses the pre-commit and commit-msg hooks. See also linkgit:githooks[5][hooks]. @@ -105,14 +115,14 @@ OPTIONS 'whitespace' removes just leading/trailing whitespace lines and 'strip' removes both whitespace and commentary. --e|--edit:: +-e:: +--edit:: The message taken from file with `-F`, command line with `-m`, and from file with `-C` are usually used as the commit log message unmodified. This option lets you further edit the message taken from these sources. --amend:: - Used to amend the tip of the current branch. Prepare the tree object you would want to replace the latest commit as usual (this includes the usual -i/-o and explicit paths), and the @@ -133,13 +143,15 @@ It is a rough equivalent for: but can be used to amend a merge commit. -- --i|--include:: +-i:: +--include:: Before making a commit out of staged contents so far, stage the contents of paths given on the command line as well. This is usually not what you want unless you are concluding a conflicted merge. --o|--only:: +-o:: +--only:: Make a commit only from the paths specified on the command line, disregarding any contents that have been staged so far. This is the default mode of operation of @@ -150,20 +162,32 @@ but can be used to amend a merge commit. the last commit without committing changes that have already been staged. --u|--untracked-files:: - Show all untracked files, also those in uninteresting - directories, in the "Untracked files:" section of commit - message template. Without this option only its name and - a trailing slash are displayed for each untracked - directory. +-u[<mode>]:: +--untracked-files[=<mode>]:: + Show untracked files (Default: 'all'). ++ +The mode parameter is optional, and is used to specify +the handling of untracked files. The possible options are: ++ +-- + - 'no' - Show no untracked files + - 'normal' - Shows untracked files and directories + - 'all' - Also shows individual files in untracked directories. +-- ++ +See linkgit:git-config[1] for configuration variable +used to change the default for when the option is not +specified. --v|--verbose:: +-v:: +--verbose:: Show unified diff between the HEAD commit and what would be committed at the bottom of the commit message template. Note that this diff output doesn't have its lines prefixed with '#'. --q|--quiet:: +-q:: +--quiet:: Suppress commit summary message. \--:: diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt index 84b754f8d0..c90421ee7f 100644 --- a/Documentation/git-config.txt +++ b/Documentation/git-config.txt @@ -101,7 +101,8 @@ rather than from all available files. + See also <<FILES>>. --f config-file, --file config-file:: +-f config-file:: +--file config-file:: Use the given config file instead of the one specified by GIT_CONFIG. --remove-section:: @@ -116,7 +117,8 @@ See also <<FILES>>. --unset-all:: Remove all lines matching the key from config file. --l, --list:: +-l:: +--list:: List all variables set in config file. --bool:: @@ -128,7 +130,8 @@ See also <<FILES>>. in the config file will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output. --z, --null:: +-z:: +--null:: For all options that output values and/or keys, always end values with the null character (instead of a newline). Use newline instead as a delimiter between diff --git a/Documentation/git-count-objects.txt b/Documentation/git-count-objects.txt index e1219b3167..1ba85a259a 100644 --- a/Documentation/git-count-objects.txt +++ b/Documentation/git-count-objects.txt @@ -18,6 +18,7 @@ them, to help you decide when it is a good time to repack. OPTIONS ------- -v:: +--verbose:: In addition to the number of loose objects and disk space consumed, it reports the number of in-pack objects, number of packs, and number of objects that can be diff --git a/Documentation/git-cvsserver.txt b/Documentation/git-cvsserver.txt index b7721131dd..3310ae25ff 100644 --- a/Documentation/git-cvsserver.txt +++ b/Documentation/git-cvsserver.txt @@ -41,10 +41,13 @@ Don't allow recursing into subdirectories Don't check for `gitcvs.enabled` in config. You also have to specify a list of allowed directories (see below) if you want to use this option. ---version, -V:: +-V:: +--version:: Print version information and exit ---help, -h, -H:: +-h:: +-H:: +--help:: Print usage information and exit <directory>:: diff --git a/Documentation/git-daemon.txt b/Documentation/git-daemon.txt index 3fb71d683e..344f24ea59 100644 --- a/Documentation/git-daemon.txt +++ b/Documentation/git-daemon.txt @@ -103,7 +103,8 @@ OPTIONS Log to syslog instead of stderr. Note that this option does not imply --verbose, thus by default only error conditions will be logged. ---user-path, --user-path=path:: +--user-path:: +--user-path=path:: Allow ~user notation to be used in requests. When specified with no parameter, requests to git://host/~alice/foo is taken as a request to access @@ -127,7 +128,8 @@ OPTIONS Save the process id in 'file'. Ignored when the daemon is run under `--inetd`. ---user=user, --group=group:: +--user=user:: +--group=group:: Change daemon's uid and gid before entering the service loop. When only `--user` is given without `--group`, the primary group ID for the user is used. The values of @@ -138,14 +140,16 @@ Giving these options is an error when used with `--inetd`; use the facility of inet daemon to achieve the same before spawning `git-daemon` if needed. ---enable=service, --disable=service:: +--enable=service:: +--disable=service:: Enable/disable the service site-wide per default. Note that a service disabled site-wide can still be enabled per repository if it is marked overridable and the repository enables the service with an configuration item. ---allow-override=service, --forbid-override=service:: +--allow-override=service:: +--forbid-override=service:: Allow/forbid overriding the site-wide default with per repository configuration. By default, all the services are overridable. diff --git a/Documentation/git-describe.txt b/Documentation/git-describe.txt index 3f0b7b2f47..9f6f483186 100644 --- a/Documentation/git-describe.txt +++ b/Documentation/git-describe.txt @@ -70,6 +70,9 @@ OPTIONS Only consider tags matching the given pattern (can be used to avoid leaking private tags made from the repository). +--always:: + Show uniquely abbreviated commit object as fallback. + EXAMPLES -------- diff --git a/Documentation/git-diff-files.txt b/Documentation/git-diff-files.txt index ed9bd75b74..8a64869d27 100644 --- a/Documentation/git-diff-files.txt +++ b/Documentation/git-diff-files.txt @@ -30,7 +30,8 @@ The default is to diff against our branch (-2) and the cleanly resolved paths. The option -0 can be given to omit diff output for unmerged entries and just show "Unmerged". --c,--cc:: +-c:: +--cc:: This compares stage 2 (our branch), stage 3 (their branch) and the working tree file and outputs a combined diff, similar to the way 'diff-tree' shows a merge diff --git a/Documentation/git-fast-export.txt b/Documentation/git-fast-export.txt index 332346cc5d..277a547a02 100644 --- a/Documentation/git-fast-export.txt +++ b/Documentation/git-fast-export.txt @@ -36,6 +36,26 @@ when encountering a signed tag. With 'strip', the tags will be made unsigned, with 'verbatim', they will be silently exported and with 'warn', they will be exported, but you will see a warning. +--export-marks=<file>:: + Dumps the internal marks table to <file> when complete. + Marks are written one per line as `:markid SHA-1`. Only marks + for revisions are dumped; marks for blobs are ignored. + Backends can use this file to validate imports after they + have been completed, or to save the marks table across + incremental runs. As <file> is only opened and truncated + at completion, the same path can also be safely given to + \--import-marks. + +--import-marks=<file>:: + Before processing any input, load the marks specified in + <file>. The input file must exist, must be readable, and + must use the same format as produced by \--export-marks. ++ +Any commits that have already been marked will not be exported again. +If the backend uses a similar \--import-marks file, this allows for +incremental bidirectional exporting of the repository by keeping the +marks the same across runs. + EXAMPLES -------- diff --git a/Documentation/git-fetch-pack.txt b/Documentation/git-fetch-pack.txt index 6ee3dccc1f..282fcaf17f 100644 --- a/Documentation/git-fetch-pack.txt +++ b/Documentation/git-fetch-pack.txt @@ -28,30 +28,32 @@ have a common ancestor commit. OPTIONS ------- -\--all:: +--all:: Fetch all remote refs. -\--quiet, \-q:: +-q:: +--quiet:: Pass '-q' flag to 'git-unpack-objects'; this makes the cloning process less verbose. -\--keep, \-k:: +-k:: +--keep:: Do not invoke 'git-unpack-objects' on received data, but create a single packfile out of it instead, and store it in the object database. If provided twice then the pack is locked against repacking. -\--thin:: +--thin:: Spend extra cycles to minimize the number of objects to be sent. Use it on slower connection. -\--include-tag:: +--include-tag:: If the remote side supports it, annotated tags objects will be downloaded on the same connection as the other objects if the object the tag references is downloaded. The caller must otherwise determine the tags this option made available. -\--upload-pack=<git-upload-pack>:: +--upload-pack=<git-upload-pack>:: Use this to specify the path to 'git-upload-pack' on the remote side, if is not found on your $PATH. Installations of sshd ignores the user's environment @@ -63,16 +65,16 @@ OPTIONS shells by having a lean .bashrc file (they set most of the things up in .bash_profile). -\--exec=<git-upload-pack>:: +--exec=<git-upload-pack>:: Same as \--upload-pack=<git-upload-pack>. -\--depth=<n>:: +--depth=<n>:: Limit fetching to ancestor-chains not longer than n. -\--no-progress:: +--no-progress:: Do not show the progress. -\-v:: +-v:: Run verbosely. <host>:: diff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt index 44060687ab..ea77f1fce5 100644 --- a/Documentation/git-filter-branch.txt +++ b/Documentation/git-filter-branch.txt @@ -161,7 +161,8 @@ to other tags will be rewritten to point to the underlying commit. does this in the '.git-rewrite/' directory but you can override that choice by this parameter. --f|--force:: +-f:: +--force:: `git filter-branch` refuses to start with an existing temporary directory or when there are already refs starting with 'refs/original/', unless forced. diff --git a/Documentation/git-fmt-merge-msg.txt b/Documentation/git-fmt-merge-msg.txt index 328cc542dc..2a7cfb980b 100644 --- a/Documentation/git-fmt-merge-msg.txt +++ b/Documentation/git-fmt-merge-msg.txt @@ -33,11 +33,13 @@ OPTIONS Do not list one-line descriptions from the actual commits being merged. ---summary,--no-summary:: +--summary:: +--no-summary:: Synonyms to --log and --no-log; these are deprecated and will be removed in the future. ---file <file>, -F <file>:: +-F <file>:: +--file <file>:: Take the list of merged objects from <file> instead of stdin. diff --git a/Documentation/git-for-each-ref.txt b/Documentation/git-for-each-ref.txt index 6325ff9a68..b347bfbb14 100644 --- a/Documentation/git-for-each-ref.txt +++ b/Documentation/git-for-each-ref.txt @@ -53,7 +53,10 @@ OPTIONS literally, in the latter case matching completely or from the beginning up to a slash. ---shell, --perl, --python, --tcl:: +--shell:: +--perl:: +--python:: +--tcl:: If given, strings that substitute `%(fieldname)` placeholders are quoted as string literals suitable for the specified host language. This is meant to produce diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt index cdee642060..4dafa39a92 100644 --- a/Documentation/git-format-patch.txt +++ b/Documentation/git-format-patch.txt @@ -74,14 +74,17 @@ include::diff-options.txt[] -<n>:: Limits the number of patches to prepare. --o|--output-directory <dir>:: +-o <dir>:: +--output-directory <dir>:: Use <dir> to store the resulting files, instead of the current working directory. --n|--numbered:: +-n:: +--numbered:: Name output in '[PATCH n/m]' format. --N|--no-numbered:: +-N:: +--no-numbered:: Name output in '[PATCH]' format. --start-number <n>:: @@ -92,11 +95,13 @@ include::diff-options.txt[] without the default first line of the commit appended. Mutually exclusive with the --stdout option. --k|--keep-subject:: +-k:: +--keep-subject:: Do not strip/add '[PATCH]' from the first line of the commit log message. --s|--signoff:: +-s:: +--signoff:: Add `Signed-off-by:` line to the commit message, using the committer identity of yourself. diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt index 13b9cf770c..1b646b73f0 100644 --- a/Documentation/git-grep.txt +++ b/Documentation/git-grep.txt @@ -33,25 +33,30 @@ OPTIONS Instead of searching in the working tree files, check the blobs registered in the index file. --a | --text:: +-a:: +--text:: Process binary files as if they were text. --i | --ignore-case:: +-i:: +--ignore-case:: Ignore case differences between the patterns and the files. -I:: Don't match the pattern in binary files. --w | --word-regexp:: +-w:: +--word-regexp:: Match the pattern only at word boundary (either begin at the beginning of a line, or preceded by a non-word character; end at the end of a line or followed by a non-word character). --v | --invert-match:: +-v:: +--invert-match:: Select non-matching lines. --h | -H:: +-h:: +-H:: By default, the command shows the filename for each match. `-h` option is used to suppress this output. `-H` is there for completeness and does not do anything @@ -64,24 +69,33 @@ OPTIONS option forces paths to be output relative to the project top directory. --E | --extended-regexp | -G | --basic-regexp:: +-E:: +--extended-regexp:: +-G:: +--basic-regexp:: Use POSIX extended/basic regexp for patterns. Default is to use basic regexp. --F | --fixed-strings:: +-F:: +--fixed-strings:: Use fixed strings for patterns (don't interpret pattern as a regex). -n:: Prefix the line number to matching lines. --l | --files-with-matches | --name-only | -L | --files-without-match:: +-l:: +--files-with-matches:: +--name-only:: +-L:: +--files-without-match:: Instead of showing every matched line, show only the names of files that contain (or do not contain) matches. For better compatibility with git-diff, --name-only is a synonym for --files-with-matches. --c | --count:: +-c:: +--count:: Instead of showing every matched line, show the number of lines that match. @@ -103,7 +117,10 @@ OPTIONS scripts passing user input to grep. Multiple patterns are combined by 'or'. ---and | --or | --not | ( | ):: +--and:: +--or:: +--not:: +( ... ):: Specify how multiple patterns are combined using Boolean expressions. `--or` is the default operator. `--and` has higher precedence than `--or`. `-e` has to be used for all diff --git a/Documentation/git-help.txt b/Documentation/git-help.txt index 8994c6d434..faecd6bb90 100644 --- a/Documentation/git-help.txt +++ b/Documentation/git-help.txt @@ -28,15 +28,18 @@ former is internally converted into the latter. OPTIONS ------- --a|--all:: +-a:: +--all:: Prints all the available commands on the standard output. This option supersedes any other option. --i|--info:: +-i:: +--info:: Display manual page for the command in the 'info' format. The 'info' program will be used for that purpose. --m|--man:: +-m:: +--man:: Display manual page for the command in the 'man' format. This option may be used to override a value set in the 'help.format' configuration variable. @@ -45,7 +48,8 @@ By default the 'man' program will be used to display the manual page, but the 'man.viewer' configuration variable may be used to choose other display programs (see below). --w|--web:: +-w:: +--web:: Display manual page for the command in the 'web' (HTML) format. A web browser will be used for that purpose. + diff --git a/Documentation/git-http-push.txt b/Documentation/git-http-push.txt index 143291d126..d69b20549b 100644 --- a/Documentation/git-http-push.txt +++ b/Documentation/git-http-push.txt @@ -15,8 +15,8 @@ DESCRIPTION Sends missing objects to remote repository, and updates the remote branch. -*NOTE*: This command is temporarily disabled if your cURL -library is older than 7.16, as the combination has been reported +*NOTE*: This command is temporarily disabled if your libcurl +is older than 7.16, as the combination has been reported not to work and sometimes corrupts repository. OPTIONS @@ -40,7 +40,8 @@ OPTIONS Report the list of objects being walked locally and the list of objects successfully sent to the remote repository. --d, -D:: +-d:: +-D:: Remove <ref> from remote repository. The specified branch cannot be the remote HEAD. If -d is specified the following other conditions must also be met: diff --git a/Documentation/git-init.txt b/Documentation/git-init.txt index c48b615da2..792643c809 100644 --- a/Documentation/git-init.txt +++ b/Documentation/git-init.txt @@ -16,7 +16,8 @@ OPTIONS -- --q, \--quiet:: +-q:: +--quiet:: Only print error and warning messages, all other output will be suppressed. diff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt index 11e6a81779..7da5b8d9a9 100644 --- a/Documentation/git-instaweb.txt +++ b/Documentation/git-instaweb.txt @@ -20,24 +20,29 @@ repository. OPTIONS ------- --l|--local:: +-l:: +--local:: Only bind the web server to the local IP (127.0.0.1). --d|--httpd:: +-d:: +--httpd:: The HTTP daemon command-line that will be executed. Command-line options may be specified here, and the configuration file will be added at the end of the command-line. Currently lighttpd, apache2 and webrick are supported. (Default: lighttpd) --m|--module-path:: +-m:: +--module-path:: The module path (only needed if httpd is Apache). (Default: /usr/lib/apache2/modules) --p|--port:: +-p:: +--port:: The port number to bind the httpd to. (Default: 1234) --b|--browser:: +-b:: +--browser:: The web browser that should be used to view the gitweb page. This will be passed to the 'git-web--browse' helper script along with the URL of the gitweb instance. See diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt index 1b0b212245..560594e25f 100644 --- a/Documentation/git-ls-files.txt +++ b/Documentation/git-ls-files.txt @@ -30,23 +30,29 @@ shown: OPTIONS ------- --c|--cached:: +-c:: +--cached:: Show cached files in the output (default) --d|--deleted:: +-d:: +--deleted:: Show deleted files in the output --m|--modified:: +-m:: +--modified:: Show modified files in the output --o|--others:: +-o:: +--others:: Show other files in the output --i|--ignored:: +-i:: +--ignored:: Show ignored files in the output. Note that this also reverses any exclude list present. --s|--stage:: +-s:: +--stage:: Show stage files in the output --directory:: @@ -56,10 +62,12 @@ OPTIONS --no-empty-directory:: Do not list empty directories. Has no effect without --directory. --u|--unmerged:: +-u:: +--unmerged:: Show unmerged files in the output (forces --stage) --k|--killed:: +-k:: +--killed:: Show files on the filesystem that need to be removed due to file/directory conflicts for checkout-index to succeed. @@ -67,11 +75,13 @@ OPTIONS -z:: \0 line termination on output. --x|--exclude=<pattern>:: +-x <pattern>:: +--exclude=<pattern>:: Skips files matching pattern. Note that pattern is a shell wildcard pattern. --X|--exclude-from=<file>:: +-X <file>:: +--exclude-from=<file>:: exclude patterns are read from <file>; 1 per line. --exclude-per-directory=<file>:: diff --git a/Documentation/git-ls-remote.txt b/Documentation/git-ls-remote.txt index 8ad7a94f95..f92f3ca186 100644 --- a/Documentation/git-ls-remote.txt +++ b/Documentation/git-ls-remote.txt @@ -20,13 +20,17 @@ commit IDs. OPTIONS ------- --h|--heads, -t|--tags:: +-h:: +--heads:: +-t:: +--tags:: Limit to only refs/heads and refs/tags, respectively. These options are _not_ mutually exclusive; when given both, references stored in refs/heads and refs/tags are displayed. --u <exec>, --upload-pack=<exec>:: +-u <exec>:: +--upload-pack=<exec>:: Specify the full path of linkgit:git-upload-pack[1] on the remote host. This allows listing references from repositories accessed via SSH and where the SSH daemon does not use the PATH configured by the diff --git a/Documentation/git-mv.txt b/Documentation/git-mv.txt index fb485de2c8..339190600a 100644 --- a/Documentation/git-mv.txt +++ b/Documentation/git-mv.txt @@ -34,7 +34,8 @@ OPTIONS condition. An error happens when a source is neither existing nor controlled by GIT, or when it would overwrite an existing file unless '-f' is given. --n, \--dry-run:: +-n:: +--dry-run:: Do nothing; only show what would happen diff --git a/Documentation/git-name-rev.txt b/Documentation/git-name-rev.txt index 12784d7372..ffac3f8f56 100644 --- a/Documentation/git-name-rev.txt +++ b/Documentation/git-name-rev.txt @@ -41,6 +41,13 @@ OPTIONS of linkgit:git-describe[1] more closely. This option cannot be combined with --stdin. +--no-undefined:: + Die with error code != 0 when a reference is undefined, + instead of printing `undefined`. + +--always:: + Show uniquely abbreviated commit object as fallback. + EXAMPLE ------- diff --git a/Documentation/git-pack-objects.txt b/Documentation/git-pack-objects.txt index d5a87effa4..f4d8d68e34 100644 --- a/Documentation/git-pack-objects.txt +++ b/Documentation/git-pack-objects.txt @@ -79,7 +79,8 @@ base-name:: reference was included in the resulting packfile. This can be useful to send new tags to native git clients. ---window=[N], --depth=[N]:: +--window=[N]:: +--depth=[N]:: These two options affect how the objects contained in the pack are stored using delta compression. The objects are first internally sorted by type, size and diff --git a/Documentation/git-pack-refs.txt b/Documentation/git-pack-refs.txt index fa48681374..c0718468d5 100644 --- a/Documentation/git-pack-refs.txt +++ b/Documentation/git-pack-refs.txt @@ -42,7 +42,7 @@ unpacked. OPTIONS ------- -\--all:: +--all:: The command by default packs all tags and refs that are already packed, and leaves other refs @@ -51,7 +51,7 @@ developed and packing their tips does not help performance. This option causes branch tips to be packed as well. Useful for a repository with many branches of historical interests. -\--no-prune:: +--no-prune:: The command usually removes loose refs under `$GIT_DIR/refs` hierarchy after packing them. This option tells it not to. diff --git a/Documentation/git-peek-remote.txt b/Documentation/git-peek-remote.txt index 56be1b6118..ffbf93a799 100644 --- a/Documentation/git-peek-remote.txt +++ b/Documentation/git-peek-remote.txt @@ -16,7 +16,7 @@ This command is deprecated; use `git-ls-remote` instead. OPTIONS ------- -\--upload-pack=<git-upload-pack>:: +--upload-pack=<git-upload-pack>:: Use this to specify the path to 'git-upload-pack' on the remote side, if it is not found on your $PATH. Some installations of sshd ignores the user's environment diff --git a/Documentation/git-prune.txt b/Documentation/git-prune.txt index 7283d07a0e..ec335d6fab 100644 --- a/Documentation/git-prune.txt +++ b/Documentation/git-prune.txt @@ -37,7 +37,7 @@ OPTIONS \--:: Do not interpret any more arguments as options. -\--expire <time>:: +--expire <time>:: Only expire loose objects older than <time>. <head>...:: diff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt index 5c522ced98..d0f1595f7e 100644 --- a/Documentation/git-pull.txt +++ b/Documentation/git-pull.txt @@ -30,7 +30,7 @@ include::merge-options.txt[] :git-pull: 1 -\--rebase:: +--rebase:: Instead of a merge, perform a rebase after fetching. If there is a remote ref for the upstream branch, and this branch was rebased since last fetched, the rebase uses that information @@ -38,13 +38,14 @@ include::merge-options.txt[] for branch `<name>`, set configuration `branch.<name>.rebase` to `true`. + -*NOTE:* This is a potentially _dangerous_ mode of operation. +[NOTE] +This is a potentially _dangerous_ mode of operation. It rewrites history, which does not bode well when you published that history already. Do *not* use this option unless you have read linkgit:git-rebase[1] carefully. -\--no-rebase:: - Override earlier \--rebase. +--no-rebase:: + Override earlier --rebase. include::fetch-options.txt[] diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt index 9d8c379717..f3d5d883a7 100644 --- a/Documentation/git-push.txt +++ b/Documentation/git-push.txt @@ -61,13 +61,14 @@ already exists on the remote side. This is the default operation mode if no explicit refspec is found (that is neither on the command line nor in any Push line of the corresponding remotes file---see below). -\--all:: +--all:: Instead of naming each ref to push, specifies that all refs under `$GIT_DIR/refs/heads/` be pushed. -\--mirror:: +--mirror:: Instead of naming each ref to push, specifies that all - refs under `$GIT_DIR/refs/heads/` and `$GIT_DIR/refs/tags/` + refs under `$GIT_DIR/refs/` (which includes but is not + limited to `refs/heads/`, `refs/remotes/`, and `refs/tags/`) be mirrored to the remote repository. Newly created local refs will be pushed to the remote end, locally updated refs will be force updated on the remote end, and deleted refs @@ -75,39 +76,42 @@ nor in any Push line of the corresponding remotes file---see below). if the configuration option `remote.<remote>.mirror` is set. -\--dry-run:: +--dry-run:: Do everything except actually send the updates. -\--tags:: +--tags:: All refs under `$GIT_DIR/refs/tags` are pushed, in addition to refspecs explicitly listed on the command line. -\--receive-pack=<git-receive-pack>:: +--receive-pack=<git-receive-pack>:: Path to the 'git-receive-pack' program on the remote end. Sometimes useful when pushing to a remote repository over ssh, and you do not have the program in a directory on the default $PATH. -\--exec=<git-receive-pack>:: +--exec=<git-receive-pack>:: Same as \--receive-pack=<git-receive-pack>. --f, \--force:: +-f:: +--force:: Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it. This flag disables the check. This can cause the remote repository to lose commits; use it with care. -\--repo=<repo>:: +--repo=<repo>:: When no repository is specified the command defaults to "origin"; this overrides it. -\--thin, \--no-thin:: +--thin:: +--no-thin:: These options are passed to `git-send-pack`. Thin transfer spends extra cycles to minimize the number of objects to be sent and meant to be used on slower connection. --v, \--verbose:: +-v:: +--verbose:: Run verbosely. include::urls-remotes.txt[] diff --git a/Documentation/git-quiltimport.txt b/Documentation/git-quiltimport.txt index d0bc182c74..0600379394 100644 --- a/Documentation/git-quiltimport.txt +++ b/Documentation/git-quiltimport.txt @@ -29,6 +29,8 @@ preserved as the 1 line subject in the git description. OPTIONS ------- + +-n:: --dry-run:: Walk through the patches in the series and warn if we cannot find all of the necessary information to commit diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt index cbe68352bf..58fb906ef6 100644 --- a/Documentation/git-read-tree.txt +++ b/Documentation/git-read-tree.txt @@ -50,6 +50,9 @@ OPTIONS trees that are not directly related to the current working tree status into a temporary index file. +-v:: + Show the progress of checking files out. + --trivial:: Restrict three-way merge by `git-read-tree` to happen only if there is no file-level merging required, instead diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index cc48beec75..7166414355 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -213,19 +213,22 @@ OPTIONS --skip:: Restart the rebasing process by skipping the current patch. --m, \--merge:: +-m:: +--merge:: Use merging strategies to rebase. When the recursive (default) merge strategy is used, this allows rebase to be aware of renames on the upstream side. --s <strategy>, \--strategy=<strategy>:: +-s <strategy>:: +--strategy=<strategy>:: Use the given merge strategy; can be supplied more than once to specify them in the order they should be tried. If there is no `-s` option, a built-in list of strategies is used instead (`git-merge-recursive` when merging a single head, `git-merge-octopus` otherwise). This implies --merge. --v, \--verbose:: +-v:: +--verbose:: Display a diffstat of what changed upstream since the last rebase. -C<n>:: @@ -238,12 +241,14 @@ OPTIONS This flag is passed to the `git-apply` program (see linkgit:git-apply[1]) that applies the patch. --i, \--interactive:: +-i:: +--interactive:: Make a list of the commits which are about to be rebased. Let the user edit that list before rebasing. This mode can also be used to split commits (see SPLITTING COMMITS below). --p, \--preserve-merges:: +-p:: +--preserve-merges:: Instead of ignoring merges, try to recreate them. This option only works in interactive mode. diff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt index e97dc09296..345943a264 100644 --- a/Documentation/git-remote.txt +++ b/Documentation/git-remote.txt @@ -9,11 +9,11 @@ git-remote - manage set of tracked repositories SYNOPSIS -------- [verse] -'git-remote' +'git-remote' [-v | --verbose] 'git-remote' add [-t <branch>] [-m <master>] [-f] [--mirror] <name> <url> 'git-remote' rm <name> -'git-remote' show <name> -'git-remote' prune <name> +'git-remote' show [-n] <name> +'git-remote' prune [-n | --dry-run] <name> 'git-remote' update [group] DESCRIPTION @@ -22,6 +22,14 @@ DESCRIPTION Manage the set of repositories ("remotes") whose branches you track. +OPTIONS +------- + +-v:: +--verbose:: + Be a little more verbose and show remote url after name. + + COMMANDS -------- @@ -72,9 +80,8 @@ These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>". + -With `-n` option, the remote heads are not confirmed first with `git -ls-remote <name>`; cached information is used instead. Use with -caution. +With `--dry-run` option, report what branches will be pruned, but do no +actually prune them. 'update':: diff --git a/Documentation/git-repack.txt b/Documentation/git-repack.txt index 793dccaa9d..04d6f1fbc4 100644 --- a/Documentation/git-repack.txt +++ b/Documentation/git-repack.txt @@ -73,7 +73,8 @@ OPTIONS this repository (or a direct copy of it) over HTTP or FTP. See gitlink:git-update-server-info[1]. ---window=[N], --depth=[N]:: +--window=[N]:: +--depth=[N]:: These two options affect how the objects contained in the pack are stored using delta compression. The objects are first internally sorted by type, size and optionally names and compared against the diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt index a0ef1fd550..9e273bc5a6 100644 --- a/Documentation/git-rev-parse.txt +++ b/Documentation/git-rev-parse.txt @@ -52,7 +52,8 @@ OPTIONS The parameter given must be usable as a single, valid object name. Otherwise barf and abort. --q, --quiet:: +-q:: +--quiet:: Only meaningful in `--verify` mode. Do not output an error message if the first argument is not a valid object name; instead exit with non-zero status silently. @@ -119,16 +120,19 @@ OPTIONS --is-bare-repository:: When the repository is bare print "true", otherwise "false". ---short, --short=number:: +--short:: +--short=number:: Instead of outputting the full SHA1 values of object names try to abbreviate them to a shorter unique name. When no length is specified 7 is used. The minimum length is 4. ---since=datestring, --after=datestring:: +--since=datestring:: +--after=datestring:: Parses the date string, and outputs corresponding --max-age= parameter for git-rev-list command. ---until=datestring, --before=datestring:: +--until=datestring:: +--before=datestring:: Parses the date string, and outputs corresponding --min-age= parameter for git-rev-list command. diff --git a/Documentation/git-revert.txt b/Documentation/git-revert.txt index 5e6adfcea3..5b49b81386 100644 --- a/Documentation/git-revert.txt +++ b/Documentation/git-revert.txt @@ -22,12 +22,14 @@ OPTIONS For a more complete list of ways to spell commit names, see "SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1]. --e|--edit:: +-e:: +--edit:: With this option, `git-revert` will let you edit the commit message prior to committing the revert. This is the default if you run the command from a terminal. --m parent-number|--mainline parent-number:: +-m parent-number:: +--mainline parent-number:: Usually you cannot revert a merge because you do not know which side of the merge should be considered the mainline. This option specifies the parent number (starting from 1) of @@ -38,7 +40,8 @@ OPTIONS With this option, `git-revert` will not start the commit message editor. --n|--no-commit:: +-n:: +--no-commit:: Usually the command automatically creates a commit with a commit log message stating which commit was reverted. This flag applies the change necessary to revert the @@ -51,7 +54,8 @@ OPTIONS This is useful when reverting more than one commits' effect to your working tree in a row. --s|--signoff:: +-s:: +--signoff:: Add Signed-off-by line at the end of the commit message. diff --git a/Documentation/git-rm.txt b/Documentation/git-rm.txt index da3fe59135..d88554bedc 100644 --- a/Documentation/git-rm.txt +++ b/Documentation/git-rm.txt @@ -38,7 +38,8 @@ OPTIONS -f:: Override the up-to-date check. --n, \--dry-run:: +-n:: +--dry-run:: Don't actually remove any file(s). Instead, just show if they exist in the index and would otherwise be removed by the command. @@ -52,15 +53,16 @@ OPTIONS the list of files, (useful when filenames might be mistaken for command-line options). -\--cached:: +--cached:: Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone. -\--ignore-unmatch:: +--ignore-unmatch:: Exit with a zero status even if no files matched. --q, \--quiet:: +-q:: +--quiet:: git-rm normally outputs one line (in the form of an "rm" command) for each file removed. This option suppresses that output. diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt index a29583796d..251d661afd 100644 --- a/Documentation/git-send-email.txt +++ b/Documentation/git-send-email.txt @@ -40,7 +40,8 @@ The --cc option must be repeated for each user you want on the cc list. Output of this command must be single email address per line. Default is the value of 'sendemail.cccmd' configuration value. ---chain-reply-to, --no-chain-reply-to:: +--chain-reply-to:: +--no-chain-reply-to:: If this is set, each email will be sent as a reply to the previous email sent. If disabled with "--no-chain-reply-to", all emails after the first will be sent as replies to the first email sent. When using @@ -65,7 +66,8 @@ The --cc option must be repeated for each user you want on the cc list. Only necessary if --compose is also set. If --compose is not set, this will be prompted for. ---signed-off-by-cc, --no-signed-off-by-cc:: +--signed-off-by-cc:: +--no-signed-off-by-cc:: If this is set, add emails found in Signed-off-by: or Cc: lines to the cc list. Default is the value of 'sendemail.signedoffcc' configuration value; @@ -141,7 +143,8 @@ user is prompted for a password while the input is masked for privacy. Only necessary if --compose is also set. If --compose is not set, this will be prompted for. ---suppress-from, --no-suppress-from:: +--suppress-from:: +--no-suppress-from:: If this is set, do not add the From: address to the cc: list. Default is the value of 'sendemail.suppressfrom' configuration value; if that is unspecified, default to --no-suppress-from. @@ -157,7 +160,8 @@ user is prompted for a password while the input is masked for privacy. if that is unspecified, default to 'self' if --suppress-from is specified, as well as 'sob' if --no-signed-off-cc is specified. ---thread, --no-thread:: +--thread:: +--no-thread:: If this is set, the In-Reply-To header will be set on each email sent. If disabled with "--no-thread", no emails will have the In-Reply-To header set. diff --git a/Documentation/git-send-pack.txt b/Documentation/git-send-pack.txt index 850c351dcd..ba2fdaec08 100644 --- a/Documentation/git-send-pack.txt +++ b/Documentation/git-send-pack.txt @@ -21,33 +21,33 @@ updates it from the current repository, sending named refs. OPTIONS ------- -\--receive-pack=<git-receive-pack>:: +--receive-pack=<git-receive-pack>:: Path to the 'git-receive-pack' program on the remote end. Sometimes useful when pushing to a remote repository over ssh, and you do not have the program in a directory on the default $PATH. -\--exec=<git-receive-pack>:: +--exec=<git-receive-pack>:: Same as \--receive-pack=<git-receive-pack>. -\--all:: +--all:: Instead of explicitly specifying which refs to update, update all heads that locally exist. -\--dry-run:: +--dry-run:: Do everything except actually send the updates. -\--force:: +--force:: Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it. This flag disables the check. What this means is that the remote repository can lose commits; use it with care. -\--verbose:: +--verbose:: Run verbosely. -\--thin:: +--thin:: Spend extra cycles to minimize the number of objects to be sent. Use it on slower connection. diff --git a/Documentation/git-shortlog.txt b/Documentation/git-shortlog.txt index 5079b568e6..daa64d4d81 100644 --- a/Documentation/git-shortlog.txt +++ b/Documentation/git-shortlog.txt @@ -22,17 +22,21 @@ Additionally, "[PATCH]" will be stripped from the commit description. OPTIONS ------- --h, \--help:: +-h:: +--help:: Print a short usage message and exit. --n, \--numbered:: +-n:: +--numbered:: Sort output according to the number of commits per author instead of author alphabetic order. --s, \--summary:: +-s:: +--summary:: Suppress commit description and provide a commit count summary only. --e, \--email:: +-e:: +--email:: Show the email address of each author. -w[<width>[,<indent1>[,<indent2>]]]:: diff --git a/Documentation/git-show-branch.txt b/Documentation/git-show-branch.txt index 32595ad549..de9e8f885f 100644 --- a/Documentation/git-show-branch.txt +++ b/Documentation/git-show-branch.txt @@ -38,10 +38,12 @@ OPTIONS branches under $GIT_DIR/refs/heads/topic, giving `topic/*` would show all of them. --r|--remotes:: +-r:: +--remotes:: Show the remote-tracking branches. --a|--all:: +-a:: +--all:: Show both remote-tracking branches and local branches. --current:: diff --git a/Documentation/git-show-ref.txt b/Documentation/git-show-ref.txt index a85332c363..6b99529b6b 100644 --- a/Documentation/git-show-ref.txt +++ b/Documentation/git-show-ref.txt @@ -29,22 +29,26 @@ in the `.git` directory. OPTIONS ------- --h, --head:: +-h:: +--head:: Show the HEAD reference. ---tags, --heads:: +--tags:: +--heads:: Limit to only "refs/heads" and "refs/tags", respectively. These options are not mutually exclusive; when given both, references stored in "refs/heads" and "refs/tags" are displayed. --d, --dereference:: +-d:: +--dereference:: Dereference tags into object IDs as well. They will be shown with "^{}" appended. --s, --hash:: +-s:: +--hash:: Only show the SHA1 hash, not the reference name. When also using --dereference the dereferenced tag will still be shown after the SHA1. @@ -55,17 +59,20 @@ OPTIONS Aside from returning an error code of 1, it will also print an error message if '--quiet' was not specified. ---abbrev, --abbrev=len:: +--abbrev:: +--abbrev=len:: Abbreviate the object name. When using `--hash`, you do not have to say `--hash --abbrev`; `--hash=len` would do. --q, --quiet:: +-q:: +--quiet:: Do not print any results to stdout. When combined with '--verify' this can be used to silently check if a reference exists. ---exclude-existing, --exclude-existing=pattern:: +--exclude-existing:: +--exclude-existing=pattern:: Make git-show-ref act as a filter that reads refs from stdin of the form "^(?:<anything>\s)?<refname>(?:\^\{\})?$" and performs the diff --git a/Documentation/git-stripspace.txt b/Documentation/git-stripspace.txt index 4883834a14..8421a39f26 100644 --- a/Documentation/git-stripspace.txt +++ b/Documentation/git-stripspace.txt @@ -16,7 +16,8 @@ Remove multiple empty lines, and empty lines at beginning and end. OPTIONS ------- --s|--strip-comments:: +-s:: +--strip-comments:: In addition to empty lines, also strip lines starting with '#'. <stream>:: diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index 139206f014..441ae1483b 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -61,10 +61,12 @@ summary:: OPTIONS ------- --q, --quiet:: +-q:: +--quiet:: Only print error messages. --b, --branch:: +-b:: +--branch:: Branch of repository to add as submodule. --cached:: @@ -72,7 +74,8 @@ OPTIONS commands typically use the commit found in the submodule HEAD, but with this option, the commit stored in the index is used instead. --n, --summary-limit:: +-n:: +--summary-limit:: This option is only valid for the summary command. Limit the summary size (number of commits shown in total). Giving 0 will disable the summary; a negative number means unlimited diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index f4cbd2f212..97bed54fbd 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -448,6 +448,8 @@ svn-remote.<name>.rewriteRoot:: the repository with a public http:// or svn:// URL in the metadata so users of it will see the public URL. +-- + Since the noMetadata, rewriteRoot, useSvnsyncProps and useSvmProps options all affect the metadata generated and used by git-svn; they *must* be set in the configuration file before any history is imported @@ -456,7 +458,6 @@ and these settings should never be changed once they are set. Additionally, only one of these four options can be used per-svn-remote section because they affect the 'git-svn-id:' metadata line. --- BASIC EXAMPLES -------------- diff --git a/Documentation/git-symbolic-ref.txt b/Documentation/git-symbolic-ref.txt index e9b996baa8..3d3a059c5e 100644 --- a/Documentation/git-symbolic-ref.txt +++ b/Documentation/git-symbolic-ref.txt @@ -26,7 +26,8 @@ a regular file whose contents is `ref: refs/heads/master`. OPTIONS ------- --q, --quiet:: +-q:: +--quiet:: Do not issue an error message if the <name> is not a symbolic ref but a detached HEAD; instead exit with non-zero status silently. diff --git a/Documentation/git-update-index.txt b/Documentation/git-update-index.txt index c703365186..bbb0a6ad57 100644 --- a/Documentation/git-update-index.txt +++ b/Documentation/git-update-index.txt @@ -76,7 +76,8 @@ OPTIONS --chmod=(+|-)x:: Set the execute permissions on the updated files. ---assume-unchanged, --no-assume-unchanged:: +--assume-unchanged:: +--no-assume-unchanged:: When these flags are specified, the object name recorded for the paths are not updated. Instead, these options sets and unsets the "assume unchanged" bit for the @@ -88,7 +89,8 @@ OPTIONS filesystem that has very slow lstat(2) system call (e.g. cifs). ---again, -g:: +-g:: +--again:: Runs `git-update-index` itself on the paths whose index entries are different from those from the `HEAD` commit. diff --git a/Documentation/git-update-ref.txt b/Documentation/git-update-ref.txt index 7f7e3d197b..bae2c8b7ec 100644 --- a/Documentation/git-update-ref.txt +++ b/Documentation/git-update-ref.txt @@ -7,7 +7,7 @@ git-update-ref - Update the object name stored in a ref safely SYNOPSIS -------- -'git-update-ref' [-m <reason>] (-d <ref> <oldvalue> | [--no-deref] <ref> <newvalue> [<oldvalue>]) +'git-update-ref' [-m <reason>] (-d <ref> [<oldvalue>] | [--no-deref] <ref> <newvalue> [<oldvalue>]) DESCRIPTION ----------- diff --git a/Documentation/git-update-server-info.txt b/Documentation/git-update-server-info.txt index aa1ee67cbb..d21be41d06 100644 --- a/Documentation/git-update-server-info.txt +++ b/Documentation/git-update-server-info.txt @@ -22,7 +22,8 @@ generates such auxiliary files. OPTIONS ------- --f|--force:: +-f:: +--force:: Update the info files from scratch. diff --git a/Documentation/git-upload-pack.txt b/Documentation/git-upload-pack.txt index 521da5b200..bac465e13f 100644 --- a/Documentation/git-upload-pack.txt +++ b/Documentation/git-upload-pack.txt @@ -24,10 +24,10 @@ repository. For push operations, see 'git-send-pack'. OPTIONS ------- -\--strict:: +--strict:: Do not try <directory>/.git/ if <directory> is no git directory. -\--timeout=<n>:: +--timeout=<n>:: Interrupt transfer after <n> seconds of inactivity. <directory>:: diff --git a/Documentation/git-web--browse.txt b/Documentation/git-web--browse.txt index f8d5fb11d1..e80a7c1cc4 100644 --- a/Documentation/git-web--browse.txt +++ b/Documentation/git-web--browse.txt @@ -31,14 +31,17 @@ Custom commands may also be specified. OPTIONS ------- --b BROWSER|--browser=BROWSER:: +-b BROWSER:: +--browser=BROWSER:: Use the specified BROWSER. It must be in the list of supported browsers. --t BROWSER|--tool=BROWSER:: +-t BROWSER:: +--tool=BROWSER:: Same as above. --c CONF.VAR|--config=CONF.VAR:: +-c CONF.VAR:: +--config=CONF.VAR:: CONF.VAR is looked up in the git config files. If it's set, then its value specify the browser that should be used. diff --git a/Documentation/git.txt b/Documentation/git.txt index cf67110a91..7414238fe5 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -43,6 +43,11 @@ unreleased) version of git, that is available from 'master' branch of the `git.git` repository. Documentation for older releases are available here: +* link:v1.5.6/git.html[documentation for release 1.5.6] + +* release notes for + link:RelNotes-1.5.6.txt[1.5.6], + * link:v1.5.5/git.html[documentation for release 1.5.5] * release notes for @@ -138,7 +143,8 @@ help ...'. environment variable. If no path is given 'git' will print the current setting and then exit. --p|--paginate:: +-p:: +--paginate:: Pipe all output into 'less' (or if set, $PAGER). --no-pager:: diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt index 471754eb12..6e67990f64 100644 --- a/Documentation/gitattributes.txt +++ b/Documentation/gitattributes.txt @@ -502,6 +502,12 @@ frotz unspecified Creating an archive ~~~~~~~~~~~~~~~~~~~ +`export-ignore` +^^^^^^^^^^^^^^^ + +Files and directories with the attribute `export-ignore` won't be added to +archive files. + `export-subst` ^^^^^^^^^^^^^^ diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt index 4f06ae0ed4..262a4f1626 100644 --- a/Documentation/githooks.txt +++ b/Documentation/githooks.txt @@ -17,7 +17,8 @@ Hooks are little scripts you can place in `$GIT_DIR/hooks` directory to trigger action at certain points. When `git-init` is run, a handful example hooks are copied in the `hooks` directory of the new repository, but by default they are -all disabled. To enable a hook, make it executable with `chmod +x`. +all disabled. To enable a hook, rename it by removing its `.sample` +suffix. This document describes the currently defined hooks. diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt index 14bcf91f40..f843f39bf2 100644 --- a/Documentation/gitk.txt +++ b/Documentation/gitk.txt @@ -25,7 +25,8 @@ To control which revisions to shown, the command takes options applicable to the linkgit:git-rev-list[1] command. This manual page describes only the most frequently used options. --n <number>, --max-count=<number>:: +-n <number>:: +--max-count=<number>:: Limits the number of commits to show. diff --git a/Documentation/gittutorial.txt b/Documentation/gittutorial.txt index 9563a632eb..d465aab64e 100644 --- a/Documentation/gittutorial.txt +++ b/Documentation/gittutorial.txt @@ -114,7 +114,7 @@ newly modified content to the index. Finally, commit your changes with: $ git commit ------------------------------------------------ -This will again prompt your for a message describing the change, and then +This will again prompt you for a message describing the change, and then record a new version of the project. Alternatively, instead of running `git add` beforehand, you can use diff --git a/Documentation/howto/setup-git-server-over-http.txt b/Documentation/howto/setup-git-server-over-http.txt index b7d09c1ec6..4032748608 100644 --- a/Documentation/howto/setup-git-server-over-http.txt +++ b/Documentation/howto/setup-git-server-over-http.txt @@ -186,7 +186,7 @@ Step 3: setup the client ------------------------ Make sure that you have HTTP support, i.e. your git was built with -curl (version more recent than 7.10). The command 'git http-push' with +libcurl (version more recent than 7.10). The command 'git http-push' with no argument should display a usage message. Then, add the following to your $HOME/.netrc (you can do without, but will be diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt index f37a776489..ffbc6e9861 100644 --- a/Documentation/merge-options.txt +++ b/Documentation/merge-options.txt @@ -2,10 +2,12 @@ Show a diffstat at the end of the merge. The diffstat is also controlled by the configuration option merge.stat. --n, \--no-stat:: +-n:: +--no-stat:: Do not show diffstat at the end of the merge. ---summary, \--no-summary:: +--summary:: +--no-summary:: Synonyms to --stat and --no-stat; these are deprecated and will be removed in the future. @@ -49,7 +51,8 @@ a fast-forward, only update the branch pointer. This is the default behavior of git-merge. --s <strategy>, \--strategy=<strategy>:: +-s <strategy>:: +--strategy=<strategy>:: Use the given merge strategy; can be supplied more than once to specify them in the order they should be tried. If there is no `-s` option, a built-in list of strategies diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt index e8bea3e18e..ec37555794 100644 --- a/Documentation/pretty-formats.txt +++ b/Documentation/pretty-formats.txt @@ -124,3 +124,25 @@ The placeholders are: - '%m': left, right or boundary mark - '%n': newline - '%x00': print a byte from a hex code + +* 'tformat:' ++ +The 'tformat:' format works exactly like 'format:', except that it +provides "terminator" semantics instead of "separator" semantics. In +other words, each commit has the message terminator character (usually a +newline) appended, rather than a separator placed between entries. +This means that the final entry of a single-line format will be properly +terminated with a new line, just as the "oneline" format does. +For example: ++ +--------------------- +$ git log -2 --pretty=format:%h 4da45bef \ + | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/' +4da45be +7134973 -- NO NEWLINE + +$ git log -2 --pretty=tformat:%h 4da45bef \ + | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/' +4da45be +7134973 +--------------------- diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index 05d5abec25..37dd1d61ea 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -129,7 +129,8 @@ limiting may be applied. -- --n 'number', --max-count='number':: +-n 'number':: +--max-count='number':: Limit the number of commits output. @@ -137,21 +138,25 @@ limiting may be applied. Skip 'number' commits before starting to show the commit output. ---since='date', --after='date':: +--since='date':: +--after='date':: Show commits more recent than a specific date. ---until='date', --before='date':: +--until='date':: +--before='date':: Show commits older than a specific date. ifdef::git-rev-list[] ---max-age='timestamp', --min-age='timestamp':: +--max-age='timestamp':: +--min-age='timestamp':: Limit the commits output to specified time range. endif::git-rev-list[] ---author='pattern', --committer='pattern':: +--author='pattern':: +--committer='pattern':: Limit the commits output to ones with author/committer header lines that match the specified pattern (regular expression). @@ -161,16 +166,19 @@ endif::git-rev-list[] Limit the commits output to ones with log message that matches the specified pattern (regular expression). --i, --regexp-ignore-case:: +-i:: +--regexp-ignore-case:: Match the regexp limiting patterns without regard to letters case. --E, --extended-regexp:: +-E:: +--extended-regexp:: Consider the limiting patterns to be extended regular expressions instead of the default basic regular expressions. --F, --fixed-strings:: +-F:: +--fixed-strings:: Consider the limiting patterns to be fixed strings (don't interpret pattern as a regular expression). @@ -239,7 +247,8 @@ from the other branch (for example, "3rd on b" may be cherry-picked from branch A). With this option, such pairs of commits are excluded from the output. --g, --walk-reflogs:: +-g:: +--walk-reflogs:: Instead of walking the commit ancestry chain, walk reflog entries from the most recent one to older ones. @@ -268,7 +277,8 @@ See also linkgit:git-reflog[1]. Output uninteresting commits at the boundary, which are usually not shown. ---dense, --sparse:: +--dense:: +--sparse:: When optional paths are given, the default behaviour ('--dense') is to only output commits that changes at least one of them, and also ignore diff --git a/Documentation/technical/api-builtin.txt b/Documentation/technical/api-builtin.txt index 52cdb4c520..7ede1e64e5 100644 --- a/Documentation/technical/api-builtin.txt +++ b/Documentation/technical/api-builtin.txt @@ -4,7 +4,7 @@ builtin API Adding a new built-in --------------------- -There are 4 things to do to add a bulit-in command implementation to +There are 4 things to do to add a built-in command implementation to git: . Define the implementation of the built-in command `foo` with @@ -18,8 +18,8 @@ git: defined in `git.c`. The entry should look like: { "foo", cmd_foo, <options> }, - - where options is the bitwise-or of: ++ +where options is the bitwise-or of: `RUN_SETUP`:: @@ -33,6 +33,12 @@ git: If the standard output is connected to a tty, spawn a pager and feed our output to it. +`NEED_WORK_TREE`:: + + Make sure there is a work tree, i.e. the command cannot act + on bare repositories. + This makes only sense when `RUN_SETUP` is also set. + . Add `builtin-foo.o` to `BUILTIN_OBJS` in `Makefile`. Additionally, if `foo` is a new command, there are 3 more things to do: @@ -41,8 +47,7 @@ Additionally, if `foo` is a new command, there are 3 more things to do: . Write documentation in `Documentation/git-foo.txt`. -. Add an entry for `git-foo` to the list at the end of - `Documentation/cmd-list.perl`. +. Add an entry for `git-foo` to `command-list.txt`. How a built-in is called diff --git a/Documentation/technical/api-parse-options.txt b/Documentation/technical/api-parse-options.txt index b7cda94f54..539863b1f9 100644 --- a/Documentation/technical/api-parse-options.txt +++ b/Documentation/technical/api-parse-options.txt @@ -1,6 +1,206 @@ parse-options API ================= -Talk about <parse-options.h> +The parse-options API is used to parse and massage options in git +and to provide a usage help with consistent look. -(Pierre) +Basics +------ + +The argument vector `argv[]` may usually contain mandatory or optional +'non-option arguments', e.g. a filename or a branch, and 'options'. +Options are optional arguments that start with a dash and +that allow to change the behavior of a command. + +* There are basically three types of options: + 'boolean' options, + options with (mandatory) 'arguments' and + options with 'optional arguments' + (i.e. a boolean option that can be adjusted). + +* There are basically two forms of options: + 'Short options' consist of one dash (`-`) and one alphanumeric + character. + 'Long options' begin with two dashes (`\--`) and some + alphanumeric characters. + +* Options are case-sensitive. + Please define 'lower-case long options' only. + +The parse-options API allows: + +* 'sticked' and 'separate form' of options with arguments. + `-oArg` is sticked, `-o Arg` is separate form. + `\--option=Arg` is sticked, `\--option Arg` is separate form. + +* Long options may be 'abbreviated', as long as the abbreviation + is unambiguous. + +* Short options may be bundled, e.g. `-a -b` can be specified as `-ab`. + +* Boolean long options can be 'negated' (or 'unset') by prepending + `no-`, e.g. `\--no-abbrev` instead of `\--abbrev`. + +* Options and non-option arguments can clearly be separated using the `\--` + option, e.g. `-a -b \--option \-- \--this-is-a-file` indicates that + `\--this-is-a-file` must not be processed as an option. + +Steps to parse options +---------------------- + +. `#include "parse-options.h"` + +. define a NULL-terminated + `static const char * const builtin_foo_usage[]` array + containing alternative usage strings + +. define `builtin_foo_options` array as described below + in section 'Data Structure'. + +. in `cmd_foo(int argc, const char **argv, const char *prefix)` + call + + argc = parse_options(argc, argv, builtin_foo_options, builtin_foo_usage, flags); ++ +`parse_options()` will filter out the processed options of `argv[]` and leave the +non-option arguments in `argv[]`. +`argc` is updated appropriately because of the assignment. ++ +Flags are the bitwise-or of: + +`PARSE_OPT_KEEP_DASHDASH`:: + Keep the `\--` that usually separates options from + non-option arguments. + +`PARSE_OPT_STOP_AT_NON_OPTION`:: + Usually the whole argument vector is massaged and reordered. + Using this flag, processing is stopped at the first non-option + argument. + +Data Structure +-------------- + +The main data structure is an array of the `option` struct, +say `static struct option builtin_add_options[]`. +There are some macros to easily define options: + +`OPT__ABBREV(&int_var)`:: + Add `\--abbrev[=<n>]`. + +`OPT__DRY_RUN(&int_var)`:: + Add `-n, \--dry-run`. + +`OPT__QUIET(&int_var)`:: + Add `-q, \--quiet`. + +`OPT__VERBOSE(&int_var)`:: + Add `-v, \--verbose`. + +`OPT_GROUP(description)`:: + Start an option group. `description` is a short string that + describes the group or an empty string. + Start the description with an upper-case letter. + +`OPT_BOOLEAN(short, long, &int_var, description)`:: + Introduce a boolean option. + `int_var` is incremented on each use. + +`OPT_BIT(short, long, &int_var, description, mask)`:: + Introduce a boolean option. + If used, `int_var` is bitwise-ored with `mask`. + +`OPT_SET_INT(short, long, &int_var, description, integer)`:: + Introduce a boolean option. + If used, set `int_var` to `integer`. + +`OPT_SET_PTR(short, long, &ptr_var, description, ptr)`:: + Introduce a boolean option. + If used, set `ptr_var` to `ptr`. + +`OPT_STRING(short, long, &str_var, arg_str, description)`:: + Introduce an option with string argument. + The string argument is put into `str_var`. + +`OPT_INTEGER(short, long, &int_var, description)`:: + Introduce an option with integer argument. + The integer is put into `int_var`. + +`OPT_DATE(short, long, &int_var, description)`:: + Introduce an option with date argument, see `approxidate()`. + The timestamp is put into `int_var`. + +`OPT_CALLBACK(short, long, &var, arg_str, description, func_ptr)`:: + Introduce an option with argument. + The argument will be fed into the function given by `func_ptr` + and the result will be put into `var`. + See 'Option Callbacks' below for a more elaborate description. + +`OPT_ARGUMENT(long, description)`:: + Introduce a long-option argument that will be kept in `argv[]`. + + +The last element of the array must be `OPT_END()`. + +If not stated otherwise, interpret the arguments as follows: + +* `short` is a character for the short option + (e.g. `\'e\'` for `-e`, use `0` to omit), + +* `long` is a string for the long option + (e.g. `"example"` for `\--example`, use `NULL` to omit), + +* `int_var` is an integer variable, + +* `str_var` is a string variable (`char *`), + +* `arg_str` is the string that is shown as argument + (e.g. `"branch"` will result in `<branch>`). + If set to `NULL`, three dots (`...`) will be displayed. + +* `description` is a short string to describe the effect of the option. + It shall begin with a lower-case letter and a full stop (`.`) shall be + omitted at the end. + +Option Callbacks +---------------- + +The function must be defined in this form: + + int func(const struct option *opt, const char *arg, int unset) + +The callback mechanism is as follows: + +* Inside `funct`, the only interesting member of the structure + given by `opt` is the void pointer `opt->value`. + `\*opt->value` will be the value that is saved into `var`, if you + use `OPT_CALLBACK()`. + For example, do `*(unsigned long *)opt->value = 42;` to get 42 + into an `unsigned long` variable. + +* Return value `0` indicates success and non-zero return + value will invoke `usage_with_options()` and, thus, die. + +* If the user negates the option, `arg` is `NULL` and `unset` is 1. + +Sophisticated option parsing +---------------------------- + +If you need, for example, option callbacks with optional arguments +or without arguments at all, or if you need other special cases, +that are not handled by the macros above, you need to specify the +members of the `option` structure manually. + +This is not covered in this document, but well documented +in `parse-options.h` itself. + +Examples +-------- + +See `test-parse-options.c` and +`builtin-add.c`, +`builtin-clone.c`, +`builtin-commit.c`, +`builtin-fetch.c`, +`builtin-fsck.c`, +`builtin-rm.c` +for real-world examples. diff --git a/Documentation/technical/api-path-list.txt b/Documentation/technical/api-path-list.txt index d077683171..9dbedd0a67 100644 --- a/Documentation/technical/api-path-list.txt +++ b/Documentation/technical/api-path-list.txt @@ -1,9 +1,126 @@ path-list API ============= -Talk about <path-list.h>, things like +The path_list API offers a data structure and functions to handle sorted +and unsorted string lists. -* it is not just paths but strings in general; -* the calling sequence. +The name is a bit misleading, a path_list may store not only paths but +strings in general. -(Dscho) +The caller: + +. Allocates and clears a `struct path_list` variable. + +. Initializes the members. You might want to set the flag `strdup_paths` + if the strings should be strdup()ed. For example, this is necessary + when you add something like git_path("..."), since that function returns + a static buffer that will change with the next call to git_path(). ++ +If you need something advanced, you can manually malloc() the `items` +member (you need this if you add things later) and you should set the +`nr` and `alloc` members in that case, too. + +. Adds new items to the list, using `path_list_append` or `path_list_insert`. + +. Can check if a string is in the list using `path_list_has_path` or + `unsorted_path_list_has_path` and get it from the list using + `path_list_lookup` for sorted lists. + +. Can sort an unsorted list using `sort_path_list`. + +. Finally it should free the list using `path_list_clear`. + +Example: + +---- +struct path_list list; +int i; + +memset(&list, 0, sizeof(struct path_list)); +path_list_append("foo", &list); +path_list_append("bar", &list); +for (i = 0; i < list.nr; i++) + printf("%s\n", list.items[i].path) +---- + +NOTE: It is more efficient to build an unsorted list and sort it +afterwards, instead of building a sorted list (`O(n log n)` instead of +`O(n^2)`). ++ +However, if you use the list to check if a certain string was added +already, you should not do that (using unsorted_path_list_has_path()), +because the complexity would be quadratic again (but with a worse factor). + +Functions +--------- + +* General ones (works with sorted and unsorted lists as well) + +`print_path_list`:: + + Dump a path_list to stdout, useful mainly for debugging purposes. It + can take an optional header argument and it writes out the + string-pointer pairs of the path_list, each one in its own line. + +`path_list_clear`:: + + Free a path_list. The `path` pointer of the items will be freed in case + the `strdup_paths` member of the path_list is set. The second parameter + controls if the `util` pointer of the items should be freed or not. + +* Functions for sorted lists only + +`path_list_has_path`:: + + Determine if the path_list has a given string or not. + +`path_list_insert`:: + + Insert a new element to the path_list. The returned pointer can be handy + if you want to write something to the `util` pointer of the + path_list_item containing the just added string. ++ +Since this function uses xrealloc() (which die()s if it fails) if the +list needs to grow, it is safe not to check the pointer. I.e. you may +write `path_list_insert(...)->util = ...;`. + +`path_list_lookup`:: + + Look up a given string in the path_list, returning the containing + path_list_item. If the string is not found, NULL is returned. + +* Functions for unsorted lists only + +`path_list_append`:: + + Append a new string to the end of the path_list. + +`sort_path_list`:: + + Make an unsorted list sorted. + +`unsorted_path_list_has_path`:: + + It's like `path_list_has_path()` but for unsorted lists. ++ +This function needs to look through all items, as opposed to its +counterpart for sorted lists, which performs a binary search. + +Data structures +--------------- + +* `struct path_list_item` + +Represents an item of the list. The `path` member is a pointer to the +string, and you may use the `util` member for any purpose, if you want. + +* `struct path_list` + +Represents the list itself. + +. The array of items are available via the `items` member. +. The `nr` member contains the number of items stored in the list. +. The `alloc` member is used to avoid reallocating at every insertion. + You should not tamper with it. +. Setting the `strdup_paths` member to 1 will strdup() the strings + before adding them, see above. diff --git a/Documentation/technical/api-run-command.txt b/Documentation/technical/api-run-command.txt index c364a22c8f..3e1342acf4 100644 --- a/Documentation/technical/api-run-command.txt +++ b/Documentation/technical/api-run-command.txt @@ -63,7 +63,7 @@ command to run in a sub-process. The caller: -1. allocates and clears (memset(&chld, '0', sizeof(chld));) a +1. allocates and clears (memset(&chld, 0, sizeof(chld));) a struct child_process variable; 2. initializes the members; 3. calls start_command(); @@ -136,7 +136,7 @@ to produce output that the caller reads. The caller: -1. allocates and clears (memset(&asy, '0', sizeof(asy));) a +1. allocates and clears (memset(&asy, 0, sizeof(asy));) a struct async variable; 2. initializes .proc and .data; 3. calls start_async(); diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt index bfde507e0e..64a820bf60 100644 --- a/Documentation/user-manual.txt +++ b/Documentation/user-manual.txt @@ -1254,16 +1254,15 @@ these three "file stages" represents a different version of the file: ------------------------------------------------- $ git show :1:file.txt # the file in a common ancestor of both branches -$ git show :2:file.txt # the version from HEAD, but including any - # nonconflicting changes from MERGE_HEAD -$ git show :3:file.txt # the version from MERGE_HEAD, but including any - # nonconflicting changes from HEAD. +$ git show :2:file.txt # the version from HEAD. +$ git show :3:file.txt # the version from MERGE_HEAD. ------------------------------------------------- -Since the stage 2 and stage 3 versions have already been updated with -nonconflicting changes, the only remaining differences between them are -the important ones; thus linkgit:git-diff[1] can use the information in -the index to show only those conflicts. +When you ask linkgit:git-diff[1] to show the conflicts, it runs a +three-way diff between the conflicted merge results in the work tree with +stages 2 and 3 to show only hunks whose contents come from both sides, +mixed (in other words, when a hunk's merge results come only from stage 2, +that part is not conflicting and is not shown. Same for stage 3). The diff above shows the differences between the working-tree version of file.txt and the stage 2 and stage 3 versions. So instead of preceding |