2010-02-06 4 views

Répondre

15

Définissez (ou désactivez) le bit exécutable sur le fichier, puis hg le marquera comme modifié. Engagez-le.

Vous devrez activer les différences de style git pour voir les modes dans la sortie diff, mais il est toujours présent.

+0

Je n'ai pas cette même expérience avec Mercurial 2.7.1. Pour moi, changer le drapeau exécutable sur le fichier ne change pas le statut de ce fichier. –

+5

Cela ne fonctionne pas sur Windows, qui n'a pas cette notion - voir https://stackoverflow.com/questions/2702825/setting-mercurials-execute-bit-on-windows –

0

Pour Linux ou Unix, vous pouvez utiliser chmod +x filename.

Pour Windows, vous devez créer un fichier de correctif, puis l'appliquer en utilisant l'argument --bypass à hg import. Cela pourrait se faire en créant un fichier de script Powershell appelé SetFileExecutable.ps1, avec le texte ci-dessous

param (
    [String]$comment = "+execbit", 
    [Parameter(Mandatory=$true)][string]$fileRelativePath, 
    [Parameter(Mandatory=$true)][string]$repositoryRoot 
) 

$fileRelativePath = $fileRelativePath.Replace('\', '/') 

$diff = "$comment" + [System.Environment]::NewLine + 
    [System.Environment]::NewLine + 
    "diff --git a/$fileRelativePath b/$fileRelativePath" + [System.Environment]::NewLine + 
    "old mode 100644" + [System.Environment]::NewLine + 
    "new mode 100755" 

Push-Location 
cd $repositoryRoot 
$diff | Out-File -Encoding 'utf8' $env:tmp\exebit.diff 
hg import --bypass -m "$comment" $env:tmp\exebit.diff 
Pop-Location 

exécuter comme suit:

.\SetFileExecutable.ps1" -comment "Marking file as executable" -fileRelativePath mvnw -repositoryRoot "c:\myrepo" 

L'utilise la solution fournie par Matt Harbison in Mercurial's Bugzilla

Questions connexes