1. 16 7月, 2013 10 次提交
  2. 02 7月, 2013 1 次提交
    • J
      treat_directory(): do not declare submodules to be untracked · 26c986e1
      Junio C Hamano 提交于
      When the working tree walker encounters a directory, it asks the
      function treat_directory() if it should descend into it, show it as
      an untracked directory, or do something else.  When the directory is
      the top of the submodule working tree, we used to say "That is an
      untracked directory", which was bogus.
      
      It is an entity that is tracked in the index of the repository we
      are looking at, and that is not to be descended into it.  Return
      path_none, not path_untracked, to report that.
      
      The existing case that path_untracked is returned for a newly
      discovered submodule that is not tracked in the index (this only
      happens when DIR_NO_GITLINKS option is not used) is unchanged, but
      that is exactly because the submodule is not tracked in the index.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      26c986e1
  3. 03 6月, 2013 1 次提交
  4. 16 4月, 2013 14 次提交
    • K
      dir.c: git-status --ignored: don't scan the work tree twice · 0aaf62b6
      Karsten Blees 提交于
      'git-status --ignored' still scans the work tree twice to collect
      untracked and ignored files, respectively.
      
      fill_directory / read_directory already supports collecting untracked and
      ignored files in a single directory scan. However, the DIR_COLLECT_IGNORED
      flag to enable this has some git-add specific side-effects (e.g. it
      doesn't recurse into ignored directories, so listing ignored files with
      --untracked=all doesn't work).
      
      The DIR_SHOW_IGNORED flag doesn't list untracked files and returns ignored
      files in dir_struct.entries[] (instead of dir_struct.ignored[] as
      DIR_COLLECT_IGNORED). DIR_SHOW_IGNORED is used all throughout git.
      
      We don't want to break the existing API, so lets introduce a new flag
      DIR_SHOW_IGNORED_TOO that lists untracked as well as ignored files similar
      to DIR_COLLECT_FILES, but will recurse into sub-directories based on the
      other flags as DIR_SHOW_IGNORED does.
      
      In dir.c::read_directory_recursive, add ignored files to either
      dir_struct.entries[] or dir_struct.ignored[] based on the flags. Also move
      the DIR_COLLECT_IGNORED case here so that filling result lists is in a
      common place.
      
      In wt-status.c::wt_status_collect_untracked, use the new flag and read
      results from dir_struct.ignored[]. Remove the extra fill_directory call.
      
      builtin/check-ignore.c doesn't call fill_directory, setting the git-add
      specific DIR_COLLECT_IGNORED flag has no effect here. Remove for clarity.
      
      Update API documentation to reflect the changes.
      
      Performance: with this patch, 'git-status --ignored' is typically as fast
      as 'git-status'.
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0aaf62b6
    • K
      dir.c: git-status --ignored: don't scan the work tree three times · defd7c7b
      Karsten Blees 提交于
      'git-status --ignored' recursively scans directories up to three times:
      
       1. To collect untracked files.
      
       2. To collect ignored files.
      
       3. When collecting ignored files, to check that an untracked directory
          that potentially contains ignored files doesn't also contain untracked
          files (i.e. isn't already listed as untracked).
      
      Let's get rid of case 3 first.
      
      Currently, read_directory_recursive returns a boolean whether a directory
      contains the requested files or not (actually, it returns the number of
      files, but no caller actually needs that), and DIR_SHOW_IGNORED specifies
      what we're looking for.
      
      To be able to test for both untracked and ignored files in a single scan,
      we need to return a bit more info, and the result must be independent of
      the DIR_SHOW_IGNORED flag.
      
      Reuse the path_treatment enum as return value of read_directory_recursive.
      Split path_handled in two separate values path_excluded and path_untracked
      that don't change their meaning with the DIR_SHOW_IGNORED flag. We don't
      need an extra value path_untracked_and_excluded, as directories with both
      untracked and ignored files should be listed as untracked.
      
      Rename path_ignored to path_none for clarity (i.e. "don't treat that path"
      in contrast to "the path is ignored and should be treated according to
      DIR_SHOW_IGNORED").
      
      Replace enum directory_treatment with path_treatment. That's just another
      enum with the same meaning, no need to translate back and forth.
      
      In treat_directory, get rid of the extra read_directory_recursive call and
      all the DIR_SHOW_IGNORED-specific code.
      
      In read_directory_recursive, decide whether to dir_add_name path_excluded
      or path_untracked paths based on the DIR_SHOW_IGNORED flag.
      
      The return value of read_directory_recursive is the maximum path_treatment
      of all files and sub-directories. In the check_only case, abort when we've
      reached the most significant value (path_untracked).
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      defd7c7b
    • K
      dir.c: git-status: avoid is_excluded checks for tracked files · 8aaf8d77
      Karsten Blees 提交于
      Checking if a file is in the index is much faster (hashtable lookup) than
      checking if the file is excluded (linear search over exclude patterns).
      
      Skip is_excluded checks for files: move the cache_name_exists check from
      treat_file to treat_one_path and return early if the file is tracked.
      
      This can safely be done as all other code paths also return path_ignored
      for tracked files, and dir_add_ignored skips tracked files as well.
      
      There's just one line left in treat_file, so move this to treat_one_path
      as well.
      
      Here's some performance data for git-status from the linux and WebKit
      repos (best of 10 runs on a Debian Linux on SSD, core.preloadIndex=true):
      
             |    status      | status --ignored
             | linux | WebKit | linux | WebKit
      -------+-------+--------+-------+---------
      before | 0.218 |  1.583 | 0.321 |  2.579
      after  | 0.156 |  0.988 | 0.202 |  1.279
      gain   | 1.397 |  1.602 | 1.589 |  2.016
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      8aaf8d77
    • K
    • K
      dir.c: unify is_excluded and is_path_excluded APIs · 95c6f271
      Karsten Blees 提交于
      The is_excluded and is_path_excluded APIs are very similar, except for a
      few noteworthy differences:
      
      is_excluded doesn't handle ignored directories, results for paths within
      ignored directories are incorrect. This is probably based on the premise
      that recursive directory scans should stop at ignored directories, which
      is no longer true (in certain cases, read_directory_recursive currently
      calls is_excluded *and* is_path_excluded to get correct ignored state).
      
      is_excluded caches parsed .gitignore files of the last directory in struct
      dir_struct. If the directory changes, it finds a common parent directory
      and is very careful to drop only as much state as necessary. On the other
      hand, is_excluded will also read and parse .gitignore files in already
      ignored directories, which are completely irrelevant.
      
      is_path_excluded correctly handles ignored directories by checking if any
      component in the path is excluded. As it uses is_excluded internally, this
      unfortunately forces is_excluded to drop and re-read all .gitignore files,
      as there is no common parent directory for the root dir.
      
      is_path_excluded tracks state in a separate struct path_exclude_check,
      which is essentially a wrapper of dir_struct with two more fields. However,
      as is_path_excluded also modifies dir_struct, it is not possible to e.g.
      use multiple path_exclude_check structures with the same dir_struct in
      parallel. The additional structure just unnecessarily complicates the API.
      
      Teach is_excluded / prep_exclude about ignored directories: whenever
      entering a new directory, first check if the entire directory is excluded.
      Remember the excluded state in dir_struct. Don't traverse into already
      ignored directories (i.e. don't read irrelevant .gitignore files).
      
      Directories could also be excluded by exclude patterns specified on the
      command line or .git/info/exclude, so we cannot simply skip prep_exclude
      entirely if there's no .gitignore file name (dir_struct.exclude_per_dir).
      Move this check to just before actually reading the file.
      
      is_path_excluded is now equivalent to is_excluded, so we can simply
      redirect to it (the public API is cleaned up in the next patch).
      
      The performance impact of the additional ignored check per directory is
      hardly noticeable when reading directories recursively (e.g. 'git status').
      However, performance of git commands using the is_path_excluded API (e.g.
      'git ls-files --cached --ignored --exclude-standard') is greatly improved
      as this no longer re-reads .gitignore files on each call.
      
      Here's some performance data from the linux and WebKit repos (best of 10
      runs on a Debian Linux on SSD, core.preloadIndex=true):
      
             | ls-files -ci   |    status      | status --ignored
             | linux | WebKit | linux | WebKit | linux | WebKit
      -------+-------+--------+-------+--------+-------+---------
      before | 0.506 |  6.539 | 0.212 |  1.555 | 0.323 |  2.541
      after  | 0.080 |  1.191 | 0.218 |  1.583 | 0.321 |  2.579
      gain   | 6.325 |  5.490 | 0.972 |  0.982 | 1.006 |  0.985
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      95c6f271
    • K
      dir.c: move prep_exclude · 6cd5c582
      Karsten Blees 提交于
      Move prep_exclude in preparation for the next patch.
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      6cd5c582
    • K
    • K
      dir.c: git-clean -d -X: don't delete tracked directories · 5bd8e2d8
      Karsten Blees 提交于
      The notion of "ignored tracked" directories introduced in 721ac4ed "dir.c:
      Make git-status --ignored more consistent" has a few unwanted side effects:
      
       - git-clean -d -X: deletes ignored tracked directories. git-clean should
         never delete tracked content.
      
       - git-ls-files --ignored --other --directory: lists ignored tracked
         directories instead of "other" directories.
      
       - git-status --ignored: lists ignored tracked directories while contained
         files may be listed as modified. Paths listed by git-status should be
         disjoint (except in long format where a path may be listed in both the
         staged and unstaged section).
      
      Additionally, the current behaviour violates documentation in gitignore(5)
      ("Specifies intentionally *untracked* files to ignore") and Documentation/
      technical/api-directory-listing.txt ("DIR_SHOW_OTHER_DIRECTORIES: Include
      a directory that is *not tracked*.").
      
      In dir.c::treat_directory, remove the special handling of ignored tracked
      directories, so that the DIR_SHOW_OTHER_DIRECTORIES flag only affects
      "other" (i.e. untracked) directories. In dir.c::dir_add_name, check that
      added paths are untracked even if DIR_SHOW_IGNORED is set.
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5bd8e2d8
    • K
      dir.c: make 'git-status --ignored' work within leading directories · be8a84c5
      Karsten Blees 提交于
      'git-status --ignored path/' doesn't list ignored files and directories
      within 'path' if some component of 'path' is classified as untracked.
      
      Disable the DIR_SHOW_OTHER_DIRECTORIES flag while traversing leading
      directories. This prevents treat_leading_path() with DIR_SHOW_IGNORED flag
      from aborting at the top level untracked directory.
      
      As a side effect, this also eliminates a recursive directory scan per
      leading directory level, as treat_directory() can no longer call
      read_directory_recursive() when called from treat_leading_path().
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      be8a84c5
    • K
      dir.c: git-status --ignored: don't list empty directories as ignored · c94ab010
      Karsten Blees 提交于
      'git-status --ignored' lists empty untracked directories as ignored, even
      though they don't have any ignored files.
      
      When checking if a directory is already listed as untracked (i.e. shouldn't
      be listed as ignored as well), don't assume that the directory has only
      ignored files if it doesn't have untracked files, as the directory may be
      empty.
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c94ab010
    • K
      dir.c: git-ls-files --directories: don't hide empty directories · 184d2a8e
      Karsten Blees 提交于
      'git-ls-files --ignored --directories' hides empty directories even though
      --no-empty-directory was not specified.
      
      Treat the DIR_HIDE_EMPTY_DIRECTORIES flag independently from
      DIR_SHOW_IGNORED to make all git-ls-files options work as expected.
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      184d2a8e
    • K
      dir.c: git-status --ignored: don't list empty ignored directories · 0104c9e7
      Karsten Blees 提交于
      'git-status --ignored' lists ignored tracked directories without any
      ignored files if a tracked file happens to match an exclude pattern.
      
      Always exclude tracked files.
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0104c9e7
    • K
      dir.c: git-status --ignored: don't list files in ignored directories · 289ff559
      Karsten Blees 提交于
      'git-status --ignored' lists both the ignored directory and the ignored
      files if the files are in a tracked sub directory.
      
      When recursing into sub directories in read_directory_recursive, pass on
      the check_only parameter so that we don't accidentally add the files.
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      289ff559
    • K
      dir.c: git-status --ignored: don't drop ignored directories · 560bb7a7
      Karsten Blees 提交于
      'git-status --ignored' drops ignored directories if they contain untracked
      files in an untracked sub directory.
      
      Fix it by getting exact (recursive) excluded status in treat_directory.
      Signed-off-by: NKarsten Blees <blees@dcon.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      560bb7a7
  5. 15 4月, 2013 1 次提交
    • J
      config: allow inaccessible configuration under $HOME · 4698c8fe
      Jonathan Nieder 提交于
      The changes v1.7.12.1~2^2~4 (config: warn on inaccessible files,
      2012-08-21) and v1.8.1.1~22^2~2 (config: treat user and xdg config
      permission problems as errors, 2012-10-13) were intended to prevent
      important configuration (think "[transfer] fsckobjects") from being
      ignored when the configuration is unintentionally unreadable (for
      example with EIO on a flaky filesystem, or with ENOMEM due to a DoS
      attack).  Usually ~/.gitconfig and ~/.config/git are readable by the
      current user, and if they aren't then it would be easy to fix those
      permissions, so the damage from adding this check should have been
      minimal.
      
      Unfortunately the access() check often trips when git is being run as
      a server.  A daemon (such as inetd or git-daemon) starts as "root",
      creates a listening socket, and then drops privileges, meaning that
      when git commands are invoked they cannot access $HOME and die with
      
       fatal: unable to access '/root/.config/git/config': Permission denied
      
      Any patch to fix this would have one of three problems:
      
        1. We annoy sysadmins who need to take an extra step to handle HOME
           when dropping privileges (the current behavior, or any other
           proposal that they have to opt into).
      
        2. We annoy sysadmins who want to set HOME when dropping privileges,
           either by making what they want to do impossible, or making them
           set an extra variable or option to accomplish what used to work
           (e.g., a patch to git-daemon to set HOME when --user is passed).
      
        3. We loosen the check, so some cases which might be noteworthy are
           not caught.
      
      This patch is of type (3).
      
      Treat user and xdg configuration that are inaccessible due to
      permissions (EACCES) as though no user configuration was provided at
      all.
      
      An alternative method would be to check if $HOME is readable, but that
      would not help in cases where the user who dropped privileges had a
      globally readable HOME with only .config or .gitconfig being private.
      
      This does not change the behavior when /etc/gitconfig or .git/config
      is unreadable (since those are more serious configuration errors),
      nor when ~/.gitconfig or ~/.config/git is unreadable due to problems
      other than permissions.
      Signed-off-by: NJonathan Nieder <jrnieder@gmail.com>
      Improved-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      4698c8fe
  6. 05 4月, 2013 1 次提交
    • J
      rm: do not complain about d/f conflicts during deletion · 9a6728d4
      Jeff King 提交于
      If we used to have an index entry "d/f", but "d" has been
      replaced by a non-directory entry, the user may still want
      to run "git rm" to delete the stale index entry. They could
      use "git rm --cached" to just touch the index, but "git rm"
      should also work: we explicitly try to handle the case that
      the file has already been removed from the working tree.
      
      However, because unlinking "d/f" in this case will not yield
      ENOENT, but rather ENOTDIR, we do not notice that the file
      is already gone. Instead, we report it as an error.
      
      The simple solution is to treat ENOTDIR in this case exactly
      like ENOENT; all we want to know is whether the file is
      already gone, and if a leading path is no longer a
      directory, then by definition the sub-path is gone.
      Reported-by: Njpinheiro <7jpinheiro@gmail.com>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      9a6728d4
  7. 29 3月, 2013 3 次提交
    • J
      dir.c::match_pathname(): pay attention to the length of string parameters · ab3aebc1
      Jeff King 提交于
      This function takes two counted strings: a <pattern, patternlen> pair
      and a <pathname, pathlen> pair. But we end up feeding the result to
      fnmatch, which expects NUL-terminated strings.
      
      We can fix this by calling the fnmatch_icase_mem function, which
      handles re-allocating into a NUL-terminated string if necessary.
      
      While we're at it, we can avoid even calling fnmatch in some cases. In
      addition to patternlen, we get "prefix", the size of the pattern that
      contains no wildcard characters. We do a straight match of the prefix
      part first, and then use fnmatch to cover the rest. But if there are
      no wildcards in the pattern at all, we do not even need to call
      fnmatch; we would simply be comparing two empty strings.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      ab3aebc1
    • J
      dir.c::match_pathname(): adjust patternlen when shifting pattern · 982ac873
      Jeff King 提交于
      If we receive a pattern that starts with "/", we shift it
      forward to avoid looking at the "/" part. Since the prefix
      and patternlen parameters are counts of what is in the
      pattern, we must decrement them as we increment the pointer.
      
      We remembered to handle prefix, but not patternlen. This
      didn't cause any bugs, though, because the patternlen
      parameter is not actually used. Since it will be used in
      future patches, let's correct this oversight.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      982ac873
    • J
      dir.c::match_basename(): pay attention to the length of string parameters · 0b6e56df
      Junio C Hamano 提交于
      The function takes two counted strings (<basename, basenamelen> and
      <pattern, patternlen>) as parameters, together with prefix (the
      length of the prefix in pattern that is to be matched literally
      without globbing against the basename) and EXC_* flags that tells it
      how to match the pattern against the basename.
      
      However, it did not pay attention to the length of these counted
      strings.  Update them to do the following:
      
       * When the entire pattern is to be matched literally, the pattern
         matches the basename only when the lengths of them are the same,
         and they match up to that length.
      
       * When the pattern is "*" followed by a string to be matched
         literally, make sure that the basenamelen is equal or longer than
         the "literal" part of the pattern, and the tail of the basename
         string matches that literal part.
      
       * Otherwise, use the new fnmatch_icase_mem helper to make
         sure we only lookmake sure we use only look at the
         counted part of the strings.  Because these counted strings are
         full strings most of the time, we check for termination
         to avoid unnecessary allocation.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0b6e56df
  8. 08 1月, 2013 1 次提交
    • A
      status: always report ignored tracked directories · a45fb697
      Antoine Pelisse 提交于
      When enumerating paths that are ignored, paths the index knows
      about are not included in the result.  The "index knows about"
      check is done by consulting the name hash, not the actual
      contents of the index:
      
       - When core.ignorecase is false, directory names are not in the
         name hash, and ignored ones are shown as ignored (directories
         can never be tracked anyway).
      
       - When core.ignorecase is true, however, the name hash keeps
         track of the names of directories, in order to detect
         additions of the paths under different cases.  This causes
         ignored directories to be mistakenly excluded when
         enumerating ignored paths.
      
      Stop excluding directories that are in the name hash when
      looking for ignored files in dir_add_name(); the names that are
      actually in the index are excluded much earlier in the callchain
      in treat_file(), so this fix will not make them mistakenly
      identified as ignored.
      Signed-off-by: NAntoine Pelisse <apelisse@gmail.com>
      Reviewed-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      a45fb697
  9. 07 1月, 2013 4 次提交
    • A
      dir.c: improve docs for match_pathspec() and match_pathspec_depth() · 52ed1894
      Adam Spiers 提交于
      Fix a grammatical issue in the description of these functions, and
      make it more obvious how and why seen[] can be reused across multiple
      invocations.
      Signed-off-by: NAdam Spiers <git@adamspiers.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      52ed1894
    • A
      dir.c: provide clear_directory() for reclaiming dir_struct memory · 270be816
      Adam Spiers 提交于
      By the end of a directory traversal, a dir_struct instance will
      typically contains pointers to various data structures on the heap.
      clear_directory() provides a convenient way to reclaim that memory.
      Signed-off-by: NAdam Spiers <git@adamspiers.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      270be816
    • A
      dir.c: keep track of where patterns came from · c04318e4
      Adam Spiers 提交于
      For exclude patterns read in from files, the filename is stored in the
      exclude list, and the originating line number is stored in the
      individual exclude (counting starting at 1).
      
      For exclude patterns provided on the command line, a string describing
      the source of the patterns is stored in the exclude list, and the
      sequence number assigned to each exclude pattern is negative, with
      counting starting at -1.  So for example the 2nd pattern provided via
      --exclude would be numbered -2.  This allows any future consumers of
      that data to easily distinguish between exclude patterns from files
      vs. from the CLI.
      Signed-off-by: NAdam Spiers <git@adamspiers.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c04318e4
    • A
      dir.c: use a single struct exclude_list per source of excludes · c082df24
      Adam Spiers 提交于
      Previously each exclude_list could potentially contain patterns
      from multiple sources.  For example dir->exclude_list[EXC_FILE]
      would typically contain patterns from .git/info/exclude and
      core.excludesfile, and dir->exclude_list[EXC_DIRS] could contain
      patterns from multiple per-directory .gitignore files during
      directory traversal (i.e. when dir->exclude_stack was more than
      one item deep).
      
      We split these composite exclude_lists up into three groups of
      exclude_lists (EXC_CMDL / EXC_DIRS / EXC_FILE as before), so that each
      exclude_list now contains patterns from a single source.  This will
      allow us to cleanly track the origin of each pattern simply by adding
      a src field to struct exclude_list, rather than to struct exclude,
      which would make memory management of the source string tricky in the
      EXC_DIRS case where its contents are dynamically generated.
      
      Similarly, by moving the filebuf member from struct exclude_stack to
      struct exclude_list, it allows us to track and subsequently free
      memory buffers allocated during the parsing of all exclude files,
      rather than only tracking buffers allocated for files in the EXC_DIRS
      group.
      Signed-off-by: NAdam Spiers <git@adamspiers.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c082df24
  10. 02 1月, 2013 3 次提交
    • A
      dir.c: Make git-status --ignored more consistent · 721ac4ed
      Antoine Pelisse 提交于
      The current behavior of git-status is inconsistent and misleading.
      Especially when used with --untracked-files=all option:
      
       - files ignored in untracked directories will be missing from
         status output.
      
       - untracked files in committed yet ignored directories are also
         missing.
      
       - with --untracked-files=normal, untracked directories that
         contains only ignored files are dropped too.
      
      Make the behavior more consistent across all possible use cases:
      
       - "--ignored --untracked-files=normal" doesn't show each specific
         files but top directory.  It instead shows untracked directories
         that only contains ignored files, and ignored tracked directories
         with untracked files.
      
       - "--ignored --untracked-files=all" shows all ignored files, either
         because it's in an ignored directory (tracked or untracked), or
         because the file is explicitly ignored.
      Signed-off-by: NAntoine Pelisse <apelisse@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      721ac4ed
    • N
      wildmatch: support "no FNM_PATHNAME" mode · c41244e7
      Nguyễn Thái Ngọc Duy 提交于
      So far, wildmatch() has always honoured directory boundary and there
      was no way to turn it off. Make it behave more like fnmatch() by
      requiring all callers that want the FNM_PATHNAME behaviour to pass
      that in the equivalent flag WM_PATHNAME. Callers that do not specify
      WM_PATHNAME will get wildcards like ? and * in their patterns matched
      against '/', just like not passing FNM_PATHNAME to fnmatch().
      Signed-off-by: NNguyễn Thái Ngọc Duy <pclouds@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c41244e7
    • N
      wildmatch: rename constants and update prototype · 9b3497ca
      Nguyễn Thái Ngọc Duy 提交于
      - All exported constants now have a prefix WM_
      - Do not rely on FNM_* constants, use the WM_ counterparts
      - Remove TRUE and FALSE to follow Git's coding style
      - While at it, turn flags type from int to unsigned int
      - Add an (unused yet) argument to carry extra information
        so that we don't have to change the prototype again later
        when we need to pass other stuff to wildmatch
      Signed-off-by: NNguyễn Thái Ngọc Duy <pclouds@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      9b3497ca
  11. 29 12月, 2012 1 次提交