Shell获取git status文件变动push到远程服务器

该脚本主要用于在本地修改代码后,使用gitstatus获取改动的文件信息,然后通过ssh和scp命令将修改的文件或目录push到远程服务器,特别处理了frameworks,packages,libcore等特定目录的情况,删除远程的旧文件并同步新文件,以便于在服务器上进行编译操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用场景:在本地进行修改代码,将修改的代码push到远程服务器进行编译


# 获取git status的文件,自动push到服务器

export S=/devdata/AndroidS/
export S_SERVER=/data/AndroidS/




echo '1. Android S '
echo '3. Android Q '

export num=1
case $num in
    1)
        export LOCALHOST_CODE=$S
		export SERVER_CODE=$S_SERVER
        ;;
    2)
        ;;
    3)
        ;;
    *)
        echo "error"
esac

echo "get git status information..."

result=$(cd $LOCALHOST_CODE && git status);

# echo $result

echo "本地源码--->$LOCALHOST_CODE"
echo "服务器源码--->$SERVER_CODE"

for word in $result
do
	#echo $word
	#echo "!!!!!"
	
	file=$LOCALHOST_CODE$word
	file_server=$SERVER_CODE$word
	
	#echo $file
	
	if [ -d "$file" ]; then
	
	  # echo "$file is a directory "
	  
	  if [[ "$file" =~ "frameworks" ]] || [[ "$file" =~ "packages" ]] || [[ "$file" =~ "libcore" ]] || [[ "$file" =~ "bazel" ]]; then
	    
		# 远程发送命令
		ssh xxx@ip "rm -rf $file_server"
	  	echo "push directory $file* ---> $file_server"
		ssh xxx@ip "mkdir $file_server"
		scp -r $file*  xxx@ip:$file_server/
	  fi
	  #if [[  "$file" =~ "tools" ]]; then
		#scp -r $file  xxx@ip:$file_server/
	  #fi

	elif [ -f "$file" ]; then

	  # echo "$file is a file"
	  if [[  "$file" =~ "frameworks" ]] || [[  "$file" =~ "packages" ]] || [[  "$file" =~ "system" ]] || [[  "$file" =~ "vendor" ]] || [[  "$file" =~ "libcore" ]] || [[  "$file" =~ "soong" ]] ; then
	  	
		#echo "$file"
		#echo "$file_server"
		scp -r $file  xxx@ip:$file_server
	  fi

	fi
done

echo 'scp files done'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值