2010-02-06 10 views

risposta

15

Impostare (o annullare) il bit eseguibile sul file, quindi hg lo contrassegnerà come modificato. Impegnalo.

Sarà necessario abilitare le differenze di stile git per vedere le modalità in uscita diff, ma è ancora lì a prescindere.

+0

non ho questa stessa esperienza con Mercurial 2.7.1. Per me cambiare il flag eseguibile sul file non cambia lo stato di quel file. –

+5

Questo non funziona su Windows, che non ha tale nozione - vedere https://stackoverflow.com/questions/2702825/setting-mercurials-execute-bit-on-windows –

0

Per Linux o Unix è possibile utilizzare chmod +x filename.

Per Windows è necessario creare un file di correzione e quindi applicarlo utilizzando l'argomento --bypass su hg import. Ciò potrebbe essere fatto attraverso la creazione di un file di script PowerShell chiamato SetFileExecutable.ps1, con il testo qui sotto

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 

eseguirlo come segue:

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

La utilizza la soluzione fornita da Matt Harbison in Mercurial's Bugzilla

Problemi correlati