The MoveCommitAction handler in the GitHub provider hardcodes mode="100644" for the new file's tree entry. If the original file was executable (100755), the move silently drops the executable permission. The get_file_content call retrieves the blob SHA but not the file mode, and unlike GitLab's native move action (which preserves mode automatically), the GitHub emulation always resets to 100644.
The MoveCommitAction handler in the GitHub provider hardcodes mode="100644" for the new file's tree entry. If the original file was executable (100755), the move silently drops the executable permission. The get_file_content call retrieves the blob SHA but not the file mode, and unlike GitLab's native move action (which preserves mode automatically), the GitHub emulation always resets to 100644.