导航:首页 > 源码编译 > svn源码

svn源码

发布时间:2022-02-04 14:31:47

❶ 如何导出备份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管理代码。

阅读全文

与svn源码相关的资料

热点内容
android图片变灰 浏览:268
linuxvi下一个 浏览:975
安卓手机的应用锁怎么解 浏览:735
linux增加路径 浏览:849
sql身份证号最后四位加密 浏览:533
xp系统表格加密 浏览:856
光遇安卓军大衣什么时候上线 浏览:840
android应用商店图标 浏览:341
java计算圆的面积 浏览:643
应用编译优化recovery 浏览:577
域控命令n 浏览:258
php导出文件 浏览:13
谷歌地图网页版无法连接服务器地址 浏览:298
菜鸟工具在线编译python 浏览:858
栅格化命令有何作用 浏览:825
为什么压缩文件不能解压 浏览:311
足球app哪个软件好 浏览:96
产品经理逼疯程序员的一天 浏览:17
修改svn服务器ip地址 浏览:584
下列关于编译说法正确的是 浏览:246