On Wed, Nov 16, 2016 at 04:30:55PM +0000, Julian Foad wrote:
> On 07/11/16, Patrick Steinhardt wrote:
> > attached is a patch that fixes a test for Git mirrors. The error
> > results from the fact that Git does not track empty directories,
> > which one test relies upon.
> > As we're already doing some path processing for the missing
> > directories and as we're also creating directories in the other
> > import tests, I think this is the most sensible place to fix the
> > issue. For Subversion working copies it becomes a no-op anyway as
> > the directories already exist.
> I just took a quick look at this. Your patch is of a kind which would
> have to be repeated for each new test that uses the same approach. It
> also seems a bit redundant: that small extra bit of code is almost
> enough code to create the whole tree from scratch.
> It seems to me that storing what is supposed to be a plain unversioned
> disk tree within our Subversion versioned tree isn't the right approach.
> Instead I think it would be better to store the import data tree as a
> Python data structure within the test and create it at run time. If
> there isn't already a handy function for doing this, there should be.
> Something like this:
> Index: subversion/tests/cmdline/import_tests.py
> --- subversion/tests/cmdline/import_tests.py (revision 1767744)
> +++ subversion/tests/cmdline/import_tests.py (working copy)
> @@ -446,8 +446,8 @@ def import_inherited_ignores(sbox):
> # DIR7
> # file7.foo
> # DIR8.noo
> - import_tree_dir = os.path.join(os.path.dirname(sys.argv),
> - 'import_tests_data', 'import_tree')
> + import_tree_path = 'import_tree'
> + import_tree_dir = os.path.join(sbox.wc_dir, import_tree_path)
> # Relative WC paths of the imported tree.
> dir1_path = os.path.join('DIR1.noo')
> @@ -466,6 +466,31 @@ def import_inherited_ignores(sbox):
> file7_path = os.path.join('DIR6', 'DIR7', 'file7.foo')
> dir8_path = os.path.join('DIR6', 'DIR7', 'DIR8.noo')
> + import_dirs = [os.path.join(import_tree_path, p) for p in [
> + dir1_path,
> + dir2_path,
> + dir3_path,
> + dir4_path,
> + dir5_path,
> + dir6_path,
> + dir7_path,
> + dir8_path,
> + ]]
> + import_files = [os.path.join(import_tree_path, p) for p in [
> + file1_path,
> + file2_path,
> + file3_path,
> + file4_path,
> + file5_path,
> + file6_path,
> + file7_path,
> + ]]
> + sbox.simple_mkdir(import_tree_path)
> + sbox.simple_mkdir(*[svntest.wc.to_relpath(p) for p in import_dirs])
> + sbox.simple_add_text('A file',
> + *[svntest.wc.to_relpath(p) for p in import_files])
> # Import the tree to ^/A/B/E.
> # We should not see any *.noo paths because those are blocked at the
> # root of the repository by the svn:global-ignores property. Likewise
> svn rm subversion/tests/cmdline/import_tests_data
> Does that work for you?
It certainly would, yes. I opted for the other path as Git
mirrors are not really something Subversion developers care
about, so I wanted to keep the patch as small as possible. If
your approach is preferred, though, I don't mind to take that one
Received on 2016-11-21 12:08:16 CET