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


err = "%s has the version '%s' but is being compared to '%s'" % (to_text(self), self.latest_version, remote_collection.latest_version)
            display.display(err)
            return
        modified_content = []
        
        expected_hash = _get_tar_file_hash(b_temp_tar_path, 'MANIFEST.json')
        self._verify_file_hash(b_collection_path, 'MANIFEST.json', expected_hash, modified_content)
        manifest = _get_json_from_tar_file(b_temp_tar_path, 'MANIFEST.json')
        
        file_manifest_data = manifest['file_manifest_file']
        file_manifest_filename = file_manifest_data['name']
        expected_hash = file_manifest_data['chksum_%s' % file_manifest_data['chksum_type']]
        
        self._verify_file_hash(b_collection_path, file_manifest_filename, expected_hash, modified_content)
        file_manifest = _get_json_from_tar_file(b_temp_tar_path, file_manifest_filename)
        
        for manifest_data in file_manifest['files']:
            if manifest_data['ftype'] == 'file':
                expected_hash = manifest_data['chksum_%s' % manifest_data['chksum_type']]
                self._verify_file_hash(b_collection_path, manifest_data['name'], expected_hash, modified_content)
        if modified_content:
            display.display("Collection %s contains modified content in the following files:" % to_text(self))
            display.display(to_text(self))
            display.vvv(to_text(self.b_path))
            for content_change in modified_content:
                display.display('    %s' % content_change.filename)
                display.vvv("    Expected: %s\n    Found: %s" % (content_change.expected, content_change.installed))
        else:
            display.vvv("Successfully verified that checksums for '%s:%s' match the remote collection" % (to_text(self), self.latest_version))
    def _verify_file_hash(self, b_path, filename, expected_hash, error_queue):