我已经看到它提到mercurial将可执行位存储在文件上,但无法找到如何执行它。我正在寻找类似于svn ps svn:executable '' TARGET
的功能。
答案 0 :(得分:15)
设置(或取消设置)文件上的可执行位,然后hg将其标记为已修改。承诺吧。
你需要启用git-style diffs才能看到diff输出中的模式,但它仍然存在。
答案 1 :(得分:1)
对于Linux或Unix,您可以使用searchResults { theNames in
print(theNames)
//Here you have your array of names, use how you want.
}
。
对于Windows,您需要创建一个补丁文件,然后使用chmod +x filename
参数将其应用到--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
提供的解决方案