❶ 如何導出備份SVN源代碼庫及導入源代碼庫
備份策略
==============
svn備份一般採用三種方式:
1)svnadmin mp
2)svnadmin hot
3)svnsync.
注意,svn備份不宜採用普通的文件拷貝方式(除非你備份的時候將庫暫停),如命令、rsync命令。
筆者曾經用 rsync命令來做增量和全量備份,在季度備份檢查審計中,發現備份出來的庫大部分都不可用,因此最好是用svn本身提供的功能來進行備份。
優缺點分析
==============
第一種svnadmin mp是官方推薦的備份方式,優點是比較靈活,可以全量備份也可以增量備份,並提供了版本恢復機制。
缺點是:如果版本比較大,如版本數增長到數萬、數十萬,那麼mp的過程將非常慢;備份耗時,恢復更耗時;不利於快速進行災難恢復。
個人建議在版本數比較小的情況下使用這種備份方式。
第二種svnadmin hot原設計目的估計不是用來備份的,只能進行全量拷貝,不能進行增量備份;
優點是:備份過程較快,災難恢復也很快;如果備份機上已經搭建了svn服務,甚至不需要恢復,只需要進行簡單配置即可切換到備份庫上工作。
缺點是:比較耗費硬碟,需要有較大的硬碟支持(俺的備份機有1TB空間,呵呵)。
第三種svnsync實際上是製作2個鏡像庫,當一個壞了的時候,可以迅速切換到另一個。不過,必須svn1.4版本以上才支持這個功能。
優點是:當製作成2個鏡像庫的時候起到雙機實時備份的作用;
缺點是:當作為2個鏡像庫使用時,沒辦法做到「想完全拋棄今天的修改恢復到昨晚的樣子」;而當作為普通備份機制每日備份時,操作又較前2種方法麻煩。
備份的命令
==============
全備份:使用svnadmin mp或svnadmin hot或svnsync來做,
hot:
svnadmin hot path/to/repository path/to/backup –clean-logs
mp:
svnadmin mp 版本庫路徑及名稱 –revision 導出的版本號> 導出的命名
增量備份:使用svnadmin mp的–incremental選項來實現
svnadmin mp 版本庫路徑及名稱 –revision 上次導出的版本號:到本次要導出到的版本號 –incremental > 導出的命名
一個技巧:如果你有一個較大的Subsersion版本庫而你又想用最少的空間來將它備份下來,用這個命令(請將/repo替換成你的版本庫路徑)吧:
svnadmin mp –deltas /repo |bzip2 |tee mp.bz2 | md5sum >mp.md5
分步解釋:最重要的一步是 -deltas,將消耗更多的CPU資源,但擁有更有效的差異存儲辦法。
bzip2壓縮方案比gzip慢,但換來的更好的壓縮率。
更有趣的是,tee方法將壓縮的數據流轉向到文件mp.bz2,同時將其輸出到標准輸出,後者有轉向給了MD5摘要計算工具。
還原命令
==============
還原版本:svnadmin load 要恢復的版本庫路徑及名稱 < 導出的命名
svnadmin hot path/to/repository path/to/backup –clean-logs
svnadmin mp
==============
這是subversion官方推薦的備份方式。
1)定義備份策略:
備份頻度:每周六進行一次全量備份,每周日到周五進行增量備份
備份地點:備份存儲路徑到/home/backup/svn/
備份命名:全量備份文件名為:weekly_fully_backup.yymmdd,增量備份文件命名為:daily-incremental-backup.yymmdd
備份時間:每晚21點開始
備份檢查:每月末進行svnadmin load恢復試驗。
2)建立全量備份腳本:
在~/下建立一個perl腳本文件,名為weekly_backup.pl,執行全量備份,並壓縮備份文件,代碼如下(本代碼只針對一個庫的備份,如果是多個庫請做相應改動):
#!/usr/bin/perl -w
my $svn_repos="/home/svn/repos/project1";
my $backup_dir="/home/backup/svn/";
my $next_backup_file = "weekly_fully_backup.".`date +%Y%m%d`;
$youngest=`svnlook youngest $svn_repos`;
chomp $youngest;
print "Backing up to revision $youngest\n";
my $svnadmin_cmd="svnadmin mp --revision 0:$youngest $svn_repos >$backup_dir/$next_backup_file";
`$svnadmin_cmd`;
open(LOG,">$backup_dir/last_backed_up"); #記錄備份的版本號
print LOG $youngest;
close LOG;
#如果想節約空間,則再執行下面的壓縮腳本
print "Compressing mp file...\n";
print `gzip -g $backup_dir/$next_backup_file`;
3)建立增量備份腳本:
在全量備份的基礎上,進行增量備份:在~/下建立一個perl腳本文件,名為:daily_backup.pl,代碼如下:
#!/usr/bin/perl -w
my $svn_repos="/home/svn/repos/project1";
my $backup_dir="/home/backup/svn/";
my $next_backup_file = "daily_incremental_backup.".`date +%Y%m%d`;
open(IN,"$backup_dir/last_backed_up");
$previous_youngest = <IN>;
chomp $previous_youngest;
close IN;
$youngest=`svnlook youngest $svn_repos`;
chomp $youngest;
if ($youngest eq $previous_youngest)
{
print "No new revisions to backup.\n";
exit 0;
}
my $first_rev = $previous_youngest + 1;
print "Backing up revisions $youngest ...\n";
my $svnadmin_cmd = "svnadmin mp --incremental --revision $first_rev:$youngest $svn_repos > $backup_dir/$next_backup_file";
`$svnadmin_cmd`;
open(LOG,">$backup_dir/last_backed_up"); #記錄備份的版本號
print LOG $youngest;
close LOG;
#如果想節約空間,則再執行下面的壓縮腳本
print "Compressing mp file...\n";
print `gzip -g $backup_dir/$next_backup_file`;
4)配置/etc/crontab文件
配置 /etc/crontab 文件,指定每周六執行weekly_backup.pl,指定周一到周五執行daily_backup.pl;
具體步驟俺就不啰嗦了.
5)備份恢復檢查
在月底恢復檢查中或者在災難來臨時,請按照如下步驟進行恢復:恢復順序從低版本逐個恢復到高版本;即,先恢復最近的一次完整備份 weekly_full_backup.071201(舉例),然後恢復緊挨著這個文件的增量備份 daily_incremental_backup.071202,再恢復後一天的備份071203,依次類推。如下:
user1>mkdir newrepos
user1>svnadmin create newrepos
user1>svnadmin load newrepos < weekly_full_backup.071201
user1>svnadmin load newrepos < daily_incremental_backup.071202
user1>svnadmin load newrepos < daily_incremental_backup.071203
....
如果備份時採用了gzip進行壓縮,恢復時可將解壓縮和恢復命令合並,簡單寫成:
user1>zcat weekly_full_backup.071201 | svnadmin load newrepos
user1>zcat daily_incremental_backup.071202 | svnadmin load newrepos
...
svnadmin hot整庫拷貝方式
==============
svnadmin hot是將整個庫都「熱」拷貝一份出來,包括庫的鉤子腳本、配置文件等;任何時候運行這個腳本都得到一個版本庫的安全拷貝,不管是否有其他進程正在使用版本庫。
因此這是俺青睞的備份方式。
1)定義備份策略
備份頻度:每天進行一次全量備份,
備份地點:備份目錄以日期命名,備份路徑到 /home/backup/svn/${mmdd}
備份保留時期:保留10天到15天,超過15天的進行刪除。
備份時間:每晚21點開始
備份檢查:備份完畢後自動運行檢查腳本、自動發送報告。
2)建立備份腳本
在自己home目錄 ~/下創建一個文件,backup.sh:
#!/bin/bash
SRCPATH=/home/svn/repos/; #定義倉庫parent路徑
DISTPATH=/home/backup/svn/`date +\%m%d`/ ; #定義存放路徑;
if [ -d "$DISTPATH" ]
then
else
mkdir $DISTPATH
chmod g+s $DISTPATH
fi
echo $DISTPATH
svnadmin hot $SRCPATH/Project1 $DISTPATH/Project1 >/home/backup/svn/cpreport.log 2>&1;
svnadmin hot $SRCPATH/Project2 $DISTPATH/Project2
cp $SRCPATH/access $DISTPATH; #備份access文件
cp $SRCPATH/passwd $DISTPATH; #備份passwd文件
perl /home/backup/svn/backup_check.pl #運行檢查腳本
perl /home/backup/svn/deletDir.pl #運行刪除腳本,對過期備份進行刪除。
3)建立檢查腳本
在上面指定的地方/home/backup/svn/下建立一個perl腳本:backup_check.pl
備份完整性檢查的思路是:對備份的庫運行 svnlook youngest,如果能正確列印出最新的版本號,則表明備份文件沒有缺失;如果運行報錯,則說明備份不完整。我試過如果備份中斷,則運行svnlook youngest會出錯。
4)定義刪除腳本
由於是全量備份,所以備份不宜保留太多,只需要保留最近10來天的即可,對於超過15天歷史的備份基本可以刪除了。
在/home/backup/svn/下建立一個perl腳本:deletDir.pl
5)修改/etc/crontab 文件
在該文件中指定每晚21點執行「backup.sh」腳本。
svnsync備份
==============
使用svnsync備份很簡單,步驟如下:
1)在備份機上創建一個空庫:svnadmin create Project1
2)更改該庫的鉤子腳本pre-revprop-change(因為svnsync要改這個庫的屬性,也就是要將源庫的屬性備份到這個庫,所以要啟用這個腳本):
cd SMP/hooks;
cp pre-revprop-change.tmpl pre-revprop-change;
chmod 755 pre-revprop-change;
vi pre-revprop-change;
將該腳本後面的三句注釋掉,或者乾脆將它弄成一個空文件。
3)初始化,此時還沒有備份任何數據:
svnsync init file:///home/backup/svn/svnsync/Project1/ http://svntest.subversion.com/repos/Project1
語法是:svnsync init {你剛創建的庫url} {源庫url}
注意本地url是三個斜杠的:///
4)開始備份(同步):
svnsync sync file:///home/backup/svn/svnsync/Project1
5)建立同步腳本
備份完畢後,建立鉤子腳本進行同步。在源庫/hooks/下建立/修改post-commit腳本,在其中增加一行,內容如下:
/usr/bin/svnsync sync --non-interactive file:///home/backup/svn/svnsync/Project1
你可能已經注意到上面的備份似乎都是本地備份,不是異地備份。實際上,我是通過將遠程的備份機mount(請參閱mount命令)到svn伺服器上來實現的,邏輯上看起來是本地備份,物理上實際是異地備份。
❷ 有哪些基於svn的免費源碼託管平台
SVN項目的支持商Collabnet公司有SVN雲服務,實際就是你所需要的SVN託管,是收費的
❸ 如何刪除SVN源代碼管理
首先將刪除工具del_svn.bat 下載地址
http://download.csdn.net/detail/arvinstudy/4406619
放到當前的項目目錄下面。
然後單擊運行
2.*.sln文件和*.csproj以記事本的形式打開,刪除裡面的相關SVN綁定。
3.最後重新打開項目就OK了。
❹ jenkins svn更新源碼報錯如下:
把jenkins的工作目錄清空再取代碼試試。
❺ 關於SVN代碼從伺服器更新
如果之前你從SVN伺服器上下載代碼用的是checkout,那麼想獲取更新後的代碼就只要執行一次update就好了
如果你之前是用export(導出)或直接從網頁訪問SVN伺服器下載的,那麼就只能挨個手動下載更新後的文件了。
❻ svn源代碼管理 出現錯誤:could not open the requested svn filesystem 路徑沒有修改過
一般來說報這個錯都是輸錯了SVN訪問的URL地址,你先檢查一下你訪問地址中的dev這個版本庫是否存在,比如用IE瀏覽器訪問一下這個地址,看看能否正常顯示。
甚至要看看是否SVN伺服器根本就沒正常啟動起來,或者埠定義的不是8443?
另外,你的httpd.conf這個配置文件中,authuserfile、authzsvnaccessfile這兩行似乎都多了一個"/"號,正常應該是「f:/repositories/htpasswd」這個樣子。
❼ 如何用svn部署代碼
方法/步驟
登錄新浪雲伺服器,打開應用後,點擊「代碼管理」進入到代碼管理頁面
進入代碼管理頁面後,點擊代碼部署說明下面的「請使用SVN部署代碼」
然後我們會看到SVN部署代碼的使用方法和操作介紹,找到下載鏈接,點擊下載安裝上
安裝好後,我們根據說明手冊,在本地建立一個文件夾,作為部署應用的根目錄,根目錄創建好後,按照說明手冊部署代碼即可。
部署好代碼後,打開根目錄,直接打開代碼文件,在電腦上對代碼進行修改,保存和編輯。也可以用代碼編輯器修改代碼
修改好代碼後,文件會顯示感嘆號,我們要單擊右鍵,選中「svn commit」
然後安裝步驟,輸入要更新的安全郵箱和安全密碼,點擊「OK」,即可更新成功,更新成功後代碼上的感嘆號就會自動消失了
步驟閱讀
如果是復制粘貼的代碼文件到根目錄,文件會顯示一個問號,需要單擊右鍵,選中「add」,然後在按照第6步的方法更新,才可以完成代碼部署到新浪雲空間
❽ 如何將 SVN 源碼庫轉換為 Mercurial
首先得安裝 Subversion 庫函數
wget http://mirrors.hust.e.cn/apache/subversion/subversion-1.8.8.tar.gz
tar xzf subversion-1.8.8.tar.bz2
cd subversion-1.8.8
subversion-1.8.8 aliang$ ./autogen.sh
buildcheck: checking installation...
buildcheck: autoconf not found.
You need autoconf version 2.59 or newer installed.
brew install autoconf
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/autoconf-2.69.mavericks.bottle.tar.gz
#################################################### 100.0%
==> Pouring autoconf-2.69.mavericks.bottle.tar.gz
🍺 /usr/local/Cellar/autoconf/2.69: 69 files, 2.0M
./autogen.sh
buildcheck: checking installation...
buildcheck: autoconf version 2.69 (ok)
buildcheck: autoheader version 2.69 (ok)
buildcheck: libtool not found.
You need libtool version 1.4 or newer installed
brew install libtool
Warning: A newer Command Line Tools release is available
Update them from Software Update in the App Store.
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/libtool-2.4.2.mavericks.bottle.2.tar.gz
##################################################### 100.0%
==> Pouring libtool-2.4.2.mavericks.bottle.2.tar.gz
==> Caveats
In order to prevent conflicts with Apple''s own libtool we have prepended a "g"
so, you have instead: glibtool and glibtoolize.
==> Summary
🍺 /usr/local/Cellar/libtool/2.4.2: 66 files, 2.2M
./autogen.sh
buildcheck: checking installation...
buildcheck: autoconf version 2.69 (ok)
buildcheck: autoheader version 2.69 (ok)
buildcheck: libtool version 2.4.2 (ok)
Copying libtool helper: /usr/local/share/aclocal/libtool.m4
Copying libtool helper: /usr/local/share/aclocal/ltoptions.m4
Copying libtool helper: /usr/local/share/aclocal/ltsugar.m4
Copying libtool helper: /usr/local/share/aclocal/ltversion.m4
Copying libtool helper: /usr/local/share/aclocal/lt~obsolete.m4
Creating build-outputs.mk...
Creating svn_private_config.h.in...
Creating configure...
You can run ./configure now.
Running autogen.sh implies you are a maintainer. You may prefer
to run configure in one of the following ways:
./configure --enable-maintainer-mode
./configure --disable-shared
./configure --enable-maintainer-mode --disable-shared
./configure --disable-optimize --enable-debug
./configure CUSERFLAGS='--flags-for-C' CXXUSERFLAGS='--flags-for-C++'
Note: If you wish to run a Subversion HTTP server, you will need
Apache 2.x. See the INSTALL file for details.
brew install swig
==> Downloading http://downloads.sourceforge.net/project/swig/swig/swig-2.0.11/swig-2.0.11.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/swig/2.0.11
==> make
==> make install
🍺 /usr/local/Cellar/swig/2.0.11: 597 files, 6.2M, built in 10.1 minutes
./configure --with-swig=/usr/local/bin/swig
configure: Configuring Subversion 1.8.8
... ...
==================================================================
WARNING: You have chosen to compile Subversion with a different
compiler than the one used to compile Apache.
Current compiler: gcc
Apache's compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc
This could cause some problems.
==================================================================
... ...
make swig-py
make install
make check-swig-py
sudo make install-swig-py
sudo cp -r /usr/local/lib/svn-python/ /Library/Python/2.7/site-packages/
執行轉換命令
mkdir hgpath
cd hgpath
hg init
hg convert -s svn -d hg ${local_path} ./hgpath
注意,這里轉換的 SVN 目錄只能是倉庫目錄而不是工作目錄
❾ eclipse svn插件源碼誰有
如果是指subeclipse的話,到這里可以下載源碼: http://subclipse.tigris.org/
在那個頁面,選擇「文檔和文件」,然後在右側可以看看各個不同的版本,裡面有安裝包也有源碼包,根據自己的需要選擇下載。
❿ 如何用svn管理代碼
首先要了解SVN是一種集中式管理代碼的版本控制系統,原理就是把代碼都保存到一個固定的位置,每次從這個位置拷貝更新代碼,進行編輯;再把修改後的代碼提交到該目錄中。多人協作開發也是如此。
本篇經驗將介紹如何利用TortoiseSVN管理代碼。
1
首先在想要下載代碼的位置,右鍵單擊SVN Checkout,如下圖所示: