
这通常需要结合 SourceTree 的自定义操作 (Custom Action) 功能和 macOS 的 Shell 脚本 来实现。SourceTree 会提供选中文件的路径作为脚本参数。
由于 macOS 自带 zip 等压缩工具,我们可以利用它来打包文件,从而实现“导出”的目的。
以下是在 Mac SourceTree 中设置“导出选中文件”自定义操作的步骤:
1. 编写 Shell 脚本(导出逻辑)
首先,您需要创建一个脚本来接收 SourceTree 传递过来的文件路径,并将它们打包到一个 ZIP 文件中。
创建 export_files.sh 脚本
在您的主目录或项目外创建一个脚本文件(例如:~/scripts/export_files.sh),并添加以下内容:
Bash
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#!/bin/bash # SourceTree 传递的第一个参数是 $REPO (仓库路径) REPO_PATH="$1" # SourceTree 传递的所有后续参数都是 $FILE (选中文件的路径) # $FILE 是相对于仓库根目录的路径。 # shift 移除第一个参数 ($REPO_PATH),让 $2, $3... 变成 $1, $2... shift # 切换到仓库目录,以便脚本中的相对路径正确 cd "$REPO_PATH" || exit 1 # 设置导出文件名和路径 # 导出文件名为当前日期和时间 DATE=$(date +"%Y%m%d_%H%M%S") OUTPUT_ZIP_NAME="ExportedFiles_$DATE.zip" # 导出到用户桌面 (这是 macOS 上一个方便的通用路径) OUTPUT_DIR="$HOME/Desktop" OUTPUT_PATH="$OUTPUT_DIR/$OUTPUT_ZIP_NAME" # 检查是否有文件被选中 if [ "$#" -eq 0 ]; then osascript -e 'display notification "未选择任何文件。" with title "SourceTree 导出失败"' exit 0 fi # 使用 zip 命令将所有选中的文件(即所有剩余的参数)打包 # -j: 不存储目录结构(可选,但通常导出时更希望不带仓库内的目录层级) # -@: 从标准输入读取文件名列表 (但在这里直接使用 $@ 传递参数更简单) # 注意:SourceTree 传来的 $FILE 已经是相对于 $REPO_PATH 的路径了。 # 更改为简单的 zip $@ 方式,保持文件在仓库内的相对路径 zip -r "$OUTPUT_PATH" "$@" # 弹出通知提示用户导出完成 if [ $? -eq 0 ]; then osascript -e 'display notification "文件已成功导出到桌面:'"$OUTPUT_ZIP_NAME"'" with title "SourceTree 导出完成"' else osascript -e 'display notification "导出过程中发生错误。" with title "SourceTree 导出失败"' fi |
赋予脚本执行权限
在终端中执行以下命令,确保您的脚本可以运行:
Bash
|
1 2 |
chmod +x ~/scripts/export_files.sh |
2. 在 SourceTree 中配置自定义操作
- 打开设置:
- 在 SourceTree 菜单栏中,选择 SourceTree > Preferences… (偏好设置…)。
- 切换到 Custom Actions (自定义操作) 标签页。
- 添加新的自定义操作:
- 点击右下角的 Add (添加) 按钮。
- 配置详情:
- Caption (菜单标题)
导出选中文件在右键菜单中显示的名称。 - Script to run (运行脚本)
/bin/bash使用 macOS 默认的 bash 解释器。 - Parameters (参数)
/Users/mac/scripts/export_files.sh $REPO $FILE这是关键。它将仓库路径 ($REPO) 和所有选中文件的路径 ($FILE变量会扩展为所有选中文件) 传递给您的脚本。 - Clicking Context (上下文)勾选 File Status (文件状态) 和 Log/History (日志/历史)。这将使操作在“文件状态”或“日志”视图中右键选中文件时可用。
- Show Full Output取消勾选避免每次运行都弹出脚本输出窗口。
- Caption (菜单标题)
- 保存并应用:点击 OK 保存操作。
3. 使用方法
- 打开 SourceTree 仓库。
- 在 File Status (文件状态) 视图或 Log/History (日志/历史) 视图中,选中 您想要导出的一个或多个文件。
- 右键点击 选中的文件。
- 选择 Custom Actions (自定义操作)。
- 点击您刚才创建的 导出选中文件。
脚本将运行,并将选中的文件打包成一个 ZIP 文件,然后保存在您的 桌面 上,并会弹出通知告知您完成。