2010-02-06 25 views

Trả lời

15

Đặt (hoặc bỏ đặt) bit thực thi trên tệp và sau đó hg sẽ đánh dấu nó là đã sửa đổi. Cam kết nó.

Bạn sẽ cần phải bật các khác biệt kiểu git để xem các chế độ trong đầu ra khác, nhưng nó vẫn ở đó bất kể.

+0

tôi không có cùng trải nghiệm này với Mercurial 2.7.1. Đối với tôi, việc thay đổi cờ thực thi trên tệp sẽ không thay đổi trạng thái của tệp đó. –

+5

Điều này không hoạt động trên Windows, không có khái niệm như vậy - xem https://stackoverflow.com/questions/2702825/setting-mercurials-execute-bit-on-windows –

0

Đối với Linux hoặc Unix, bạn có thể sử dụng chmod +x filename.

Đối với Windows, bạn cần phải tạo tệp vá và sau đó áp dụng nó bằng cách sử dụng đối số --bypass cho hg import. Điều này có thể được thực hiện bằng cách tạo ra một tập tin script Powershell gọi SetFileExecutable.ps1, với các văn bản dưới đây

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 

thực hiện nó như sau:

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

này sử dụng các giải pháp được cung cấp bởi Matt Harbison in Mercurial's Bugzilla

Các vấn đề liên quan