1. 程式人生 > >Svnsync如何實現同步,以及出現的各種問題?

Svnsync如何實現同步,以及出現的各種問題?

1.svnsync作用

svnsync是Subversion提供的一個用於同步版本庫的工具,通過svnsync同時可以達到備份SVN版本庫的目的。

2.svnsync具體操作步驟

環境說明

作業系統:Windows7

工具:cmd命令列

實現方法

首先,svnsync help命令,查閱svnsync及subcommand使用方法

1、確保源庫的路徑正確[Source_repo_url]

2、svnadmin create [Dest_repo_url]

   確保已經建立新的目標庫(若沒有,需新建目標庫)

3、svnsync init

   初始化,建立目標庫和源庫之間的同步關係
   命令格式 svnsync init [--username dest_name --password dest_pwd] 目標庫URL 源庫URL

2、svnsync sync
   真正的同步
   命令格式 svnsync sync 目標庫URL

例項說明

以我的同步過程為例項,過程如下  

說明:專案名DemoService 兩個庫即伺服器存在同一臺電腦,只不過目標庫是在快盤上。

目標庫[file:///X:\Home\svn\DemoService]<普通svn伺服器> 或[http://192.168.5.110:8080/svn/DemoService<ApacheSVN伺服器>

源庫[file:///G:\MySVN-Reposity\Reposity-DemoService]

1.進入X:\Home\svn目錄,建立DemoService目標庫

svnadmin create DemoService
2.修改目標庫的指令碼pre-revprop-change
進入X:\Home\svn\DemoService\hooks\
cd X:\Home\svn\DemoService\hooks\
新建 pre-revprop-change.bat
windows下為空即可;linux下輸入#!/bin/sh exit 0
再提升pre-revprop-change.bat檔案許可權:chmod 775/a+x pre-revprop-change.bat
3.初始化,建立目標庫和源庫之間的同步關係
svnsync init --username shendw --password shendw file:///X:\Home\svn\DemoService file:///G:\MySVN-Reposity\Reposity-DemoService
  如果執行正確,則===output:Copied properties for revision 0.

4.開始真正的同步

svnsync sync file:///X:\Home\svn\DemoService

===output:

Transmitting file data ..................
Committed revision 1.
Copied properties for revision 1.
Transmitting file data ..
Committed revision 2.
Copied properties for revision 2.
===OK,大功告成。

5.然後測試下目標庫的程式碼

    右鍵目標庫,選擇export,選擇正確的匯出路徑,OK。說明庫同步成功。

    進入設定的Workspace,右鍵執行Checkout,選擇url: http://192.168.5.110:8080/svn/DemoService,OK。此時專案即可看到以前的log。

遇到的問題

1.Repository has not been enabled to accept revision propchanges ?

解決方案:新建 pre-revprop-change.bat,如上

2.“svnsync: Revprop change blocked by pre-revprop-change hook (exit code 255) with output...”?

解決方案:提升pre-revprop-change.bat許可權,如上

遺留問題

輸入使用者名稱和密碼。我的例項中,因為在init時,輸入了user資訊,所以後面的沒有提示輸入。另外,源庫是沒有指定使用者的,即allusers。