Allow the svn:executable property to affect the git filemode
authormhagger <mhagger@be7e6eca-30d4-0310-a8e5-ac0d63af7087>
Sun, 26 Nov 2017 04:19:30 +0000 (26 04:19 +0000)
committermhagger <mhagger@be7e6eca-30d4-0310-a8e5-ac0d63af7087>
Sun, 26 Nov 2017 04:19:30 +0000 (26 04:19 +0000)
This allows a file to be marked executable in Git using the full
property-setting machinery, for example via `AutoPropsPropertySetter`.

We only need to check for the presence of the `svn:executable` flag
because Git already uses the `ExecutablePropertySetter`, which sets
the `svn:executable` property based on whether the CVS file had its
executable bit set.

Patch by: Mark Rotteveel <[email protected]>

git-svn-id: http://cvs2svn.tigris.org/svn/cvs2svn/trunk@5470 be7e6eca-30d4-0310-a8e5-ac0d63af7087

cvs2svn_lib/git_output_option.py

index f54c0a6..60a9c02 100644 (file)
@@ -40,6 +40,8 @@ from cvs2svn_lib.dvcs_common import MirrorUpdater
 from cvs2svn_lib.key_generator import KeyGenerator
 from cvs2svn_lib.artifact_manager import artifact_manager
 
+def cvs_item_is_executable(cvs_item):
+  return 'svn:executable' in cvs_item.cvs_file.properties
 
 class GitRevisionWriter(MirrorUpdater):
 
@@ -92,7 +94,7 @@ class GitRevisionMarkWriter(GitRevisionWriter):
       blobf.close()
 
   def _modify_file(self, cvs_item, post_commit):
-    if cvs_item.cvs_file.executable:
+    if cvs_item_is_executable(cvs_item):
       mode = '100755'
     else:
       mode = '100644'
@@ -117,7 +119,7 @@ class GitRevisionInlineWriter(GitRevisionWriter):
     self.revision_reader.start()
 
   def _modify_file(self, cvs_item, post_commit):
-    if cvs_item.cvs_file.executable:
+    if cvs_item_is_executable(cvs_item):
       mode = '100755'
     else:
       mode = '100644'