vscode同步代码到Linux服务器(sync_code.cmd)

本文介绍了一种自动化脚本,用于获取代码差异列表,并通过SSH和rsync在本地与远程Linux环境中同步特定层的代码。脚本首先确定当前分支名称,然后找出最近的合并提交ID,从而获取差异文件列表。随后,脚本会创建远程目录,并根据代码层的不同选择性地同步指定目录和文件,确保文件属性完整保留。

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

echo off
@rem 1. %~nx0:该脚本文件名和扩展名; %~n0:该脚本文件名;%~x0:该脚本扩展名
set task_name=%~n0
@rem 1.获取该脚本第一个和第二个参数
set layer=%1
set is_get_diff_files=%2
@rem 1.LOCAL_SRC_HOME是在task.json文件中预设的路径
@rem 2.LINUX_SRC_HOME同样也是在task.json文件中预设的路径
cd %LOCAL_SRC_HOME%

if "%is_get_diff_files%" NEQ "True" goto :NEXT_STEP

echo [0]Get diff files list
@rem 1.拿到当前分支名并输入到curr_branch_name.txt中
git name-rev --name-only HEAD > curr_branch_name.txt
set /p CURR_BRANCH_NAME=0<curr_branch_name.txt
@rem 1.VSCODE_HOME是在windows系统下设置的环境变量
git log --merges -20 --pretty=format:"%%H_%%s" --invert-grep --grep=%CURR_BRANCH_NAME% | "%VSCODE_HOME%/plugins/dt/dtcenter/bin/grep.exe" " into " > merge_commit_info.txt

for /f "tokens=1 delims=_" %%i in (merge_commit_info.txt) do (
set txt=%%i
goto :Show
)
:Show
echo %txt% > last_merge_commit_id.txt

set /p LAST_MERGE_COMMIT_ID=0<last_merge_commit_id.txt
git diff %LAST_MERGE_COMMIT_ID% --numstat > diff_files_list.txt

:NEXT_STEP
echo [01]Make code dir
@rem SSH_HOST:环境变量
"%VSCODE_HOME%/plugins/dt/dtcenter/bin/ssh.exe" %SSH_HOST% "mkdir -p %LINUX_SRC_HOME%"

@rem -v, --verbose 详细模式输出
@rem -z, --compress 对备份的文件在传输时进行压缩处理
@rem -r, --recursive 对子目录以递归模式处理
@rem -t, --times 保持文件时间信息
@rem -o, --owner 保持文件属主信息
@rem -p, --perms 保持文件权限
@rem -g, --group 保持文件属组信息
@rem --delete 删除那些DST中SRC没有的文件
@rem --chmod
@rem --exclude-from=FILE 排除FILE中指定模式的文件
@rem %includePath% 使用入参 --include=PATTERN 指定需要传输的文件
@rem -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
echo [02]Sync code %layer%
if "%layer%" == "native" (
    @rem 1.--include:代表同步指定的文件或目录;--exclude:代表不同步的文件或目录
    "%VSCODE_HOME%/plugins/dt/dtcenter/bin/rsync.exe" -a -v -z -t -o -g -p --delete --chmod=u=rwx --chmod=g=r --chmod=o=r --include='itf/control/' --include='src/' --exclude='itf/*' -e "'%VSCODE_HOME%/plugins/dt/dtcenter/bin/ssh.exe'" ./ %SSH_HOST%:%LINUX_SRC_HOME%
    )

echo on

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值