在Mercurial中设置文件的可执行位

时间:2010-02-06 04:27:25

标签: version-control mercurial

我已经看到它提到mercurial将可执行位存储在文件上,但无法找到如何执行它。我正在寻找类似于svn ps svn:executable '' TARGET的功能。

2 个答案:

答案 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

使用Matt Harbison in Mercurial's Bugzilla

提供的解决方案