2010-02-06 2 views

ответ

15

Установите (или отмените) исполняемый бит в файле, а затем hg отметит его как измененный. Согласитесь.

Вам нужно будет включить разницу в стиле git, чтобы увидеть режимы в формате diff, но он все равно там независимо.

+0

у меня нет этот же опыт работы с Mercurial 2.7.1. Для меня изменение исполняемого флага в файле не изменяет статус этого файла. –

+5

Это не работает в Windows, у которого нет такого понятия - см. Https://stackoverflow.com/questions/2702825/setting-mercurials-execute-bit-on-windows –

0

Для Linux или Unix вы можете использовать chmod +x filename.

Для Windows вам необходимо создать файл исправления, а затем применить его с помощью аргумента --bypass до hg import. Это может быть сделано путем создания файла сценария Powershell под названием SetFileExecutable.ps1 с текстом ниже

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 

выполнить его следующим образом:

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

использует решение, предоставленную Matt Harbison in Mercurial's Bugzilla

Смежные вопросы