Origin: commit, https://code.launchpad.net/~jelmer/brz/git-wt-reference, revision: 7268
Author: Jelmer Vernooĳ <jelmer@jelmer.uk>
Bug-Debian: http://bugs.debian.org/921240
Last-Update: 2019-02-05
Applied-Upstream: no
X-Bzr-Revision-Id: jelmer@jelmer.uk-20190205040002-ndgkx17tef7uhdg8

=== modified file 'breezy/git/tests/test_workingtree.py'
--- old/breezy/git/tests/test_workingtree.py	2018-11-17 16:19:11 +0000
+++ new/breezy/git/tests/test_workingtree.py	2019-02-04 17:10:54 +0000
@@ -91,6 +91,29 @@
         self.tree._ignoremanager = None
         self.assertTrue(self.tree.is_ignored('a'))
 
+    def test_add_submodule_dir(self):
+        subtree = self.make_branch_and_tree('asub', format='git')
+        subtree.commit('Empty commit')
+        self.tree.add(['asub'])
+        with self.tree.lock_read():
+            entry = self.tree.index[b'asub']
+            self.assertEqual(entry.mode, S_IFGITLINK)
+        self.assertEqual([], list(subtree.unknowns()))
+
+    def test_add_submodule_file(self):
+        os.mkdir('.git/modules')
+        subbranch = self.make_branch('.git/modules/asub', format='git-bare')
+        os.mkdir('asub')
+        with open('asub/.git', 'w') as f:
+            f.write('gitdir: ../.git/modules/asub\n')
+        subtree = _mod_workingtree.WorkingTree.open('asub')
+        subtree.commit('Empty commit')
+        self.tree.add(['asub'])
+        with self.tree.lock_read():
+            entry = self.tree.index[b'asub']
+            self.assertEqual(entry.mode, S_IFGITLINK)
+        self.assertEqual([], list(subtree.unknowns()))
+
 
 class GitWorkingTreeFileTests(TestCaseWithTransport):
 

=== modified file 'breezy/git/workingtree.py'
--- old/breezy/git/workingtree.py	2018-11-21 03:20:30 +0000
+++ new/breezy/git/workingtree.py	2019-02-05 04:00:02 +0000
@@ -536,13 +536,17 @@
                     if not self._has_dir(relpath):
                         dirnames.remove(name)
             for name in filenames:
-                if not self.mapping.is_special_file(name):
-                    yp = os.path.join(dir_relpath, name)
-                    try:
-                        yield yp.decode(osutils._fs_enc)
-                    except UnicodeDecodeError:
-                        raise errors.BadFilenameEncoding(
-                            yp, osutils._fs_enc)
+                if self.mapping.is_special_file(name):
+                    continue
+                if self.controldir.is_control_filename(
+                        name.decode(osutils._fs_enc, 'replace')):
+                    continue
+                yp = os.path.join(dir_relpath, name)
+                try:
+                    yield yp.decode(osutils._fs_enc)
+                except UnicodeDecodeError:
+                    raise errors.BadFilenameEncoding(
+                        yp, osutils._fs_enc)
 
     def extras(self):
         """Yield all unversioned files in this WorkingTree.

=== modified file 'doc/en/release-notes/brz-3.0.txt'
--- old/doc/en/release-notes/brz-3.0.txt	2019-02-02 22:23:40 +0000
+++ new/doc/en/release-notes/brz-3.0.txt	2019-02-04 17:13:25 +0000
@@ -224,6 +224,9 @@
   needed for backwards compatibility with Bazaar.
   (Jelmer Vernooĳ, #1803845)
 
+* Don't report .git files as unknown files.
+  (Jelmer Vernooĳ, Debian Bug #921240)
+
 Documentation
 *************
 

