在这里积累学习中的点点滴滴!

发布新日志

  • svn远程访问

    2009-10-23 17:14:04

    采用svn-win32-1.5.2+TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi

    进行管理,碰到这样的问题,启动服务后使用SVN:\\192.168.1.11访问,访问成功可看到目录结构,问题是无法再目录中新建、加入文件,找了老半天原因才发现必须在authz中添加一个完全访问属性:

    [/]
    *=rw

    才可以进行访问,在这里备忘!

  • SVN得自动备份与恢复

    2009-06-02 16:02:13

    1、最近在学习VSS与SVN的自动备份与恢复操作,前一篇已经记录过如何使用VSS备份,今天再补充一下SVN如何自动备份

    SVN的备份脚本在网络上很多,刚开始的时候自己下了几个,但是都不能用,其中有一个脚本备份处理的文件都是.SVN格式且文件大小都为0K,实在找不到解决办法所以就放弃那个方法了,找了一个如下的脚本:

     全备份,包含两个文件hotcopy.bat和最终执行文件fullbackup.bat

    1、fullbackup.bat

    @echo off
    rem Subversion的安装目录
    set SVN_HOME="D:\Program Files\svn-win32-1.5.2\bin"

    rem 所有版本库的父目录
    set SVN_ROOT=E:\Testback

    rem 备份的目录
    set BACKUP_SVN_ROOT=f:\svnback

    set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%

    if exist %BACKUP_DIRECTORY% goto checkBack
    echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/fullbackup.log
    mkdir %BACKUP_DIRECTORY%
    rem 验证目录是否为版本库,如果是则取出名称备份wscthjeyrt
    for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" hotcopy.bat "%%~fI" %%~nI
    goto end
    :checkBack
    echo 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
    goto end
    :end
    2、hotcopy.bat

    @echo 正在备份版本库%1……

    rem @%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
    @%SVN_HOME%\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
    @echo 版本库%1成功备份到了%2!
    以上的脚本在使用时只需要修改fullbackup.bat中的前三个参数即可,备份的文件与原版本库的目录结构相同如果恢复的话可以直接修改访问目录即可,视为一种最为简单方便的备份方式,但是如果项目库的内容过大此种方式比较占用空间。

    还有一个增量备份的脚本,包含三个文件,dump.bat、最终执行文件svndump.bat和配置库名称配置projectlist.dat

     1)dump.bat

    @ECHO OFF

    rem 调用格式:dump 项目库名

    if "%1"=="" goto no_args

    set PROJECT=%1

    if not exist %RAR_STORE%\%PROJECT% mkdir %RAR_STORE%\%PROJECT%

    cd %RAR_STORE%\%PROJECT%

    SET LOWER=0

    SET UPPER=0

     

    @echo 项目库%PROJECT%2...>> %Log_PATH%\%PROJECT%_log.txt

    %SVN_LOOK% youngest %SVN_REPOROOT%\%PROJECT%> %Log_PATH%\A.TMP

    @echo 项目库%PROJECT%3...>> %Log_PATH%\%PROJECT%_log.txt

    @FOR /f %%D IN (%Log_PATH%\A.TMP) DO set UPPER=%%D

    if %UPPER%==0 GOTO :N_EXIT

    if not exist %Log_PATH%\%PROJECT%_last_revision.txt GOTO :BAKUP

    rem 取出上次备份后的版本号,并做+1处理(注意此算法未在98系统验证)

    @FOR /f %%C IN (%Log_PATH%\%PROJECT%_last_revision.txt) DO @set LOWER=%%C

    @set /A LOWER=%LOWER%+1

    rem 不需要备份,则跳转结束

    IF %LOWER% gtr %UPPER% GOTO :N_EXIT

     

    :BAKUP

    SET FILENAME=%PROJECT%_%LOWER%_%UPPER%

    @ECHO 开始备份项目库:%PROJECT%,生成文件=%FILENAME%

    %SVN_ADMIN% dump %SVN_REPOROOT%\%PROJECT% -r %LOWER%:head --incremental >%FILENAME%.dmp

    rem %RAR_CMD% a -df %PROJECT%_%UPPER%.rar %

    rem 准备写备份日志信息

    IF %LOWER% gtr 0 GOTO :WRITENOTE

    @ECHO ------2-----%date% >> %Log_PATH%\%PROJECT%_log.txt

    @echo -- 3-------添加备份文件 %PROJECT%_%UPPER%.rar,从[%LOWER%]到[%UPPER%] >> %Log_PATH%\%PROJECT%_log.txt

    GOTO :COMPLETE

     

    :WRITENOTE

    @ECHO %date% >> %Log_PATH%\%PROJECT%_log.txt

    @echo -- 4------添加增量备份文件 %PROJECT%_%UPPER%.rar,从[%LOWER%]到[%UPPER%] >> %Log_PATH%\%PROJECT%_log.txt

     

    :COMPLETE

    rem 下面一行用于拷贝备份文件到映射的驱动器上

    rem copy %PROJECT%.rar %RAR_STORE%\%PROJECT%\

    move %FILENAME%.dmp %RAR_STORE%\%PROJECT%\

    del %Log_PATH%\A.TMP

    @echo %UPPER% > %Log_PATH%\%PROJECT%_last_revision.txt

     

    :N_EXIT

    @echo 项目库%PROJECT%处理结束...>> %Log_PATH%\%PROJECT%_log.txt

    @CD..

    @exit /B

    :no_args

    @ECHO ON

    @echo "正确调用方法: dump 项目库名"

     

     

    2)svndump.bat

    echo off

    rem Subversion的安装目录及执行文件

    set SVN_HOME="F:\Program Files\CollabNet Subversion Server"

    set SVN_ADMIN=%SVN_HOME%\svnadmin.exe

    set SVN_LOOK=%SVN_HOME%\svnlook.exe

    rem 配置库仓库根目录

    set SVN_REPOROOT=G:\SVN

    rem 压缩命令

    set RAR_CMD="E:\Progra~1\WinRAR\WinRAR"

    rem 增量备份文件存放路径

    set RAR_STORE="H:\svnincrementW"

    rem 日志及最后一次备份修订号存放文件目录,以下是跟增量备份脚本目录同一目录

    set Log_PATH=G:\backup\incrementW

     

    @echo 项目库%PROJECT%处理1...>> %Log_PATH%\%PROJECT%_log.txt

    rem 读取项目库列表文件,并忽略其中;开头的行

    FOR /f "eol=;" %%C IN (projectlist.conf) DO call G:\backup\incrementW\dump.bat %%C

     

     

    3)projectlist.conf

    ;**************************************************

    ;01. project1开发库

    ; 更新频率: 高

    ;**************************************************

    PROJECT1

    ;**************************************************

    ;02. 此处可写注释信息

    ;**************************************************

    PROJECT2

    PROJECT3

    PROJECT4

    PROJECT5

    以上的脚本修改svndump.bat 中的SET的几个值就可以用了PROJECT1之类的值必须为版本库不可为版本库里面的子目录,恢复的时候使用如下的脚本

     svn服务器的安置bin目录\svnadmin load d:\sourcecode\project1 < d:\sourcecode\dumpfile

    即可恢复 其中project1 必须为一个版本库,否则的话会提示FOMAT文件找不到的提示

  • VSS 关于SSARC命令备份

    2009-05-31 16:23:07

    @ECHO OFF
    @TITLE Backing up source safe databases

    rem 设置文件备份的时间
    set "TIME=%time:~0,2%_%time:~3,2%"

    rem VSS中ssarc.exe所在路径
    SET VSS_Install_Path="D:\Program Files\Microsoft Visual SourceSafe\ssarc.exe"

    rem vss数据库的本地路径,如果在远程访问的话这里采用网络路径如“\\192.168.9.111\vss”
    SET VSS_DB="f:\VSS"

    rem 备份文件的名称
    SET Bak_File="e:\%DATE% %TIME%_Backup.ssa"

    rem vss管理员用户名
    SET VSS_Admin_Name="admin"

    rem vss管理员密码
    SET VSS_Admin_Password="vssadmin"

    FOR /F "tokens=1-3 delims=- " %%i IN ('date /t') DO SET DATE=%%i-%%j-%%k

    rem ssarc命令
    %VSS_Install_Path%  -d- -y%VSS_Admin_Name%,%VSS_Admin_Password% -s%VSS_DB%  %Bak_File% $/
    rem pause
    @ECHO Finished backups

    备份好的ssa文件存档就可以了!如果要恢复的话登录VSS admin
    Archives ->Archives projects 备份数据库,
    Archives ->restor projects 恢复数据库
    选择恢复按照提示操作即可

  • VSS 2005 权限控制

    2009-05-30 14:24:33

    VSS权限管理设置笔记

    第一步:

    安装VSS2005

    第二步:

    1、新建数据库,以管理员身份登入系统建立新的数据库

    2、添加用户

    第三步:

    VSS定义了四级用户访问权限,级别由低到高,后者包括所有前者的权限,比如说拥有Check Out权限就自动拥有了读的权限。

    1)  只读(R):允许查看文件,对应于View,Get等命令

    2)  Check Out(C):可以使用Check OutCheck InUndo Check Out等命令修改文件内容

    3)  文件增删(A):可以在项目中增加、删除、重命名文件或者给文件加标签,对应的命令有AddDeleteLabelRename等。

    4)  破坏(D):这级权限对应与那些具有巨大破坏性的操作,请牢记它们的名字:DestroyPurgeRollback,所以亦有人戏称之为自杀权限。

    1、         登录"Microsoft Visual SourceSafe Administration"进入vss管理员界面,选择一个用户(此文中用户是Li),"Tools-->Rights Assignments for User"。如果碰到“Rights Assignments for User”为灰色,则需要进入Tools-->Options-->Project Rights”勾选“Enable Right and Assignments commands”以便打开项目权限设定。

    未完,先加个链接进来

    http://hi.baidu.com/summerrain3/blog/item/fda17fef34d0a71efcfa3c58.html

     

  • SVN的权限控制【转】

    2009-05-15 09:46:39

    前一段时间在学习SVN,发现一个很不错的文档,因此转发一下,以供大家不时之需。

     

    1   前言

    1.1   Subversion 权限简介

    Subversion 的使用当中,存在认证授权两个概念。认证,即 authentication,是指用户名与密码的认证。授权,即 authorization ,是指某用户对某个目录是否具备读、写权限的一种审核。这两者配合作用,就组成了 Subversion 的整个帐户管理体系。

    在实际的工作当中,我们有时候会遇见需要控制项目目录的访问权限的情况,比如说对项目的一些关键模块进行限制,仅允许少数授权人士才可以修改等。由于项目的目录本身就是作为版本库的一个部分被 Subversion 所收管,所以我们无法利用操作系统的帐户权限体系,来实现授权控制。因此,这个问题就只有让svn自己来解决了。

    Subversion 提供了面向目录的帐户权限管理功能,通过它,我们就可以很精确地实现项目目录的访问控制。不过在 1.2 及其以前的版本,我们只能利用 mod_authz_svn.so 模块,结合 Apache 服务器来实现目录访问控制,这对于对 Apache 的配置与使用不是很熟悉的人来说,就不是很方便了。而Subversion终于在 1.3 版本上,在 svnserve.exe 服务器里面添加了这一功能,方便了很多人。

    1.2   其他信息

    本文面向那些 Subversion 的管理员,或者任何对 Subversoin 有兴趣的人们。本文假定读者对Subversion有一定的了解,因此不打算对所有涉及到的安装、使用,做一个细节性的描述。若对于文章中描述的其他细节方面有所疑问,请访问参考文献一节里面的参考资料。如果你对本文任何地方有什么意见,或者发现本文有着大大小小的错误,请联系 zhengxinxing gmail com

    本文是基于 Subversion 1.3.2MS Windows 2003 Server Edition 平台来编写的,且 Subversion 服务器是利用 svnserve.exe 来架设的。不过,本文讲述到的绝大多数内容,都是不仅与操作系统平台无关,而且与是采用 svnserve(.exe) 还是使用 Apache 来作为 Subversion 服务器也基本无关。因此为免罗嗦,本文就以 svnserve(.exe) 为例进行描述,而略过 Apache 服务器相关的内容,有兴趣的读者可以参考其他文章来在 Apache 服务器下实现类似的功能。

    本文是利用 reST 格式来编写的,如果你对它感兴趣,请访问 http://docutils.sourceforge.net/rst.html 。如果想要看到更好的html格式,你可以通篇复制本文到一个文本文件里,然后利用 docutils rst2html.py 脚本编译它,当然,首先你必须安装 python

    2   实战

    本章先直接给出需求及其最终的结果,如果你觉得对配置有什么疑问,或者看不懂,请不要着急,我会在后面的章节详细描述的。

    2.1   背景假设

    厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计、销售,并在北京、上海各设立了一个办事处。对于工作日志,原先采用邮件方式发给经理,但是这种方式有个缺点,那就是不具备连续性,要看以前的日志必须一封一封邮件去查看,很麻烦。于是就想到利用 Subversion, 让员工在自己电脑上编辑日志,然后利用svn传送回来,既方便员工自己编写日志,又方便对日志的归档处理,而且提交日志的时候只需要执行一下 svn commit 即可,比发送邮件还要简单的多。

    • svn服务器相关信息
      • 服务器地址: 192.168.0.1
      • 服务器OS MS Windows 2000 Server Edition 中文版
      • 用于存放日志的代码库本地目录: D:\svn\arm
    • arm部门文档的目录结构如下:

    ·         arm                 部门名称

    ·         ├─diary           工作日志目录

    ·           ├─headquarters    总部工作日志目录

    ·           ├─beijing         北京办日志目录

    ·           └─shanghai        上海办日志目录

    ·         ├─ref             公司公共文件参考目录

    ·         └─temp            临时文件目录

    • 人员情况
      • morson,公司总经理,不习惯使用电脑,更喜欢传统的纸与笔,以及面对面的交流
      • michaelarm事业部的部门经理,没事的时候喜欢弄点儿新技术,用svn来管理日志,就是他想出来的主意
      • scofield,北京办人员,老员工,为人油滑难管
      • lincon,上海办人员,老员工,大老实人一个
      • linda,总部协调员、秘书,文笔不错,长得也不错
      • rory,单片机技术员,技术支持
    • 访问权限需求分析
      • 允许总经理、部门经理读取所有文件。顺便给他们开放写权限,以便体现对他们职位的尊重,虽然对于某些文件来说,他们若拥有权限其实也没什么用处
      • 除部门经理外,所有其他人员,均只能看到本办事处人员工作日志
      • 不允许匿名访问
      • ref目录只允许经理和秘书读写,对其他人只读
      • temp目录人人都可以随意读写

    2.2   使用 svnserve.exe 作为 Subversion 服务器

    本节描述如何利用 svnserve.exe 来作为代码库服务器端,实现上述功能。至于另外一种代码库服务器端,即利用 Apache 结合 mod_dav_svn.so 来实现的代码库服务器端,由于其对于本文叙述的内容实现精细的目录访问权限控制而言,与前者没有太大的区别,故而略过不提。它们二者只是在初次安装、配置方面存在一些不同,有兴趣的读者,可以参考其他文档,重新实验下述步骤。

    2.2.1   启动 Subversion 服务

    在服务器端,打开一个命令行窗口,用CD命令进入 Subversion 安装目录下的 bin 目录,运行如下指令:

    svnserve -d -r d:\svn

    其中的 -d 参数表示 svnserve.exe 将会作为一个服务程序运行在后台,而 -r 参数表示将 D:\svn 目录指定为代码库的根目录。这样,当客户端使用类似 svn://192.168.0.1/foo 这样内容的 URL 来访问服务器时候,其所访问到的真实代码库,其实就是 D:\svn\foo

    用上述命令行方式启动的 svn 服务有个小缺点,就是在本试验过程中,服务器端必须要一直开着那个运行了上述命令的DOS窗口,不能关闭它。如果不想看到这个窗口,可以将 svnserve 安装成 windows 的一个 services,安装方式请参考其他文章。

    2.2.2   建立代码库

    在服务器端的 D:\svn 目录下,建立一个名为 arm 的代码库,命令如下:

    D:\svn>svnadmin create arm

    使用上述命令之后,如果不出问题的话,在 D:\svn 目录下就会多出一个叫做 arm 的目录,其下具备 confdavhookslocksdb 等子目录或文件,此即 一个名为arm的代码库 。从此,通过 svn://192.168.0.1/arm 这样的 URL,我们就可以对这个代码库进行访问了。接下来就要进入本文的正题了,也就是权限配置部分了。

    其实进入 arm\conf 目录你就会发现,它下面已经存在三个写了一些帮助信息和示例的配置文件,以帮助用户尽早掌握其配置方法。这三个默认的配置文件分别是 svnserve.confpasswdauthz 。其中后两者没有后缀,对于 windows 系统的用户来说,看起来总是有些怪异,所以在接下来的章节里面,我将它们两个都给添加了个 conf 后缀,以便管理。

    2.2.3   编辑代码库基础配置文件

    在服务器端,编辑代码库的 arm\conf\svnserve.conf 文件,如下:

    [general]

    password-db = passwd.conf

    anon-access = none

    auth-access = write

    authz-db = authz.conf

    2.2.4   管理用户帐号

    在服务器端,新建 arm\conf\passwd.conf 文件,如下:

    [users]

    morson = ShowMeTheMoney

    michael = mysecretpassword

    scofield = hellolittilekiller

    lincon = asyouknows111

    rory = 8809117

    linda = IlikeWorldCup2006

    2.2.5   建立目录访问权限控制文件

    在服务器端,新建 arm\conf\authz.conf 文件,内容如下:

    [groups]

    g_vip = morson

    g_manager = michael

    g_beijing = scofield

    g_shanghai = lincon

    g_headquarters = rory, linda

    g_docs = linda

     

    [arm:/]

    @g_manager = rw

    * = r

     

    [arm:/diary/headquarters]

    @g_manager = rw

    @g_headquarters = rw

    @g_vip = r

    * =

     

    [arm:/diary/beijing]

    @g_manager = rw

    @g_beijing = rw

    @g_vip = r

    * =

     

    [arm:/diary/shanghai]

    @g_manager = rw

    @g_shanghai = rw

    @g_vip = r

    * =

     

    [arm:/ref]

    @g_manager = rw

    @g_docs = rw

    * = r

     

    [arm:/temp]

    * = rw

    2.2.6   导入代码

    在客户机 F:\temp 目录下,建立好前述背景假设一节中描述的目录结构,然后用命令 F:\temp>svn import arm svn://192.168.0.1/arm --username michael --password mysecretpassword 导入整个目录结构。

    这条指令的精确意思是,将 arm 目录下面的所有东西,导入到那个名叫 arm 的代码库中去。如果你不指定源目录,则 svn 会默认将当前目录作为源目录。比如说,你处于 F:\temp 目录下的时候,直接执行 svn import svn://192.168.0.1/arm ,那么当你取出你的代码的时候,你会发现,居然多了一层名为 arm 的目录。结果,你就必须使用类似 svn://192.168.0.1/arm/arm 这样怪异的URL,才能够正确访问到你的代码们。

    这一点粗看好像不是特别重要,不过联想到前述的目录授权规则,可都是按照标准的项目目录结构来设计的。突然之间,你项目的根目录之上,多出了一个名为 arm 的目录,那么我们的所有目录授权规则,基本上都要全部改过了,否则除了根目录,你永远会得到一个莫名其妙的“access denied”。由于 Subversion 在这一步骤上的界面不够人性化,因此这是初学者很容易弄混的地方之一。

    2.2.7   测试

    在服务器上,打开一个 DOS Prompt 窗口,输入如下指令:

    svn co svn://127.0.0.1/arm --no-auth-cache --username rory --password 8809117

    我们应该得到如下目录结构:

    arm

    ├─diary

      └─headquarters

    ├─ref

    查看(488) 评论(0) 收藏 分享 管理

Open Toolbar