2个svn root 同步提交

本文介绍了一种特殊的SVN使用场景,即在一个提交后需要同步到另一个SVN仓库的方法。通过编写bash脚本实现自动同步,并包含了远程服务器登录及编译安装等步骤。
现在工作环境的情况是这样:
虽然很奇怪,但是组织上就是要求这样工作的.

2个svn root:
一个是工作的svn a, 另一个是其他用途的SVN b

在a 提交以后, b也要提交一份.只要保证内容一致就可以了

写了一个同步脚本,完成这个活.
[quote]$CRM 是工作目录 , $LOCAL 是另一个需要同步的 svn, 需要在环境变量中定义[/quote]

接着要在测试服务器中,先更新svn 然后再 编译文件



#!/bin/bash

filepath=$(pwd)
TEST_SERVER=XX.XX.XX.XX #服务器地址
LOGIN_NAME=XX #登录名
PASS=XX #登录密码
if echo "$filepath" | grep $CRM
then
svn ci -m "$1 "
fpath=${filepath##*CRM/} #过滤实际要同步的目录
dst_path="$LOCAL_CRM/$fpath" #目标目录
echo $dst_path
rsync -r -v -C . $dst_path
cd $dst_path
svn up
svn st
echo "commit other? [(y)es]/(n)o:"
read flag
#echo $flag
if [[ $flag == n* ]]
then
echo bye
exit
fi
echo "go commit.."
svn ci -m "$1 "
# 在测试服务器上编译
expect <<EOF
spawn telnet $TEST_SERVER
expect "login: "
send "$LOGIN_NAME\r"
expect "ssword: "
send "$PASS\r"
expect "$ "
send "cd $fpath\r"
expect "$ "
send "svn up && make && make install\r"
expect "$ "
send "exit\r"
expect eof
EOF

else
echo "你处在错误的目录!"
fi
在使用SVN进行版本控制时,并非**强制**要求在每次提交前都执行更新操作,但在实际开发过程中,**推荐在提交前执行更新操作**,以确保工作副本与远程仓库保持同步。这样可以提前发现并解决潜在的冲突,避免在提交时因远程文件已被修改而产生冲突。 当本地文件和远程文件都被修改时,执行 `svn update` 会尝试自动合并改动。如果改动发生在文件的不同部分,SVN 通常可以自动完成合并,文件会被标记为已更新。如果改动发生在相同部分,则会标记为冲突状态,需要手动解决冲突后再提交[^1]。 在某些自动化场景中,例如使用脚本进行更新与提交,也可以通过脚本逻辑控制更新行为。例如,可以在提交前自动执行更新操作,并在脚本中处理特定目录的提交与排除某些子目录或文件。例如以下脚本片段: ```batch @echo off set projectRoot=C:\Projects\XXX REM 配置需要提交的目录和需要排除的目录 set commitPath=Folder1^ Folder2#SubFolder1,SubFolder2,File1^ Folder3 REM 配置结束 cd /d "%projectRoot%" REM 执行更新操作 svn update REM 执行提交操作 start TortoiseProc /command:commit /path:"!generatedPath!" ``` 上述脚本示例中,在提交前加入了 `svn update` 命令,以确保在提交前完成更新操作[^2]。 ### 提交前更新的必要性 - **减少冲突**:在多人协作的环境中,远程文件可能已被他人修改。提前更新可以将远程改动合并到本地工作副本,降低提交时发生冲突的概率。 - **确保一致性**:更新操作可以确保本地工作副本与远程仓库保持一致,避免因版本不一致导致的问题。 - **便于调试**:如果在提交前更新并解决冲突,可以更早发现问题,而不是在提交时才暴露问题,从而提升开发效率。 ### 提交前更新的可选性 在某些场景下,如本地改动非常明确且不涉及远程已修改内容,也可以选择不更新直接提交。但这种做法存在一定的风险,尤其是在团队协作环境中,可能导致后续的冲突解决成本增加。 ### 总结 虽然 SVN 并不强制要求在每次提交前更新,但为了确保版本一致性、减少冲突并提升协作效率,建议在提交前执行更新操作。在自动化脚本中,也可以通过配置实现提交前自动更新,以增强流程的健壮性[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值