[PATCH 1 of 2] subrepo: don't exclude files in .hgignore when adding to git

Mathias De Maré mathias.demare at gmail.com
Tue Mar 3 11:39:45 CST 2015


On Tue, Mar 3, 2015 at 4:43 AM, Matt Harbison <mharbison72 at gmail.com> wrote:

> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1424984034 18000
> #      Thu Feb 26 15:53:54 2015 -0500
> # Node ID 72f885c8b7aff110a147cc7ff12f5951bf5aaf03
> # Parent  67952dc7a88faf32211e61b8f9606f62d271eaf3
> subrepo: don't exclude files in .hgignore when adding to git
>
> The previous test gave a false success because only an hg-ignored pattern
> was
> specified.  Therefore match.files() was empty, and it fell back to the
> files
> unknown to git.  The simplest fix is to always consider what is unknown to
> git,
> as well as anything specified explicitly.  Files that are ignored by git
> can
> only be introduced by an explicit mention in match.files().
>

This looks good to me.

Greetings,
Mathias

>
> diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py
> --- a/mercurial/subrepo.py
> +++ b/mercurial/subrepo.py
> @@ -1526,14 +1526,15 @@
>      def add(self, ui, match, prefix, explicitonly, **opts):
>          if self._gitmissing():
>              return []
> -        if match.files():
> -            files = match.files()
> -        else:
> -            (modified, added, removed,
> -             deleted, unknown, ignored, clean) = self.status(None)
> -            files = unknown
>
> -        files = [f for f in files if match(f)]
> +        (modified, added, removed,
> +         deleted, unknown, ignored, clean) = self.status(None)
> +
> +        # Unknown files not of interest will be rejected by the matcher
> +        files = unknown
> +        files.extend(match.files())
> +
> +        files = [f for f in sorted(set(files)) if match(f)]
>          for f in files:
>              exact = match.exact(f)
>              command = ["add"]
> diff --git a/tests/test-subrepo-git.t b/tests/test-subrepo-git.t
> --- a/tests/test-subrepo-git.t
> +++ b/tests/test-subrepo-git.t
> @@ -922,11 +922,11 @@
>    > *.python
>    > EOF
>    $ hg add .hgignore
> -  $ hg add --subrepos "glob:**.python"
> +  $ hg add --subrepos "glob:**.python" s/barfoo
>    adding s/snake.python (glob)
>    $ hg st --subrepos s
> +  A s/barfoo
>    A s/snake.python
> -  ? s/barfoo
>    ? s/c.c
>    ? s/cpp.cpp
>    ? s/foobar.orig
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20150303/5807fd45/attachment.html>


More information about the Mercurial-devel mailing list