##### 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 -->


local_collection = CollectionRequirement.from_path(b_search_path, False)
                            break
                    if local_collection is None:
                        raise AnsibleError(message='Collection %s is not installed in any of the collection paths.' % collection_name)
                    
                    try:
                        remote_collection = CollectionRequirement.from_name(collection_name, apis, collection_version, False, parent=None,
                                                                            allow_pre_release=allow_pre_release)
                    except AnsibleError as e:
                        if e.message == 'Failed to find collection %s:%s' % (collection[0], collection[1]):
                            raise AnsibleError('Failed to find remote collection %s:%s on any of the galaxy servers' % (collection[0], collection[1]))
                        raise
                    download_url = remote_collection.metadata.download_url
                    headers = {}
                    remote_collection.api._add_auth_token(headers, download_url, required=False)
                    b_temp_tar_path = _download_file(download_url, b_temp_path, None, validate_certs, headers=headers)
                    local_collection.verify(remote_collection, search_path, b_temp_tar_path)
                except AnsibleError as err:
                    if ignore_errors:
                        display.warning("Failed to verify collection %s but skipping due to --ignore-errors being set. "
                                        "Error: %s" % (collection[0], to_text(err)))
                    else:
                        raise
@contextmanager
def _tempdir():
    b_temp_path = tempfile.mkdtemp(dir=to_bytes(C.DEFAULT_LOCAL_TMP, errors='surrogate_or_strict'))
    yield b_temp_path
    shutil.rmtree(b_temp_path)
@contextmanager
def _tarfile_extract(tar, member):