更改原始(AppleScript .scpt)文件后硬链接中断

时间:2015-05-15 15:06:20

标签: applescript inode

我有一个保存在~/Library/Script Libraries中的AppleScript库文件(.scpt),我用它来调用其他脚本中的处理程序。 我还想将该文件保留为git存储库的一部分。所以我的想法是:在~/Library/Script Libraries中为我的存储库中的文件创建一个硬链接。

当我第一次打开硬链接时,我看到与在我的仓库中打开原始文件时完全相同的结果。

检查终端中的硬链接会产生以下结果:

-rw-r--r--@ 2 username  staff  50458 May 15 16:45 MyLibrary.scpt

注意文件大小和硬链接数量(2)。

当我更改目标文件中的内容时,硬链接不再起作用。即使我只是打开.scpt文件,并在没有更改的情况下保存它,硬链接似乎也被破坏了。

当我检查终端中的硬链接时,它显示以下内容:

-rw-rw-rw-@ 1 username  staff  0 May 15 16:45 MyLibrary.scpt

因此它是0字节,硬链接数已减少到1。

为什么这不起作用?保存原始文件是否会更改它引用的inode?

2 个答案:

答案 0 :(得分:1)

我最终通过在Sublime Text中更改AppleScript构建系统来解决问题。

{
    "cmd": ["/usr/bin/osascript", "$file"],

    "variants": [
        {
            "name": "Script Library",
            "cmd": ["/usr/bin/osacompile", "-o", "/Volumes/harddisk/Users/username/Library/Script Libraries/$file_base_name.scpt", "$file"]
        }        
    ]
}

我编辑了.applescript文件,该文件在存储库中被跟踪。 当我运行Build命令时,.applescript文件被编译为Script Libraries文件夹中的.scpt变体。

答案 1 :(得分:0)

如果硬链接断开,那么脚本编辑器就像许多应用和程序一样,将内容写入新文件。但是,符号链接应该有效。因此,解决方案是使用符号链接。缺点是,如果移动文件,符号链接会中断。 (符号链接,真的使用文件的名称/路径,而不是inode编号。)现在,如果你只链接到本地​​仓库,那么也许你可以使用别名,但我怀疑它会当您推/拉到外部仓库时工作。 Github,可能永远不会在hfs磁盘上标准化。 ;)