# # # patch "cmd_ws_commit.cc" # from [fea44395b7bc5c218e9e4e12beb3e22344decc91] # to [e92c5f0e09a2ff820ccabfb65ce89707fcd8d771] # # patch "tests/import/__driver__.lua" # from [ebc432b08f9484897d47a577db5c6ae29b663f0d] # to [41e1d2848c3b4dd356da9e9dfb308d7dc3de0003] # ============================================================ --- cmd_ws_commit.cc fea44395b7bc5c218e9e4e12beb3e22344decc91 +++ cmd_ws_commit.cc e92c5f0e09a2ff820ccabfb65ce89707fcd8d771 @@ -1025,24 +1025,25 @@ CMD_NO_WORKSPACE(import, N_("tree"), N_( vector empty_args; options save_opts; // add --unknown - save_opts.no_ignore = app.opts.no_ignore; save_opts.exclude_patterns = app.opts.exclude_patterns; - app.opts.no_ignore = false; app.opts.exclude_patterns = std::vector(); app.opts.unknown = true; + app.opts.recursive = true; process(app, "add", empty_args); + app.opts.recursive = false; app.opts.unknown = false; - app.opts.no_ignore = save_opts.no_ignore; app.opts.exclude_patterns = save_opts.exclude_patterns; // drop --missing + save_opts.no_ignore = app.opts.no_ignore; app.opts.missing = true; process(app, "drop", empty_args); app.opts.missing = false; + app.opts.no_ignore = save_opts.no_ignore; // commit if (!app.opts.dryrun) - process(app, "commit", empty_args); + process(app, "commit", empty_args); } catch (...) { ============================================================ --- tests/import/__driver__.lua ebc432b08f9484897d47a577db5c6ae29b663f0d +++ tests/import/__driver__.lua 41e1d2848c3b4dd356da9e9dfb308d7dc3de0003 @@ -138,14 +138,46 @@ check(not exists("importdir/_MTN")) ------------------------------------------------------------------------------ -- Tenth attempt, importing with an added subdirectory -mkdir("importdir/subdir") -writefile("importdir/subdir/importmesubdir", "version 0 of subdir file\n") +mkdir("importdir/subdir10") +writefile("importdir/subdir10/importmesubdir", "version 0 of subdir file\n") check(mtn("import", "importdir", - "--message", "Import ten, trying to import a workspace", + "--message", "Import ten, trying to import a workspace subdirectory", "--branch", "importbranch"), 0, false, false) check(mtn("checkout", "exportdir10", "--branch", "importbranch"), 0, false, false) +check(exists("exportdir10/subdir10/importmesubdir")) + +------------------------------------------------------------------------------ +-- Eleventh attempt, checking that ignorable files aren't normally imported +mkdir("importdir/subdir11") +writefile("importdir/fake_test_hooks.lua", "version 0 of ignored file\n") +writefile("importdir/subdir11/fake_test_hooks.lua", "version 0 of subdir fake ignored file\n") + +check(mtn("import", "importdir", + "--message", "Import eleven, trying to import a normally ignored file", + "--branch", "importbranch"), 0, false, false) + +check(mtn("checkout", "exportdir11", "--branch", "importbranch"), + 0, false, false) + +check(not exists("exportdir11/fake_test_hooks.lua")) +check(not exists("exportdir11/subdir11/fake_test_hooks.lua")) + +------------------------------------------------------------------------------ +-- twelth attempt, now trying again, without ignoring. +mkdir("importdir/subdir12") +writefile("importdir/fake_test_hooks.lua", "version 0 of ignored file\n") +writefile("importdir/subdir12/fake_test_hooks.lua", "version 0 of subdir fake ignored file\n") + +check(mtn("import", "importdir", "--no-respect-ignore", + "--message", "Import twelve, trying to import a normally ignored file", + "--branch", "importbranch"), 0, false, false) + +check(mtn("checkout", "exportdir12", "--branch", "importbranch"), + 0, false, false) + +check(exists("exportdir12/fake_test_hooks.lua")) +check(exists("exportdir12/subdir12/fake_test_hooks.lua")) -xfail(exists("exportdir10/subdir/importmesubdir"))