VisualSVNServer Use And BackUpWord文档下载推荐.docx
《VisualSVNServer Use And BackUpWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VisualSVNServer Use And BackUpWord文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
revision
Subversion为每个冲突文件产生三个附加文件:
filename.ext.mine
更新前的本地文件。
filename.ext.rOLDREV
你作改动的基础版本。
filename.ext.rNEWREV
更新时从档案库得到的最新版本。
使用快捷菜单的编辑冲突EditConflict命令来解决冲突。
然后从快捷菜单中执行已解决Resolved命令,将改动送交到档案库。
请注意,解决命令并不解决冲突,而仅仅是删除filename.ext.mineandfilename.ext.r*文件并允许你送交。
06、CheckforModifications(检查更新)
点击CheckforModifications,系统列表所以待更新的文件及文件夹的状态.
07、RevisionGraph(版本分支图)
查看文件的分支,版本结构,可以点击RevisionGraph,系统以图形化形式显示版本分支.
08、Rename(改名)
SVN支持文件改名,点击Rename,弹出文件名称输入框,输入新的文件名称,点击确定,再把修改提交,即可完成文件改名
09、Delete(删除)
SVN支持文件删除,而且操作简单,方便,选择要删除的文件,点击Delete,再把删除操作提交到服务器
10、Moving(移动)
选择待移动的文件和文件夹;
按住右键拖动right-drag文件(夹)到跟踪拷贝内的新地方;
松开左键;
在弹出菜单中选择movefilesinSubversiontohere
11、Revert(还原)
还原操作,如刚才对文件做了删除操作,现在把它还原回来,点击删除后,再点击提交,会出现如上的提示框,点击删除后,再点击Revert,即已撤销删除操作,如果这时候点击提交,则系统弹出提示框:
没有文件被修改或增加,不能提交
12、Branch/Tag(分支/标记)
当需要创建分支,点击Branch/Tag,在弹出的提示框中,输入分支文件名,输入日志信息,点击确定,分支创建成功,然后可查看文件的版本分支情况
13、Switch(切换)
文件创建分支后,你可以选择在主干工作,还是在分支工作,这时候你可以通过Switch来切换。
14、Merge(合并)
主干和分支的版本进行合并,在源和目的各输入文件的路径,版本号,点击确定。
系统即对文件进行合并,如果存在冲突,请参考冲突解决。
15、Export(导出)
把整个工作拷贝导出到本地目录下,导出的文件将不带svn文件标志,文件及文件夹没有绿色的”√”符号标志。
16、Relocate(重新定位)
当服务器上的文件库目录已经改变,我们可以把工作拷贝重新定位,在ToURL输入框中输入新的地址
17、AddtoIgnoreList(添加到忽略列表)
大多数项目会有一些文件(夹)不需要版本控制,如编译产生的*.obj,*.lst,等。
每次送交,TortoiseSVN提示那些文件不需要控制,挺烦的。
这时候可以把这些文件加入忽略列表。
18、SVN其它相关功能
客户端修改用户密码:
打开浏览器,在地址栏内输入http:
//192.168.1.250/cgi-bin/ChangePasswd,启动客户端修改用户密码的界面,输入正确的用户名,旧密码,新密码(注意密码的位数应该不小于6,尽量使用安全的密码),点击修改即可.
19、SVNCommit(版本提交)
把自己工作拷贝所做的修改提交到版本库中,这样别人在获取最新版本(Update)的时候就可以看到你的修改了。
20、Showlog(显示日志)
显示当前文件(夹)的所有修改历史。
SVN支持文件以及文件夹独立的版本追溯。
21、Repo-Browser(查看当前版本库)
查看当前版本库,这是TortoiseSVN查看版本库的入口,通过这个菜单项,我们就可以进入配置库的资源管理器,然后就可以对配置库的文件夹进行各种管理,相当于我们打开我的电脑进行文件管理一样。
22、RevisionGraph(版本图形)
查看当前项目或文件的修订历史图示。
如果项目比较大型的话,一般会建多个分支,并且多个里程碑(稳定版本发布),通过这里,我们就可以看到项目的全貌。
23、Resolved(解决冲突)
如果当前工作拷贝和版本库上的有冲突,不能自动合并到一起,那么当你提交修改的时候,tortoisesvn就会提示你存在冲突,这时候你就可以通过这个菜单项来解决冲突。
冲突的解决有两种,一种是保留某一份拷贝,例如使用配置库覆盖当前工作拷贝,或者反过来。
还有一种是手动解决冲突,对于文本文件,可以使用tortoiseSVN自带的工具,它会列出存在冲突的地方,然后你就可以和提交者讨论怎么解决这个冲突。
同时它也对Word有很好的支持
24、UpdatetoRevision(更新至版本)
从版本库中获取某一个历史版本。
这个功能主要是方便查看历史版本用,而不是回滚版本。
注意:
获取下来之后,对这个文件不建议进行任何操作。
如果你做了修改,那么当你提交的时候SVN会提示你,当前版本已失效(即不是最新版本),无法提交,需要先update一下。
这样你所做的修改也就白费了。
25、Revert(回滚)
如果你对工作拷贝做了一些修改,但是你又不想要了,那么你可以使用这个选项把所做的修改撤销
26、Cleanup(清除状态)
如果当前工作拷贝有任何问题的话,可以使用这个选项进行修正。
例如,有些文件原来是版本控制的,但是你没有通过tortoiseSVN就直接删除了,但是tortoiseSVN还是保留着原来的信息(每个文件夹下都有一个.svn的隐藏文件夹,存放着当前文件夹下所有文件夹的版本信息)所以这就会产生一些冲突。
可以使用cleanup来清理一下。
27、GetLock/ReleaseLock(加锁/解锁)
如果你不想别人修改某个文件的话,那么你就可以把这个文件进行加锁,这样可以保证只有你对这个文件有修改权。
除非你释放了锁,否则别人不可能提交任何修改到配置库中
28、Branch/tag(分支/标签)
Branch是分支的意思。
例如当在设计一个东西的时候,不同的人有不同的实现,但是没有经过实践检验,谁也不想直接覆盖掉其他人的设计,所以可以引出不同的分支。
将来如果需要,可以将这些分支进行合并。
tag是打标签的意思。
通常当项目开发到一定程度,已经可以稳定运行的时候,可以对其打上一个标签,作为稳定版。
将来可以方便的找到某个特定的版本(当然我们也可以使用版本号来查找,但是数字毕竟不方便)
SVN对于分支和标签都是采用类似Linux下硬链接的方式(同一个文件可以存在两个地方,删除一个不会影响另一个,所做修改会影响另一个),来管理文件的,而不是简单的复制一份文件的拷贝,所以不会有浪费存储空间的问题存在。
29、Export(导出)
这个功能是方便我们部署用。
当我们需要发布一个稳定版本时,就可以使用这个功能将整个工程导出到某个文件夹,新的文件夹将不会包含任何版本信息了。
30、Relocate(版本库转移)
当我们版本库发生转移的时候就需要用到这个功能了。
例如我原先的版本库是建在U盘上的,现在转移到(复制整个配置库文件夹)开发服务器上,使用https代替文件系统的访问。
因此就需要将原来的工作拷贝的目标版本库重新定位到开发服务器上。
31、createpatch(创建补丁)
创建补丁。
如果管理员不想让任何人都随便提交修改,而是都要经过审核才能做出修改,那么其他人就可以通过创建补丁的方式,把修改信息(补丁文件)发送给管理员,管理员审核通过之后就可以使用applypatch提交这次修改了。
Windows下SVN的备份方案
版本控制最关键的一件事是保证数据的安全性,不能因为磁盘损坏,程序故障造成库的无法挽回的错误,为此必需制定较完备的备份策略.在subversion中,我们有三种备份方式:
完全备份,增量备份和同步版本库.
1,完全备份:
最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了.但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造马备份的结果不够准确,失去备份的作用,为此xubversion提供了"
svnadminhotcopy"
的命令,可以防止这种问题.
比如有如下的版本库:
D:
/svnroot
├─project1
│
├─conf
├─dav
├─db
│
├─revprops
├─revs
└─transactions
├─hooks
└─locks
└─project2
└─locks
如果要把project1备份到D:
/svnrootbackup目录下,只需要运行:
svnadminhotcopyd:
/svnroot/project1d:
/svnrootbackup/project1
ps:
如果我们目录下有很多版本库,需要为每个版本库写这样一条语句备份,必需想办法优化这个过程.为此,建立以下的2个bat文件.
simplebackup.bat:
@echo正在备份版本库%1......
@%SVN_HOME%/bin/svnadminhotcopy%1%BACKUP_DIRECTORY%/%2
@echo版本库%1成功备份到了%2!
backup.bat:
echooff
remSubversion的安装目录
setSVN_HOME="
/Subversion"
rem所有版本库的父目录
setSVN_ROOT=D:
rem备份的目录
setBACKUP_SVN_ROOT=D:
/svnrootbak
setBACKUP_DIRECTORY=%BACKUP_SVN_ROOT%/%date:
~0,10%
ifexist%BACKUP_DIRECTORY%gotocheckBack
echo建立备份目录%BACKUP_DIRECTORY%>
%SVN_ROOT%/backup.log
mkdir%BACKUP_DIRECTORY%
rem验证目录是否为版本库,如果是则取出名称备份
for/r%SVN_ROOT%%%Iin(.)do@ifexist"
%%I/conf/svnserve.conf"
%SVN_ROOT%/simplebackup.bat"
%%~fI"
%%~nI
gotoend
:
checkBack
echo备份目录%BACKUP_DIRECTORY%已经存在,请清空。
end
使用的时候,只需要修改backup.bat开头的三个路径,将两个脚本拷贝到"svn_root"
下就可以了.根据以上的配置,你只需要运行backup.bat.就可以把"svn_root"
下的版本库都备份到"backup_svn_root"
里,并且存放在备份所在的目录里.
2,增量备份.
尽管完全备份非常简单,但是也是有代价的,当版本库非常巨大的时候,经常进行完全备份是不现实的,也并不必要,但是一量版本库在备份之间发生问题该如何呢,我们就用到了增量备份.
增量备份通常要与完全备份结合使用,记录着每次subversion提交的变化,然后在需要恢复时能够回到最新的可用状态.
我拉使用的是,svnadmindump命令进行增量的备份,使用方法是:
svnadmindumpd:
/sourcecode/project1--revision15--incremental>
d:
/sourcecode/dumpfile
上面的命令实现了对修订版本15进行增量的备份,其中的输出文件dumpfile只保存了修订版本15更改的内容
恢复增量备份时,使用方法是:
svnadminloadd:
/sourcecode/project1<
上面的命令实现了对增量备份文件恢复到版本库project1中
使用钩子脚本Hooks实现自动增量备份:
1)建立deltabackup.bat文件,内容为:
@echo正在备份版本库%2......
%SVN_HOME%/bin/svnadmindump%SVN_ROOT%/%1--incremental--revision%2>
%DELTA_BACKUP_SVN_ROOT%/%1.dump
@echo版本库%2成功备份到了%3!
2)建立post-commit.bat文件,内容为:
C:
/ProgramFiles/Subversion"
setUNIX_SVN_ROOT=D:
setDELTA_BACKUP_SVN_ROOT=D:
/svnrootbak/delta
setLOG_FILE=%1/backup.log
echobackuprevision%2>
%LOG_FILE%
for/r%SVN_ROOT%%%Iin(.)doifD:
/svnroot/%%~nI==%1%SVN_ROOT%/%%~nI/hooks/deltaBackup.bat%%~nI%2
3)把以上两个脚本可以直接拷贝到版本库的hooks目录下,就可以实现版本库的自动备份。
3.同步版本库:
同步机制,可以实现一个版本库同另一个版本库的同步(但好像只是单向的),我们可以用来实现版本库的备份或镜像。
例如:
同步版本库d:
/sourcecode/project1
1)新建一个空的版本库project2
运行命令:
svnadmincreated:
/sourcecode/project2
2)为新的版本库创建pre-revprop-change钩子脚本(hookscrīpt)
在d:
/sourcecode/project2/hooks目录下新建一个空的pre-revprop-change.bat文件
3)初始化版本库
svnsyncinit
file:
///d:
/sourcecode/project2
4)同步版本库
svnsyncsync
5)至此,版本库同步已经完成。
在使用新的版本库之前,还需要根据需要对版本库的访问权限等进行配置。
使用钩子脚本Hooks实现自动同步:
1)建立post-commit.bat文件,内容为:
%SVN_HOME%/bin/svnsyncsync
--non-interactivesvn:
//localhost/project2
2)把post-commit.bat文件放到版本库project1下的hooks目录下,这样project1每次提交,都会引起project2的同步
SVN完全备份,增量备份,库同步
完全备份
最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了。
但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用,为此Subversion提供了“svnadminhotcopy”命令,可以防止这种问题。
还记得我们的版本库目录吗?
/SVNROOT
│├─conf
│├─dav
│├─db
││├─revprops
││├─revs
││└─transactions
│├─hooks
│└─locks
├─conf
├─dav
├─db
│├─revprops
│├─revs
│└─transactions
├─hooks
如果要把project1备份到d:
/svnrootbak目录下,只需要运行:
/svnrootbak/project1
2,增量备份
尽管完全备份非常简单,但是也是有代价的,当版本库非常巨大时,经常进行完全备份是不现实的,也并不必要,但是一旦版本库在备份之间发生问题,该如何呢,这里我们就用到了增量备份。
增量备份通常要与完全备份结合使用,就像oracle数据库的归档日志,记录着每次Subversion提交的变化,然后在需要恢复时能够回到最新的可用状态。
在我们这个例子中我们使用的是,svnadmindump命令进行增量的备份,使用方法是:
svnadmindumpproject1--revision15--incremental>
dumpfile2
上面的命令实现了对修订版本15进行增量的备份,其中的输出文件dumpfile2只保存了修订版本15更改的内容。
为了记录每次提交的结果,我们需要使用一项Subversion的特性--钩子(hook),看看我们的project1目录:
其中的hooks目录里存放的就是钩子脚本,我们在此处只使用post-commit钩子,这个钩子会在每次提交之后执行,为了实现我们的备份功能,我们在hooks下建立一个文件post-commit.bat,内容如下:
通过这个脚本,可以实现D:
/svnroot下的版本库提交时自动增量备份到D:
/svnrootbak/delta(确定这个目录存在),其中使用的deltaBackup.bat其实可以放在任何地方,只是对脚本的svnadmindump的包装,内容如下:
以上两个脚本可以直接拷贝到project2的hooks目录下,不需要修改就可以实现project2的自动备份。
以上的操作已经OK了,现在需要做的是将完全备份和增量备份结合起来,也就是在完全备份后清理增量备份的结果,使之只保存完全备份后的结果。
当果真出现版本库的故障,就要求我们实现版本库的恢复操作了,这是用要使用svnadminload命令,同时也需要上次的完全备份例如要把上次完全备份backuprepo,和之后的增量备份dumpfile:
svnadminloadbackuprepo<
dumpfile
最后的结果,可以下载svnroot.rar,将之解压缩到d:
/下,然后修改几个bat文件的SVN_HOME就可以使用了。
3,版本库同步
Subversion1.4增加了同步机制,可以实现一个版本库同另一个版本库的同步(但好像只是单向的),我们可以用来实现版本库的备份或镜像。
3.1.对目标库初始化
svnsyncinitsvn:
//localhost/project2svn:
//localhost/project1
其中project2是目标的版本库,而project1是源版本库。
其中的目标版本库必须为空,而且必须允许修订版本属性的修改,也就是在目标的