我想知道这是不是最好的解决方案:
osacompile
编译这些文件
但也有.scptd
目录。或者我可以将.applescript
和.scpt
文件都置于版本控制之下?
最佳解决方案是什么?
发布于 2011-12-07 20:33:17
我总是将.applescript (纯文本文件)放在版本控制(SVN)中。通过这种方式,我可以很容易地在不同的版本之间进行比较,而且对于多用户来说也是相当容易的。您可以突出显示其他用户所做的更改。对于二进制文件,这是不可能的,比如编译的脚本文件。
发布于 2013-03-06 02:43:24
我喜欢@DanielTrebbien's solution,但它对我来说太复杂了,不能指望人们为了我的github项目而实现它。一个更简单的选择就是让你在diff中看到文本的变化,那就是用osadecompile告诉diff进程textconv。
添加到.gitattributes
*.scpt diff=scpt
添加到.git/config
[diff "scpt"]
textconv = osadecompile
binary=true
下面是我的中的示例差异
$ git diff
--- a/AppleScript-droplet.app/Contents/Resources/Scripts/main.scpt
+++ b/AppleScript-droplet.app/Contents/Resources/Scripts/main.scpt
@@ -1,3 +1,3 @@
-on open filelist
- ## Set useTerminal to true to run the script in a terminal
- set useTerminal to true
+on open file_list
+ ## Set use_terminal to true to run the script in a terminal
+ set use_terminal to true
非常感谢@DanielTrebbien,他的回答将我带到了osadecompile。
发布于 2017-10-03 23:31:01
我将纯文本.applescript文件保存在Git中,并且我有一个简单的Bash脚本,每次我想构建应用程序时都会运行该脚本,它负责编译AppleScript。下面是我的脚本:
#!/usr/bin/env bash
APPNAME="My Awesome App"
# make sure we're in the right place
if [ ! -d ".git" ]; then
echo "ERROR: This script must be run from the root of the repository."
exit
fi
# clear out old build
rm -r dist/*
mkdir -p "dist/$APPNAME.app/"
# copy files
cp -r app/* "dist/$APPNAME.app/"
# compile all applescript
cd "dist/$APPNAME.app/Contents/Resources/Scripts/"
for f in *.applescript
do
osacompile -o "`basename -s .applescript "$f"`.scpt" "$f"
rm "$f"
done
该脚本假设您的整个应用程序(即Contents/
文件夹和其中的所有内容)都在Git存储库根目录下的app/
文件夹中。它将所有内容复制到dist/
中的应用程序的新副本中,然后编译新副本的Contents/Resources/Scripts/
文件夹中的所有AppleScript文件。
要自己使用它,我建议将我的脚本复制到存储库根目录下的bin/build.sh
中,运行chmod +x bin/build.sh
使其可执行,然后在需要应用程序的新版本时随时运行./bin/build.sh
。
https://stackoverflow.com/questions/7641806
复制相似问题