##### SUMMARY
If you have executable files in your source code they are not kept in the tarball.

Could be related to https://github.com/ansible/ansible/blob/99d7f150873011e7515851db9b44ff486efa9d77/lib/ansible/galaxy/collection.py#L763

This was noticed as I had some auxiliary scripts in my repo.

Need to also consider scripts in `files/` if/when Collections support roles.

This seems to fail the "principal of least suprise"

**Proposal 1: Keep on stripping executable flags**

Add some line to the output
`WARNING: tests/coverage.sh: source file has executable flag, though this will be ignored in generated tar.gz`
Update developing a collection documentation page
Update integration tests to ensure that executable mode is always stripped.
Update code to link to this issue

**Proposal 2: Allow executible flags**

Update developing a collection documentation page
Update integration tests to ensure that executable mode is preserved
Update code to link to this issue
Changelog


##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
ansible-galaxy

##### ANSIBLE VERSION
```paste below
2.10
```

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml

```

<!--- HINT: You can paste gist.github.com links for larger files -->


mock_install, dummy, output_dir = collection_install
    galaxy_args = ['ansible-galaxy', 'collection', 'install', 'https://foo/bar/foo-bar-v1.0.0.tar.gz',
                   '--collections-path', output_dir]
    GalaxyCLI(args=galaxy_args).run()
    collection_path = os.path.join(output_dir, 'ansible_collections')
    assert os.path.isdir(collection_path)
    assert mock_install.call_count == 1
    assert mock_install.call_args[0][0] == [('https://foo/bar/foo-bar-v1.0.0.tar.gz', '*', None)]
    assert mock_install.call_args[0][1] == collection_path
    assert len(mock_install.call_args[0][2]) == 1
    assert mock_install.call_args[0][2][0].api_server == 'https://galaxy.ansible.com'
    assert mock_install.call_args[0][2][0].validate_certs is True
    assert mock_install.call_args[0][3] is True
    assert mock_install.call_args[0][4] is False
    assert mock_install.call_args[0][5] is False
    assert mock_install.call_args[0][6] is False
    assert mock_install.call_args[0][7] is False
def test_collection_install_name_and_requirements_fail(collection_install):
    test_path = collection_install[2]
    expected = 'The positional collection_name arg and --requirements-file are mutually exclusive.'
    with pytest.raises(AnsibleError, match=expected):
        GalaxyCLI(args=['ansible-galaxy', 'collection', 'install', 'namespace.collection', '--collections-path',
                        test_path, '--requirements-file', test_path]).run()
def test_collection_install_no_name_and_requirements_fail(collection_install):