Mac下SourceTree导出更新文件

1,167 阅读1分钟

SourceTree可视化git管理工具功能很强大,支持自定义操作可以写脚本,现在教大家做一个导出更新文件的脚本吧!

添加自定义操作

截屏2024-04-26下午3.40.32.png

选择自定义文件导出

截屏2024-04-26下午3.42.33.png

sourcetree_exports_file.sh

#!/bin/bash
#仓库路径
REPO_PATH=$1
#导出文件的目录以及新建文件夹路径
FOLDER="/Users/nightkid/Downloads"
FOLDER_DATE=`date +%Y%m%d_%H_%M_%S`
PROJECT_NAME=${REPO_PATH##*/}
for arg in "$@"
do
if [ $1 != $arg ]
then
srcfile="$REPO_PATH/$arg"
echo $arg
cpfile="$FOLDER/${PROJECT_NAME}_$FOLDER_DATE/$arg"
folder=${cpfile%/*}
`mkdir -p $folder`
result=`cp -f  $srcfile $cpfile`
echo "$arg"
fi
#打开导出文件夹
open $FOLDER/${PROJECT_NAME}_$FOLDER_DATE
done

选择版本号内容导出文件

截屏2024-04-26下午3.42.14.png

sourcetree_commit_exports.sh

#!/bin/bash
REPO_PATH=$1
GIT_SHA=$2
#导出文件保存路径
FOLDER="/Users/nightkid/Downloads"
FOLDER_DATE=`date +%Y%m%d_%H_%M_%S`
PROJECT_NAME=${REPO_PATH##*/}
`mkdir -p $FOLDER`
filepath=$(cd $REPO_PATH; pwd)
split_str=`git show --format= --name-status $GIT_SHA`
echo "$split_str" > "$FOLDER/tmp.txt"
 
split_array=()
split_len=0
while read line
do
split_array[$split_len]=$line
split_len=$split_len+1
 
done < "$FOLDER/tmp.txt"
 
for ((i=0;i<${#split_array[@]};i++));do
{
	string=${split_array[$i]}
 
	array=(${string//,/ })
	if [ "$array[0]" != "D" ]
         then
         echo ${array[1]}
 
		srcfile="$REPO_PATH/${array[1]}"
		cpfile="$FOLDER/${PROJECT_NAME}_$FOLDER_DATE/${array[1]}"
		folder=${cpfile%/*}
		`mkdir -p $folder`
		`cp -f  $srcfile $cpfile`
	fi
#    for var in ${array[@]}
#    do
#      echo $var
#    done
}
open $FOLDER/${PROJECT_NAME}_$FOLDER_DATE
done 

最后选择对应的版本、文件右键

截屏2024-04-26下午3.47.58.png

可能的错误

当提示一下错误: 
launch path not accessible Completed with errors, see above

您可以通过授予您的用户执行该文件的权限来解决此问题:

chmod +x your-script.sh