From: Junio C Hamano Date: Mon, 1 Feb 2010 20:41:31 +0000 (-0800) Subject: Merge branch 'sp/maint-fast-import-large-blob' into sp/fast-import-large-blob X-Git-Tag: v1.7.0-rc2~24^2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/844ad3d?hp=-c Merge branch 'sp/maint-fast-import-large-blob' into sp/fast-import-large-blob * sp/maint-fast-import-large-blob: fast-import: Stream very large blobs directly to pack bash: don't offer remote transport helpers as subcommands Conflicts: fast-import.c --- 844ad3d9a0418b4a3a6a944a50d65403121a0eb6 diff --combined Documentation/config.txt index 17901e244a,b16a20bc36..36ad992a56 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@@ -64,7 -64,7 +64,7 @@@ The values following the equals sign i a string, an integer, or a boolean. Boolean values may be given as yes/no, 0/1, true/false or on/off. Case is not significant in boolean values, when converting value to the canonical form using '--bool' type specifier; -'git-config' will ensure that the output is "true" or "false". +'git config' will ensure that the output is "true" or "false". String values may be entirely or partially enclosed in double quotes. You need to enclose variable values in double quotes if you want to @@@ -130,14 -130,6 +130,14 @@@ advice.*: Advice shown when linkgit:git-merge[1] refuses to merge to avoid overwritting local changes. Default: true. + resolveConflict:: + Advices shown by various commands when conflicts + prevent the operation from being performed. + Default: true. + implicitIdentity:: + Advice on how to set your identity configuration when + your information is guessed from the system username and + domain name. Default: true. -- core.fileMode:: @@@ -417,6 -409,20 +417,20 @@@ You probably do not need to adjust thi + Common unit suffixes of 'k', 'm', or 'g' are supported. + core.bigFileThreshold:: + Files larger than this size are stored deflated, without + attempting delta compression. Storing large files without + delta compression avoids excessive memory usage, at the + slight expense of increased disk usage. + + + Default is 512 MiB on all platforms. This should be reasonable + for most projects as source code and other text files can still + be delta compressed, but larger binary media files won't be. + + + Common unit suffixes of 'k', 'm', or 'g' are supported. + + + Currently only linkgit:git-fast-import[1] honors this setting. + core.excludesfile:: In addition to '.gitignore' (per-directory) and '.git/info/exclude', git looks into this file for patterns @@@ -450,8 -456,8 +464,8 @@@ core.pager: core.whitespace:: A comma separated list of common whitespace problems to - notice. 'git-diff' will use `color.diff.whitespace` to - highlight them, and 'git-apply --whitespace=error' will + notice. 'git diff' will use `color.diff.whitespace` to + highlight them, and 'git apply --whitespace=error' will consider them as errors. You can prefix `-` to disable any of them (e.g. `-trailing-space`): + @@@ -510,12 -516,8 +524,12 @@@ notes should be printed This setting defaults to "refs/notes/commits", and can be overridden by the `GIT_NOTES_REF` environment variable. +core.sparseCheckout:: + Enable "sparse checkout" feature. See section "Sparse checkout" in + linkgit:git-read-tree[1] for more information. + add.ignore-errors:: - Tells 'git-add' to continue adding files when some files cannot be + Tells 'git add' to continue adding files when some files cannot be added due to indexing errors. Equivalent to the '--ignore-errors' option of linkgit:git-add[1]. @@@ -537,19 -539,19 +551,19 @@@ executed from the top-level directory o not necessarily be the current directory. apply.ignorewhitespace:: - When set to 'change', tells 'git-apply' to ignore changes in + When set to 'change', tells 'git apply' to ignore changes in whitespace, in the same way as the '--ignore-space-change' option. - When set to one of: no, none, never, false tells 'git-apply' to + When set to one of: no, none, never, false tells 'git apply' to respect all whitespace differences. See linkgit:git-apply[1]. apply.whitespace:: - Tells 'git-apply' how to handle whitespaces, in the same way + Tells 'git apply' how to handle whitespaces, in the same way as the '--whitespace' option. See linkgit:git-apply[1]. branch.autosetupmerge:: - Tells 'git-branch' and 'git-checkout' to set up new branches + Tells 'git branch' and 'git checkout' to set up new branches so that linkgit:git-pull[1] will appropriately merge from the starting point branch. Note that even if this option is not set, this behavior can be chosen per-branch using the `--track` @@@ -560,7 -562,7 +574,7 @@@ branch. This option defaults to true. branch.autosetuprebase:: - When a new branch is created with 'git-branch' or 'git-checkout' + When a new branch is created with 'git branch' or 'git checkout' that tracks another branch, this variable tells git to set up pull to rebase instead of merge (see "branch..rebase"). When `never`, rebase is never automatically set to true. @@@ -575,24 -577,24 +589,24 @@@ This option defaults to never. branch..remote:: - When in branch , it tells 'git-fetch' and 'git-push' which + When in branch , it tells 'git fetch' and 'git push' which remote to fetch from/push to. It defaults to `origin` if no remote is configured. `origin` is also used if you are not on any branch. branch..merge:: Defines, together with branch..remote, the upstream branch - for the given branch. It tells 'git-fetch'/'git-pull' which - branch to merge and can also affect 'git-push' (see push.default). - When in branch , it tells 'git-fetch' the default + for the given branch. It tells 'git fetch'/'git pull' which + branch to merge and can also affect 'git push' (see push.default). + When in branch , it tells 'git fetch' the default refspec to be marked for merging in FETCH_HEAD. The value is handled like the remote part of a refspec, and must match a ref which is fetched from the remote given by "branch..remote". - The merge information is used by 'git-pull' (which at first calls - 'git-fetch') to lookup the default branch for merging. Without - this option, 'git-pull' defaults to merge the first refspec fetched. + The merge information is used by 'git pull' (which at first calls + 'git fetch') to lookup the default branch for merging. Without + this option, 'git pull' defaults to merge the first refspec fetched. Specify multiple values to get an octopus merge. - If you wish to setup 'git-pull' so that it merges into from + If you wish to setup 'git pull' so that it merges into from another branch in the local repository, you can point branch..merge to the desired branch, and use the special setting `.` (a period) for branch..remote. @@@ -664,6 -666,14 +678,6 @@@ color.grep: `never`), never. When set to `true` or `auto`, use color only when the output is written to the terminal. Defaults to `false`. -color.grep.external:: - The string value of this variable is passed to an external 'grep' - command as a command line option if match highlighting is turned - on. If set to an empty string, no option is passed at all, - turning off coloring for external 'grep' calls; this is the default. - For GNU grep, set it to `--color=always` to highlight matches even - when a pager is used. - color.grep.match:: Use customized color for matches. The value of this variable may be specified as in color.branch.. It is passed using @@@ -677,7 -687,7 +691,7 @@@ color.interactive: colors only when the output is to the terminal. Defaults to false. color.interactive.:: - Use customized color for 'git-add --interactive' + Use customized color for 'git add --interactive' output. `` may be `prompt`, `header`, `help` or `error`, for four distinct types of normal output from interactive commands. The values of these variables may be specified as @@@ -716,25 -726,20 +730,25 @@@ color.ui: terminal. When more specific variables of color.* are set, they always take precedence over this setting. Defaults to false. +commit.status:: + A boolean to enable/disable inclusion of status information in the + commit message template when using an editor to prepare the commit + message. Defaults to true. + commit.template:: Specify a file to use as the template for new commit messages. "{tilde}/" is expanded to the value of `$HOME` and "{tilde}user/" to the specified user's home directory. diff.autorefreshindex:: - When using 'git-diff' to compare with work tree + When using 'git diff' to compare with work tree files, do not consider stat-only change as changed. Instead, silently run `git update-index --refresh` to update the cached stat information for paths whose contents in the work tree match the contents in the index. This option defaults to true. Note that this - affects only 'git-diff' Porcelain, and not lower level - 'diff' commands such as 'git-diff-files'. + affects only 'git diff' Porcelain, and not lower level + 'diff' commands such as 'git diff-files'. diff.external:: If this config variable is set, diff generation is not @@@ -746,24 -751,24 +760,24 @@@ your files, you might want to use linkgit:gitattributes[5] instead. diff.mnemonicprefix:: - If set, 'git-diff' uses a prefix pair that is different from the + If set, 'git diff' uses a prefix pair that is different from the standard "a/" and "b/" depending on what is being compared. When this configuration is in effect, reverse diff output also swaps the order of the prefixes: -'git-diff';; +`git diff`;; compares the (i)ndex and the (w)ork tree; -'git-diff HEAD';; +`git diff HEAD`;; compares a (c)ommit and the (w)ork tree; -'git diff --cached';; +`git diff --cached`;; compares a (c)ommit and the (i)ndex; -'git-diff HEAD:file1 file2';; +`git diff HEAD:file1 file2`;; compares an (o)bject and a (w)ork tree entity; -'git diff --no-index a b';; +`git diff --no-index a b`;; compares two non-git things (1) and (2). diff.renameLimit:: The number of files to consider when performing the copy/rename - detection; equivalent to the 'git-diff' option '-l'. + detection; equivalent to the 'git diff' option '-l'. diff.renames:: Tells git to detect renames. If set to any boolean value, it @@@ -849,7 -854,7 +863,7 @@@ format.pretty: linkgit:git-whatchanged[1]. format.thread:: - The default threading style for 'git-format-patch'. Can be + The default threading style for 'git format-patch'. Can be a boolean value, or `shallow` or `deep`. `shallow` threading makes every mail a reply to the head of the series, where the head is chosen from the cover letter, the @@@ -867,7 -872,7 +881,7 @@@ format.signoff: gc.aggressiveWindow:: The window size parameter used in the delta compression - algorithm used by 'git-gc --aggressive'. This defaults + algorithm used by 'git gc --aggressive'. This defaults to 10. gc.auto:: @@@ -887,33 -892,33 +901,33 @@@ gc.packrefs: Running `git pack-refs` in a repository renders it unclonable by Git versions prior to 1.5.1.2 over dumb transports such as HTTP. This variable determines whether - 'git gc' runs `git pack-refs`. This can be set to "nobare" + 'git gc' runs `git pack-refs`. This can be set to `nobare` to enable it within all non-bare repos or it can be set to a boolean value. The default is `true`. gc.pruneexpire:: - When 'git-gc' is run, it will call 'prune --expire 2.weeks.ago'. + When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'. Override the grace period with this config variable. The value "now" may be used to disable this grace period and always prune unreachable objects immediately. gc.reflogexpire:: - 'git-reflog expire' removes reflog entries older than + 'git reflog expire' removes reflog entries older than this time; defaults to 90 days. gc.reflogexpireunreachable:: - 'git-reflog expire' removes reflog entries older than + 'git reflog expire' removes reflog entries older than this time and are not reachable from the current tip; defaults to 30 days. gc.rerereresolved:: Records of conflicted merge you resolved earlier are - kept for this many days when 'git-rerere gc' is run. + kept for this many days when 'git rerere gc' is run. The default is 60 days. See linkgit:git-rerere[1]. gc.rerereunresolved:: Records of conflicted merge you have not resolved are - kept for this many days when 'git-rerere gc' is run. + kept for this many days when 'git rerere gc' is run. The default is 15 days. See linkgit:git-rerere[1]. gitcvs.commitmsgannotation:: @@@ -1021,7 -1026,7 +1035,7 @@@ gui.spellingdictionary: off. gui.fastcopyblame:: - If true, 'git gui blame' uses '-C' instead of '-C -C' for original + If true, 'git gui blame' uses `-C` instead of `-C -C` for original location detection. It makes blame significantly faster on huge repositories at the expense of less thorough copy detection. @@@ -1145,12 -1150,6 +1159,12 @@@ http.maxRequests: How many HTTP requests to launch in parallel. Can be overridden by the 'GIT_HTTP_MAX_REQUESTS' environment variable. Default is 5. +http.minSessions:: + The number of curl sessions (counted across slots) to be kept across + requests. They will not be ended with curl_easy_cleanup() until + http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this + value will be capped at 1. Defaults to 1. + http.postBuffer:: Maximum size in bytes of the buffer used by smart HTTP transports when POSTing data to the remote system. @@@ -1180,7 -1179,7 +1194,7 @@@ i18n.commitEncoding: i18n.logOutputEncoding:: Character encoding the commit messages are converted to when - running 'git-log' and friends. + running 'git log' and friends. imap:: The configuration variables in the 'imap' section are described @@@ -1214,7 -1213,7 +1228,7 @@@ interactive.singlekey: log.date:: Set default date-time mode for the log command. Setting log.date - value is similar to using 'git-log'\'s --date option. The value is one of the + value is similar to using 'git log'\'s --date option. The value is one of the following alternatives: {relative,local,default,iso,rfc,short}. See linkgit:git-log[1]. @@@ -1480,10 -1479,6 +1494,10 @@@ remote..tagopt: Setting this value to \--no-tags disables automatic tag following when fetching from remote +remote..vcs:: + Setting this to a value will cause git to interact with + the remote with the git-remote- helper. + remotes.:: The list of remotes which are fetched by "git remote update ". See linkgit:git-remote[1]. diff --combined Documentation/git-fast-import.txt index ff4022c15f,79c5f69d42..3f4380eb28 --- a/Documentation/git-fast-import.txt +++ b/Documentation/git-fast-import.txt @@@ -15,7 -15,7 +15,7 @@@ DESCRIPTIO This program is usually not what the end user wants to run directly. Most end users want to use one of the existing frontend programs, which parses a specific type of foreign source and feeds the contents -stored there to 'git-fast-import'. +stored there to 'git fast-import'. fast-import reads a mixed command/data stream from standard input and writes one or more packfiles directly into the current repository. @@@ -24,7 -24,7 +24,7 @@@ updated branch and tag refs, fully upda with the newly imported data. The fast-import backend itself can import into an empty repository (one that -has already been initialized by 'git-init') or incrementally +has already been initialized by 'git init') or incrementally update an existing populated repository. Whether or not incremental imports are supported from a particular foreign source depends on the frontend program in use. @@@ -50,6 -50,12 +50,12 @@@ OPTION importers may wish to lower this, such as to ensure the resulting packfiles fit on CDs. + --big-file-threshold=:: + Maximum size of a blob that fast-import will attempt to + create a delta for, expressed in bytes. The default is 512m + (512 MiB). Some importers may wish to lower this on systems + with constrained memory. + --depth=:: Maximum delta depth, for blob and tree deltification. Default is 10. @@@ -75,20 -81,6 +81,20 @@@ set of marks. If a mark is defined to different values, the last file wins. +--relative-marks:: + After specifying --relative-marks= the paths specified + with --import-marks= and --export-marks= are relative + to an internal directory in the current repository. + In git-fast-import this means that the paths are relative + to the .git/info/fast-import directory. However, other + importers may use a different location. + +--no-relative-marks:: + Negates a previous --relative-marks. Allows for combining + relative and non-relative marks by interweaving + --(no-)-relative-marks= with the --(import|export)-marks= + options. + --export-pack-edges=:: After creating a packfile, print a line of data to listing the filename of the packfile and the last @@@ -96,7 -88,7 +102,7 @@@ This information may be useful after importing projects whose total object set exceeds the 4 GiB packfile limit, as these commits can be used as edge points during calls - to 'git-pack-objects'. + to 'git pack-objects'. --quiet:: Disable all non-fatal output, making fast-import silent when it @@@ -138,9 -130,9 +144,9 @@@ an ideal situation, given that most con Parallel Operation ------------------ -Like 'git-push' or 'git-fetch', imports handled by fast-import are safe to +Like 'git push' or 'git fetch', imports handled by fast-import are safe to run alongside parallel `git repack -a -d` or `git gc` invocations, -or any other Git operation (including 'git-prune', as loose objects +or any other Git operation (including 'git prune', as loose objects are never used by fast-import). fast-import does not lock the branch or tag refs it is actively importing. @@@ -234,7 -226,7 +240,7 @@@ variation in formatting will cause fast + An example value is ``Tue Feb 6 11:22:18 2007 -0500''. The Git parser is accurate, but a little on the lenient side. It is the -same parser used by 'git-am' when applying patches +same parser used by 'git am' when applying patches received from email. + Some malformed strings may be accepted as valid dates. In some of @@@ -270,7 -262,7 +276,7 @@@ timezone This particular format is supplied as its short to implement and may be useful to a process that wants to create a new commit right now, without needing to use a working directory or -'git-update-index'. +'git update-index'. + If separate `author` and `committer` commands are used in a `commit` the timestamps may not match, as the system clock will be polled @@@ -317,15 -309,6 +323,15 @@@ and control the current import process standard output. This command is optional and is not needed to perform an import. +`feature`:: + Require that fast-import supports the specified feature, or + abort if it does not. + +`option`:: + Specify any of the options listed under OPTIONS that do not + change stream semantic to suit the frontend's needs. This + command is optional and is not needed to perform an import. + `commit` ~~~~~~~~ Create or update a branch with a new commit, recording one logical @@@ -713,7 -696,7 +719,7 @@@ recommended, as the frontend does not ( complete set of bytes which normally goes into such a signature. If signing is required, create lightweight tags from within fast-import with `reset`, then create the annotated versions of those tags offline -with the standard 'git-tag' process. +with the standard 'git tag' process. `reset` ~~~~~~~ @@@ -869,62 -852,6 +875,62 @@@ Placing a `progress` command immediatel inform the reader when the `checkpoint` has been completed and it can safely access the refs that fast-import updated. +`feature` +~~~~~~~~~ +Require that fast-import supports the specified feature, or abort if +it does not. + +.... + 'feature' SP LF +.... + +The part of the command may be any string matching +^[a-zA-Z][a-zA-Z-]*$ and should be understood by fast-import. + +Feature work identical as their option counterparts with the +exception of the import-marks feature, see below. + +The following features are currently supported: + +* date-format +* import-marks +* export-marks +* relative-marks +* no-relative-marks +* force + +The import-marks behaves differently from when it is specified as +commandline option in that only one "feature import-marks" is allowed +per stream. Also, any --import-marks= specified on the commandline +will override those from the stream (if any). + +`option` +~~~~~~~~ +Processes the specified option so that git fast-import behaves in a +way that suits the frontend's needs. +Note that options specified by the frontend are overridden by any +options the user may specify to git fast-import itself. + +.... + 'option' SP