​​

异地远程迁移SVN库同步数据_android


按如下 shell 脚本执行顺序一次操作即可。


1、$ cat ​svnlist.xml


Android7.1.1_SHHAI

Android7.1.1_BJMO


*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/


各SVN项目库的名字,全部都写到这个xml文件中。


*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/



2、$ cat ​bak_project.sh

#/bin/bash


for i in $(cat svnlist.xml | tr " " "\?")

do


mv /svn/svnrepos/svnRepository/$i /svn/svnrepos/svnRepository/$i_123


done


pwd


*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/


上面这个脚本意思是,把原项目先备份重命名一下。


*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/


3、$ cat ​createSvn.sh

#/bin/bash


for i in $(cat svnlist.xml | tr " " "\?")

do


svnadmin create /svn/svnrepos/svnRepository/$i


done


chmod -R g+rws /svn/svnrepos/svnRepository/$i

chmod -R 777 /svn/svnrepos/svnRepository/$i


sleep 2


cp /svn/sh/pre-revprop-change /svn/svnrepos/svnRepository/$i/hooks/


pwd


*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/


上面这个脚本意思是:

1、先创建一个原项目空的SVN库。

2、然后给项目赋予读写权限

3、最后是把修改过的 ​pre-revprop-change​ 文件,copy 到新建的​ 空SVN库的​ ​/hooks/​ 目录下。


*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/


4、$ cat  ​svninit.sh

#/bin/bash


cd /svn/svnrepos/svnRepository/Android7.1.1_SHHAI/hooks


svnsync init ​​http://110.139.212.88:1010/svnRepository/Android7.1.1_SHHAI​​​​ 

 ​​http://120.239.101.99/svn/Android7.1.1_SHHAI​​​​


sleep 3

pwd


cd /svn/svnrepos/svnRepository

mv Android7.1.1_SHHAI  Android7.1.1_SHHAI_bak


sleep 3

pwd


cp -rf Android7.1.1_SHHAI_123  Android7.1.1_SHHAI


sleep 1

pwd


cp /svn/sh/pre-revprop-change /svn/svnrepos/svnRepository/Android7.1.1_SHHAI/hooks/


pwd


*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/


上面这个脚本的意思是:

1、在新建的空 SVN 库中,执行初始化操作。

2、然后再接着把这个新建初始化的空 SVN 库移走或重命名。 

3、在 copy 第二个脚本里执行过的,备份重命名原始项目。意思就是把​新建的初始化的SVN库移走​,把原始项目在还原回来。

4、最后也是要把修改过的 ​pre-revprop-change​ 文件,copy 到还原回来后的项目库 ​/hooks/​ 目录下。



*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/


5、$ cat  ​copy_uuid_sync.sh

#/bin/bash


cd /svn/svnrepos/svnRepository/Android7.1.1_SHHAI_bak/db/

cp uuid /svn/svnrepos/svnRepository/Android7.1.1_SHHAI/db/


sleep 2

pwd


cp revprops/0/0  /svn/svnrepos/svnRepository/Android7.1.1_SHHAI/db/revprops/0/


sleep 2

pwd


cd /svn/svnrepos/svnRepository/Android7.1.1_SHHAI/db/


svn propset --revprop​ -r0​ svn:sync-last-merged-rev ​117​ ​​http://110.139.212.88:1010/svn_gasyb/Android7.1.1_SHHAI​​​​


sleep 1


svnsync sync --non-interactive  ​​http://110.139.212.88:1010/svnRepository/Android7.1.1_SHHAI​​​​ --username ab#cd​​@ef​​ --password ******


pwd


*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/


上面这脚本意思是:


1、进入到初始化备份的那个新空 SVN 库中去,也就是上面第4个脚本执行的第二条结果。

2、​copy uuid ​到原始项目的 /db/目录下去,意思就是新初始化后的空 SVN  项目新生成的 uuid 文件,要替换到原始项目下 /db/ 目录下的 uuid 文件。

3、​copy revprops/0/0  ​到原始项目的 ​/db/revprops/0/ ​目录下去。也就是要替换原始项目下的 ​/db/revprops/0/0  ​标红 ​0​ 文件。

4、两个文件都替换好之后,就好执行 ​svnsync ​同步操作了,注意版本号: 从​ "0" ​版本开始 ​~​ 最新版本​ "117"。

5、所有脚本都正常顺利的执行完成之后,两地的SVN库也就都同步了。



*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/