2012-04-04 63 views
3

我知道Mercurial不支持Windows回購協議中的符號鏈接;我可以忍受這一點,儘管使用NTFS符號鏈接的實現對於那些可以在非Windows系統管理員的Windows機器上啓用特權的用戶來說很不錯。可以Mercurial從Windows創建自己的符號鏈接格式嗎?

我想知道的是Mercurial在Windows機器上看到repo時從Unix存儲庫處理實際鏈接的方式。如果我使用Windows開發機器上的符號鏈接進行更新,則會看到該鏈接已更改爲實際文件,其中鏈接的目標爲文本。

不知何故,Mercurial甚至在Windows上都知道該文件最初是一個符號鏈接,即使它被存儲爲一個真實文件。如果我在Windows中編輯文件的內容,我可以更改符號鏈接的目標,因爲它仍然被Mercurial記錄爲符號鏈接 - 當我推回到Unix時,符號鏈接指向新的位置。

所以。如何將我在Windows中創建的文件標記爲符號鏈接?很顯然Mercurial可以將這種符號鏈接推入到Unix文件系統中,但我不知道如何在Unix下首先創建鏈接。

有沒有可以設置的標誌?

回答

1

恐怕有no work-around on Windows。不過,您可以編寫一個擴展名,讓您在Windows上爲文件設置符號鏈接位。該擴展可能必須覆蓋dirstate.flagfunc,這是在爲文件請求「標誌」(執行和符號鏈接位)時使用的函數。

另請參閱Issue 1825瞭解使Mercurial在結帳中創建Windows符號鏈接的整體特徵。它被標記爲「完成,可能會更好」,因此不可能很快改變。

+0

爲了澄清,我不想創建Windows符號鏈接;我只想創建一個單行文本文件,其中包含一個目標作爲其內容,當我推送到Unix時,它將變成一個符號鏈接。通過Mercurial已知爲符號鏈接的文件可以恢復爲正確的符號鏈接 - 我可以告訴Mercurial我創建的特定文本文件應該是相同的嗎?這是我可以寫一個擴展的位,如果是的話,你有什麼指針可以開始在Mercurial中查看代碼嗎?謝謝。 – 2012-04-12 16:50:50

+0

@IainHallam:當然,我已經用一個指向我認爲將會覆蓋的相關函數的指針更新了答案。 – 2012-04-13 06:45:15

相關問題