svn异地同步 linux,svn库两地开发之代码数据的同步包括***连接的全套解决方案
應用環境:在北京的svn服務器提供代碼歸檔服務為開發和本地的持續集成編譯測試環境,成都開發人員每個人都需要***連接并且不穩定。后來成都部署了本地持續集成環境換取代碼,從北京同步完全不現實。觸使了成都本地同步北京代碼的必要性。
實現方式:
1.首先想到的是使用svn的鏡像同步工具來同步即svnsync。但是通過這個方式同步數據,第一同步時不能有代碼的提交,同步起來速度比較慢。后續同步(使用hook用北京的提交觸同步命令)也很容易出現文件被鎖的情況。
2.第二種方式使用linux的rsync的工具同步北京svn服務器的代碼根目錄到成都,建立起成都的svn服務設置訪問目錄就實現了完美同步,包括權限的等等,而且所以的數據都完全一直,同步速度也很不錯。只要解決了成都svn服務器的***連接就可以穩定的運用。
ps:這種方式同步后的成都svn服務。完全和北京保持一直,本地的變動也會在下次的同被北京數據覆蓋,所以運用的為成都的Teamcity的自動化環境獲取代碼也完美解決的,如果開發人員的獲取提交想要在本地提交成都同步到北京還需要做一下兩地的同步目錄的相互同步。
3.解決兩地同步的***網絡問題實現***宕機的自動連接,就要寫一個自動的連接腳本。首先***帳號密碼由專門的人員管理,開發和運維是沒有***的撥號密碼的,所以就涉及到了腳本的加密。
操作過程:
1.配置成都svn服務器的和北京svn服務器的網絡互通,cisco的***,linux服務撥號使用***c這個工具s#!/bin/bash
if?[?`id?-u`?-ne?0?];then
echo?"please?use?root?user"
exit
fi
×××=`ifconfig?|?grep?tun
echo?$×××
if?[?-z?"$×××"?]
then
cd?/home/sh
./***c.sh
while?[?1?]
do
Route=`route?|?grep?192.168.17.0`
if?[?-n?"$Route"?]
then
route?add?-net?192.168.17.0?netmask?255.255.255.0?gw?192.168.21.1
break
fi
done
else
echo?$×××?>/dev/null
fi
調用的啟動腳本***c.sh#!/usr/bin/expect
set?timeout?15
spawn?***c?--enable-1des
expect?{
"Enter?IPSec?gateway?address:"?{?exp_send?"x.xxx.xxx.xx\r";exp_continue?}
"Enter?IPSec?ID?for*"?{?exp_send?"***4000\r";exp_continue?}
"Enter?IPSec?secret?for*"?{?exp_send?"cisco\r";exp_continue?}
"Enter?username?for*"?{?exp_send?"chengdu38\r";exp_continue}
"Enter?password?for*"?{?exp_send?"passwd\r"}
}
interact
#expect?eof
到現在實現了***的自動連接。
加密shell腳本的方式有提供兩種
第一是linux系統自帶的gzexe
第二是shc的二進制編譯
都可以實現shell中的明文密碼ip等信息的不可見。
2.自動同步的操作
有一遍文章很詳細的介紹了同步過程
總結
以上是生活随笔為你收集整理的svn异地同步 linux,svn库两地开发之代码数据的同步包括***连接的全套解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: divcss布局模板代码_CSS3布局(
- 下一篇: installshield 脚本 在卸载