Code

Merge branch 'maint-1.7.1' into maint-1.7.2
authorJunio C Hamano <gitster@pobox.com>
Thu, 2 Dec 2010 00:40:20 +0000 (16:40 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 2 Dec 2010 00:40:20 +0000 (16:40 -0800)
* maint-1.7.1:
  add: introduce add.ignoreerrors synonym for add.ignore-errors

1  2 
Documentation/config.txt
builtin/add.c

diff --combined Documentation/config.txt
index 1df0f654e65b3747979235f77dea5e8aa25f1a09,6a07fe60e726f95158f2a16a80a266bc5fbe2e7d..5506e31318517831c6f2143d7a8b01e46763da1a
@@@ -128,7 -128,7 +128,7 @@@ advice.*:
                when writing commit messages. Default: true.
        commitBeforeMerge::
                Advice shown when linkgit:git-merge[1] refuses to
 -              merge to avoid overwritting local changes.
 +              merge to avoid overwriting local changes.
                Default: true.
        resolveConflict::
                Advices shown by various commands when conflicts
@@@ -196,17 -196,20 +196,17 @@@ core.quotepath:
        quoted without `-z` regardless of the setting of this
        variable.
  
 -core.autocrlf::
 -      If true, makes git convert `CRLF` at the end of lines in text files to
 -      `LF` when reading from the work tree, and convert in reverse when
 -      writing to the work tree.  The variable can be set to
 -      'input', in which case the conversion happens only while
 -      reading from the work tree but files are written out to the work
 -      tree with `LF` at the end of lines.  A file is considered
 -      "text" (i.e. be subjected to the autocrlf mechanism) based on
 -      the file's `crlf` attribute, or if `crlf` is unspecified,
 -      based on the file's contents.  See linkgit:gitattributes[5].
 +core.eol::
 +      Sets the line ending type to use in the working directory for
 +      files that have the `text` property set.  Alternatives are
 +      'lf', 'crlf' and 'native', which uses the platform's native
 +      line ending.  The default value is `native`.  See
 +      linkgit:gitattributes[5] for more information on end-of-line
 +      conversion.
  
  core.safecrlf::
 -      If true, makes git check if converting `CRLF` as controlled by
 -      `core.autocrlf` is reversible.  Git will verify if a command
 +      If true, makes git check if converting `CRLF` is reversible when
 +      end-of-line conversion is active.  Git will verify if a command
        modifies a file in the work tree either directly or indirectly.
        For example, committing a file followed by checking out the
        same file should yield the original file in the work tree.  If
        irreversible conversion but continue the operation.
  +
  CRLF conversion bears a slight chance of corrupting data.
 -autocrlf=true will convert CRLF to LF during commit and LF to
 +When it is enabled, git will convert CRLF to LF during commit and LF to
  CRLF during checkout.  A file that contains a mixture of LF and
  CRLF before the commit cannot be recreated by git.  For text
  files this is the right thing to do: it corrects line endings
@@@ -240,25 -243,15 +240,25 @@@ converting CRLFs corrupts data
  +
  Note, this safety check does not mean that a checkout will generate a
  file identical to the original file for a different setting of
 -`core.autocrlf`, but only for the current one.  For example, a text
 -file with `LF` would be accepted with `core.autocrlf=input` and could
 -later be checked out with `core.autocrlf=true`, in which case the
 +`core.eol` and `core.autocrlf`, but only for the current one.  For
 +example, a text file with `LF` would be accepted with `core.eol=lf`
 +and could later be checked out with `core.eol=crlf`, in which case the
  resulting file would contain `CRLF`, although the original file
  contained `LF`.  However, in both work trees the line endings would be
  consistent, that is either all `LF` or all `CRLF`, but never mixed.  A
  file with mixed line endings would be reported by the `core.safecrlf`
  mechanism.
  
 +core.autocrlf::
 +      Setting this variable to "true" is almost the same as setting
 +      the `text` attribute to "auto" on all files except that text
 +      files are not guaranteed to be normalized: files that contain
 +      `CRLF` in the repository will not be touched.  Use this
 +      setting if you want to have `CRLF` line endings in your
 +      working directory even though the repository does not have
 +      normalized line endings.  This variable can be set to 'input',
 +      in which case no output conversion is performed.
 +
  core.symlinks::
        If false, symbolic links are checked out as small plain files that
        contain the link text. linkgit:git-update-index[1] and
@@@ -418,7 -411,7 +418,7 @@@ Common unit suffixes of 'k', 'm', or 'g
  
  core.deltaBaseCacheLimit::
        Maximum number of bytes to reserve for caching base objects
 -      that multiple deltafied objects reference.  By storing the
 +      that may be referenced by multiple deltified objects.  By storing the
        entire decompressed base objects in a cache Git is able
        to avoid unpacking and decompressing frequently used base
        objects multiple times.
@@@ -488,8 -481,6 +488,8 @@@ core.whitespace:
    error (enabled by default).
  * `indent-with-non-tab` treats a line that is indented with 8 or more
    space characters as an error (not enabled by default).
 +* `tab-in-indent` treats a tab character in the initial indent part of
 +  the line as an error (not enabled by default).
  * `blank-at-eof` treats blank lines added at the end of file as an error
    (enabled by default).
  * `trailing-space` is a short-hand to cover both `blank-at-eol` and
@@@ -539,9 -530,13 +539,13 @@@ core.sparseCheckout:
        linkgit:git-read-tree[1] for more information.
  
  add.ignore-errors::
+ add.ignoreErrors::
        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].
+       option of linkgit:git-add[1].  Older versions of git accept only
+       `add.ignore-errors`, which does not follow the usual naming
+       convention for configuration variables.  Newer versions of git
+       honor `add.ignoreErrors` as well.
  
  alias.*::
        Command aliases for the linkgit:git[1] command wrapper - e.g.
@@@ -563,7 -558,7 +567,7 @@@ not necessarily be the current director
  am.keepcr::
        If true, git-am will call git-mailsplit for patches in mbox format
        with parameter '--keep-cr'. In this case git-mailsplit will
 -      not remove `\r` from lines ending with `\r\n`. Can be overrriden
 +      not remove `\r` from lines ending with `\r\n`. Can be overridden
        by giving '--no-keep-cr' from the command line.
        See linkgit:git-am[1], linkgit:git-mailsplit[1].
  
@@@ -690,11 -685,6 +694,11 @@@ color.diff.<slot>:
        (highlighting whitespace errors). The values of these variables may be
        specified as in color.branch.<slot>.
  
 +color.decorate.<slot>::
 +      Use customized color for 'git log --decorate' output.  `<slot>` is one
 +      of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local
 +      branches, remote tracking branches, tags, stash and HEAD, respectively.
 +
  color.grep::
        When set to `always`, always highlight matches.  When `false` (or
        `never`), never.  When set to `true` or `auto`, use color only
@@@ -815,9 -805,6 +819,9 @@@ diff.mnemonicprefix:
  `git diff --no-index a b`;;
        compares two non-git things (1) and (2).
  
 +diff.noprefix::
 +      If set, 'git diff' does not show any source or destination prefix.
 +
  diff.renameLimit::
        The number of files to consider when performing the copy/rename
        detection; equivalent to the 'git diff' option '-l'.
@@@ -897,12 -884,6 +901,12 @@@ format.subjectprefix:
        The default for format-patch is to output files with the '[PATCH]'
        subject prefix. Use this variable to change that prefix.
  
 +format.signature::
 +      The default for format-patch is to output a signature containing
 +      the git version number. Use this variable to change that default.
 +      Set this variable to the empty string ("") to suppress
 +      signature generation.
 +
  format.suffix::
        The default for format-patch is to output files with the suffix
        `.patch`. Use this variable to change that suffix (make sure to
@@@ -963,19 -944,13 +967,19 @@@ gc.pruneexpire:
        unreachable objects immediately.
  
  gc.reflogexpire::
 +gc.<pattern>.reflogexpire::
        'git reflog expire' removes reflog entries older than
 -      this time; defaults to 90 days.
 +      this time; defaults to 90 days.  With "<pattern>" (e.g.
 +      "refs/stash") in the middle the setting applies only to
 +      the refs that match the <pattern>.
  
  gc.reflogexpireunreachable::
 +gc.<ref>.reflogexpireunreachable::
        'git reflog expire' removes reflog entries older than
        this time and are not reachable from the current tip;
 -      defaults to 30 days.
 +      defaults to 30 days.  With "<pattern>" (e.g. "refs/stash")
 +      in the middle, the setting applies only to the refs that
 +      match the <pattern>.
  
  gc.rerereresolved::
        Records of conflicted merge you resolved earlier are
@@@ -1000,15 -975,13 +1004,15 @@@ gitcvs.logfile:
        various stuff. See linkgit:git-cvsserver[1].
  
  gitcvs.usecrlfattr::
 -      If true, the server will look up the `crlf` attribute for
 -      files to determine the '-k' modes to use. If `crlf` is set,
 -      the '-k' mode will be left blank, so cvs clients will
 -      treat it as text. If `crlf` is explicitly unset, the file
 +      If true, the server will look up the end-of-line conversion
 +      attributes for files to determine the '-k' modes to use. If
 +      the attributes force git to treat a file as text,
 +      the '-k' mode will be left blank so CVS clients will
 +      treat it as text. If they suppress text conversion, the file
        will be set with '-kb' mode, which suppresses any newline munging
 -      the client might otherwise do. If `crlf` is not specified,
 -      then 'gitcvs.allbinary' is used. See linkgit:gitattributes[5].
 +      the client might otherwise do. If the attributes do not allow
 +      the file type to be determined, then 'gitcvs.allbinary' is
 +      used. See linkgit:gitattributes[5].
  
  gitcvs.allbinary::
        This is used if 'gitcvs.usecrlfattr' does not resolve
@@@ -1276,9 -1249,7 +1280,9 @@@ instaweb.local:
        be bound to the local IP (127.0.0.1).
  
  instaweb.modulepath::
 -      The module path for an apache httpd used by linkgit:git-instaweb[1].
 +      The default module path for linkgit:git-instaweb[1] to use
 +      instead of /usr/lib/apache2/modules.  Only used if httpd
 +      is Apache.
  
  instaweb.port::
        The port number to bind the gitweb httpd to. See
@@@ -1297,13 -1268,6 +1301,13 @@@ log.date:
        following alternatives: {relative,local,default,iso,rfc,short}.
        See linkgit:git-log[1].
  
 +log.decorate::
 +      Print out the ref names of any commits that are shown by the log
 +      command. If 'short' is specified, the ref name prefixes 'refs/heads/',
 +      'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is
 +      specified, the full ref name (including prefix) will be printed.
 +      This is the same as the log commands '--decorate' option.
 +
  log.showroot::
        If true, the initial commit will be shown as a big creation event.
        This is equivalent to a diff against an empty tree.
@@@ -1502,16 -1466,6 +1506,16 @@@ pager.<cmd>:
        it takes precedence over this option.  To disable pagination for
        all commands, set `core.pager` or `GIT_PAGER` to `cat`.
  
 +pretty.<name>::
 +      Alias for a --pretty= format string, as specified in
 +      linkgit:git-log[1]. Any aliases defined here can be used just
 +      as the built-in pretty formats could. For example,
 +      running `git config pretty.changelog "format:{asterisk} %H %s"`
 +      would cause the invocation `git log --pretty=changelog`
 +      to be equivalent to running `git log "--pretty=format:{asterisk} %H %s"`.
 +      Note that an alias with the same name as a built-in format
 +      will be silently ignored.
 +
  pull.octopus::
        The default merge strategy to use when pulling multiple branches
        at once.
@@@ -1561,10 -1515,6 +1565,10 @@@ receive.denyDeletes:
        If set to true, git-receive-pack will deny a ref update that deletes
        the ref. Use this to prevent such a ref deletion via a push.
  
 +receive.denyDeleteCurrent::
 +      If set to true, git-receive-pack will deny a ref update that
 +      deletes the currently checked out branch of a non-bare repository.
 +
  receive.denyCurrentBranch::
        If set to true or "refuse", git-receive-pack will deny a ref update
        to the currently checked out branch of a non-bare repository.
@@@ -1628,11 -1578,7 +1632,11 @@@ remote.<name>.uploadpack:
  
  remote.<name>.tagopt::
        Setting this value to \--no-tags disables automatic tag following when
 -      fetching from remote <name>
 +      fetching from remote <name>. Setting it to \--tags will fetch every
 +      tag from remote <name>, even if they are not reachable from remote
 +      branch heads. Passing these flags directly to linkgit:git-fetch[1] can
 +      override this setting. See options \--tags and \--no-tags of
 +      linkgit:git-fetch[1].
  
  remote.<name>.vcs::
        Setting this to a value <vcs> will cause git to interact with
diff --combined builtin/add.c
index 56a4e0af6b35ea9f6d86accad27a1c87bc5ad0d9,51eeabad867ee1e271d07d41dcb031e2c98cbf9f..3a5fca51590db53747f8712f733aa01e5840d8fb
@@@ -261,14 -261,12 +261,14 @@@ static int edit_patch(int argc, const c
  {
        char *file = xstrdup(git_path("ADD_EDIT.patch"));
        const char *apply_argv[] = { "apply", "--recount", "--cached",
 -              file, NULL };
 +              NULL, NULL };
        struct child_process child;
        struct rev_info rev;
        int out;
        struct stat st;
  
 +      apply_argv[3] = file;
 +
        git_config(git_diff_basic_config, NULL); /* no "diff" UI options */
  
        if (read_cache() < 0)
@@@ -310,7 -308,7 +310,7 @@@ static const char ignore_error[] 
  "The following paths are ignored by one of your .gitignore files:\n";
  
  static int verbose = 0, show_only = 0, ignored_too = 0, refresh_only = 0;
 -static int ignore_add_errors, addremove, intent_to_add;
 +static int ignore_add_errors, addremove, intent_to_add, ignore_missing = 0;
  
  static struct option builtin_add_options[] = {
        OPT__DRY_RUN(&show_only),
        OPT_BOOLEAN('A', "all", &addremove, "add all, noticing removal of tracked files"),
        OPT_BOOLEAN( 0 , "refresh", &refresh_only, "don't add, only refresh the index"),
        OPT_BOOLEAN( 0 , "ignore-errors", &ignore_add_errors, "just skip files which cannot be added because of errors"),
 +      OPT_BOOLEAN( 0 , "ignore-missing", &ignore_missing, "check if - even missing - files are ignored in dry run"),
        OPT_END(),
  };
  
  static int add_config(const char *var, const char *value, void *cb)
  {
-       if (!strcasecmp(var, "add.ignore-errors")) {
+       if (!strcasecmp(var, "add.ignoreerrors") ||
+           !strcasecmp(var, "add.ignore-errors")) {
                ignore_add_errors = git_config_bool(var, value);
                return 0;
        }
@@@ -386,8 -384,6 +387,8 @@@ int cmd_add(int argc, const char **argv
  
        if (addremove && take_worktree_changes)
                die("-A and -u are mutually incompatible");
 +      if (!show_only && ignore_missing)
 +              die("Option --ignore-missing can only be used together with --dry-run");
        if ((addremove || take_worktree_changes) && !argc) {
                static const char *here[2] = { ".", NULL };
                argc = 1;
                        seen = find_used_pathspec(pathspec);
                for (i = 0; pathspec[i]; i++) {
                        if (!seen[i] && pathspec[i][0]
 -                          && !file_exists(pathspec[i]))
 -                              die("pathspec '%s' did not match any files",
 -                                  pathspec[i]);
 +                          && !file_exists(pathspec[i])) {
 +                              if (ignore_missing) {
 +                                      if (excluded(&dir, pathspec[i], DT_UNKNOWN))
 +                                              dir_add_ignored(&dir, pathspec[i], strlen(pathspec[i]));
 +                              } else
 +                                      die("pathspec '%s' did not match any files",
 +                                          pathspec[i]);
 +                      }
                }
                free(seen);
        }