- 浏览: 226540 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (105)
- java (30)
- linux unix (19)
- 版本控制 (15)
- ajax (2)
- 开发工具及辅助工具 (3)
- database (2)
- flex (10)
- 其它 (2)
- windows (1)
- 开源企业应用 (6)
- 开源erp (4)
- 开源cms (0)
- 开源门户 (0)
- php (1)
- ofbiz&opentaps (4)
- 运维管理 (0)
- MOQUI (3)
- linux unix mysql (0)
- mysql (2)
- hadoop (3)
- android (0)
- 微信公众号 (1)
- java cassandra nosql (0)
- Nosql (1)
- socket (1)
- tcp (1)
- udp (1)
- 十六进制 (1)
- ofbiz (1)
- docker (1)
- 虚拟化 (0)
- 分布式 (0)
最新评论
-
w87848608:
用phpunit --coverage-html命令一样出现了 ...
关于phpunit与Selenium取coverage的配置(原创) -
surpass_li:
好久没来这了,不好意思,你参照Deploying OFBiz ...
ofibz10.04部署到 jboss5.1.0成功 -
tide2046:
求部署文档。谢谢。
ofibz10.04部署到 jboss5.1.0成功 -
Romotc:
征文 +1,1楼的方法还是有点问题。
eclipse编译时过滤SVN版本控制信息方法 -
我改名了:
谢谢,收 藏 了,备用。
Java获取客户端真实IP地址的两种方法(转)
为了统一进行文档与程序的版本管理,更好的使团队进行协同工作。对版本管理软件定为Subversion(一款开源的项目管理工具)。<o:p></o:p>
以下关于apache与subversion相结合的服务器的安装与配置<o:p></o:p>
一.windows上安装apache<st1:chsdate isrocdate="False" w:st="on" year="1899" day="30" islunardate="False" month="12">2.0.59</st1:chsdate>+Subversion-1.3.1 <o:p></o:p>
OS: Windows XP SP2
1) 安装Apache Server
2) 安装SVN
3) 配置邮件通知
<!---->1. <!---->安装apache_<st1:chsdate isrocdate="False" w:st="on" year="1899" day="30" islunardate="False" month="12">2.0.59</st1:chsdate>-win32-x86-no_ssl.msi
安装过程中设置以下参数:
Network Domain: svn.company.com
Server name: svn.company.com
Administrator's Emai Address: admin@company.com
安装到默认路径为D:\devtools\Apache2
<!---->2. <!---->安装svn-<st1:chsdate isrocdate="False" w:st="on" year="1899" day="30" islunardate="False" month="12">1.3.1</st1:chsdate>-setup.exe,安装到默认路径为D:\devtools\Subversion默认安装后,在apache的配置文件httpd.conf中会自动加入以下两行。
LoadModule dav_svn_module "D:/devtools/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module " D:/devtools/Subversion/bin/mod_authz_svn.so"
把这行的注释去掉
LoadModule dav_fs_module modules/mod_dav_fs.so
拷贝D:\devtools\Subversion\bin下的libdb43.dll到这个目录下Apache2\modules
打开apache的配置文件httpd.conf在末尾处加入以下参数:
<location svn=""></location>
<location svn=""></location>
<location svn=""></location>
< L*ocat*ion /s*vn>
DAV svn
SVNListParentPath on
SVNParentPath E:\svn-repository
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile E:/svn-repository/test/passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
< /L*oc*at*ion **>
保存。(在这里权限文件我不多讲了,大家多做实验就明白了)
建立仓库
打开CMD命令行界面,"开始" -> "运行" -> "cmd" -> "回车"
C:\ > d: //进入d盘(因为我们要在d盘下创建仓库)
e:\> md svn-repository //创建一个名叫svn-repository的目录
e:\> c: //进入C盘
C:\> cd\ //退到C盘根目录
C:\ > cd D:\devtools\Subversion\bin //进入subversion/bin目录
D:\devtools\Subversion\bin> svnadmin create E:\svn-repository\test //用svnadmin命令创建名为test的仓库(这条命令成功后,在test下会出现很多文件夹和文件)
D:\devtools\Subversion\bin> cd D:\devtools\Apache2\bin //进入apache\bin目录
D:\devtools\Apache2\bin> htpasswd -cm E:\svn-repository\test\passwd user1 //用htpasswd命令创建第一个用户(user1),同时生成密码认证文件,c参数为create,m参数为MD5加密方式
New password: ****** //输入密码
Re-type new password: ****** //再次输入密码
Adding password for user test //加入用户成功
D:\devtools\Apache2\bin> htpasswd -m E:\svn-repository\test\passwd user2 //用htpasswd命令创建第二个用户(user2),注意如果在这时加入c参数会覆盖掉之前创建的用户及文件。
New password: ******
Re-type new password: ******
Adding password for user test 2 //加入用户成功
重复以上述操作,添加所有用户。
重新启动apache,进行测试。
用IE打开http://svn.company.com/svn,这时应该可以看到
Revision 0: /
--------------------------------------------------------------------------------
Powered by Subversion version <st1:chsdate isrocdate="False" w:st="on" year="1899" day="30" islunardate="False" month="12">1.3.1</st1:chsdate> . //说明我们已经配置成功了
<!---->3. <!---->关于权限的配置
<!---->4. <!---->更改apache的配置文件httpd.conf在末尾处“AuthzSVNAccessFile”行的注释去掉,后边的参数使用绝对路径如:E:\svn-repository\svnaccessfile。:
<location svn=""></location><o:p></o:p>
<location svn=""></location>
< L*ocat*ion /s*vn>
DAV svn
SVNListParentPath on
SVNParentPath E:\svn-repository
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile E:/svn-repository/test/passwd
AuthzSVNAccessFile E:\svn-repository\svnaccessfile
Require valid-user
< /L*oc*at*ion **>
(以上有关< /L*oc*at*ion **>的,去掉*使用)
各级目录的访问与修改权限参见下E:\svn-repository\svnaccessfile 如下:
#对用户进行分组,然后把组分配给每一个目录进行权限控掉。
[groups]
admin = admin
devteam1 = user1
devteam2 = user2,user3
docs = user4
<o:p> </o:p>
#admin组的成员对HealthPlatform库根目录有读的权限有读和写的权限,
# docs ,devteam1和devteam2组的成员对HealthPlatform库根目录有读的权限,
#其它用户对HealthPlatform库没有读与写权限。
#其它目录的权限类同
[HealthPlatform:/]
@admin = rw
@devteam1 = r
@devteam2 = r
@docs = r
* =
<o:p> </o:p>
[HealthPlatform:/docs]
@docs = rw
* = r
<o:p> </o:p>
[HealthPlatform:/project]
@devteam1 = rw<o:p></o:p>
@devteam2 = rw<o:p></o:p>
@admin = r<o:p></o:p>
* = <o:p></o:p>
<o:p> </o:p>
[test:/]<o:p></o:p>
@devteam1 = rw
@devteam2 = rw
@admin = rw
* =
规划完权限后要重启apache.
<o:p> </o:p>
<!---->a) <!---->代码库初使化
D:\tmp>svn import tp http://svn.surpass.org/svn/test / --username admin --message "t
est"
认证领域: <st1:chmetcnv w:st="on" tcsc="0" unitname="F" sourcevalue="893" numbertype="1" negative="False" hasspace="False">893f</st1:chmetcnv><st1:chmetcnv w:st="on" tcsc="0" unitname="C" sourcevalue="93" numbertype="1" negative="False" hasspace="False">93c</st1:chmetcnv>3-004e-fc<st1:chmetcnv w:st="on" tcsc="0" unitname="F" sourcevalue="4" numbertype="1" negative="False" hasspace="False">4f</st1:chmetcnv>-a<st1:chmetcnv w:st="on" tcsc="0" unitname="a" sourcevalue="38" numbertype="1" negative="False" hasspace="False">38a</st1:chmetcnv>-7db494922394
“admin”的密码:**********
新增 tp\test-dev
新增 tp\test-dev\readme.txt
新增 tp\readme.txt
新增 tp\test-test
新增 tp\test-test\readme.txt
<o:p> </o:p>
提交后的修订版为 1。
看到以上信息代码库初始化完成.
<o:p> </o:p>
<!---->b) <!---->从代码库中取出一个版本
D:\tmp>svn checkout http://svn.surpass.org/svn/test / --no-auth-cache --username admin
r
A test\readme.txt
A test\test-dev
A test\test-dev\readme.txt
A test\test-test
A test\test-test\readme.txt
取出修订版 1。
评论
版本控制最关键的一件事是保证数据的安全性,不能因为磁盘损坏,程序故障造成版本库无可挽回的错误,为此必须制定较完备的备份策略。在Subversion中,我们有三种备份方式:完全备份,增量备份
1, 完全备份
最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了。但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用,为此Subversion提供了“svnadmin hotcopy”命令,可以防止这种问题。
如果要把project1备份到d:\svnrootbak目录下,只需要运行:
svnadmin hotcopy d:\svnroot\project1 d:\svnrootbak\project1
但是我们作为配置管理员,必须想办法优化这个过程,如果我们这个目录下有许多版本库,需要为每个版本库写这样一条语句备份,为此我写了下面的脚本,实现备份一个目录下的所有版本库。我们在D:\SVNROOT下创建了两个文件,simpleBackup.bat:
@echo 正在备份版本库%1......
@%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本库%1成功备份到了%2!
这个文件仅仅是对“svnadmin hotcopy”的包装,然后是backup.bat:
echo off
rem Subversion的安装目录
set SVN_HOME="D:\Subversion"
rem 所有版本库的父目录
set SVN_ROOT=D:\svnroot
rem 备份的目录
set BACKUP_SVN_ROOT=D:\svnrootbak
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log
mkdir %BACKUP_DIRECTORY%
rem 验证目录是否为版本库,如果是则取出名称备份
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" %SVN_ROOT%\simpleBackup.bat "%%~fI" %%~nI
goto end
:checkBack
echo 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
goto end
:end
你在使用的时候,只需要修改backup.bat开头的三个路径,将两个脚本拷贝到“SVN_ROOT”下就可以了。根据以上的配置,你只需要运行 backup.bat,就可以把“SVN_ROOT”下的版本库都备份到“BACKUP_SVN_ROOT”里,并且存放在备份所在日的目录里,例如 “D:\svnrootbak\2006-10-22”。
虽然这部分工作很简单,可是必须有人定时地去执行这个操作(例如每周一凌晨),为了避免发生遗忘的情况,我们可以将这个操作加入到系统的at任务当中去,例如还是上面的环境,为了安装at任务,我们运行:
at 1:00 /every:M D:\svnroot\backup.bat这样在每周一凌晨1:00都会执行这个备份过程。当然备份在本机也是不安全的,你也许需要上传到别的机器,这个就要靠你自己去实现了。
2, 增量备份
尽管完全备份非常简单,但是也是有代价的,当版本库非常巨大时,经常进行完全备份是不现实的,也并不必要,但是一旦版本库在备份之间发生问题,该如何呢,这里我们就用到了增量备份。
增量备份通常要与完全备份结合使用,就像oracle数据库的归档日志,记录着每次Subversion提交的变化,然后在需要恢复时能够回到最新的可用状态。在我们这个例子中我们使用的是,svnadmin dump命令进行增量的备份,使用方法是:
svnadmin dump project1 --revision 15 --incremental > dumpfile2
上面的命令实现了对修订版本15进行增量的备份,其中的输出文件dumpfile2只保存了修订版本15更改的内容。
为了记录每次提交的结果,我们需要使用一项Subversion的特性--钩子(hook),看看我们的project1目录:
├─project1
│ ├─conf
│ ├─dav
│ ├─db
│ │ ├─revprops
│ │ ├─revs
│ │ └─transactions
│ ├─hooks
│ └─locks
其中的hooks目录里存放的就是钩子脚本,我们在此处只使用post-commit钩子,这个钩子会在每次提交之后执行,为了实现我们的备份功能,我们在hooks下建立一个文件post-commit.bat,内容如下:
echo on
set SVN_HOME="D:\devtools\Subversion"
set SVN_ROOT=E:\svn-repository
set UNIX_SVN_ROOT=E:\svn-repository
set DELTA_BACKUP_SVN_ROOT=E:\bak\delta
set LOG_FILE=%1\backup.log
echo backup revision %2 >> %LOG_FILE%
for /r %SVN_ROOT% %%I in (.) do if exist "%%I\conf\svnserve.conf" %SVN_ROOT%\%%~nI\hooks\deltaBackup.bat %%~nI %2
goto end
:end
通过这个脚本,可以实现D:\svnroot下的版本库提交时自动增量备份到D:\svnrootbak\delta(确定这个目录存在),其中使用的deltaBackup.bat其实可以放在任何地方,只是对脚本的svnadmin dump的包装,内容如下:
@echo 正在备份版本库%2......
%SVN_HOME%\bin\svnadmin dump %SVN_ROOT%\%1 --incremental --revision %2 >> %DELTA_BACKUP_SVN_ROOT%\%1.dump
@echo 版本库%2成功备份到了%3!
以上两个脚本可以直接拷贝到project2的hooks目录下,不需要修改就可以实现project2的自动备份。
以上的操作已经OK了,现在需要做的是将完全备份和增量备份结合起来,也就是在完全备份后清理增量备份的结果,使之只保存完全备份后的结果。
当果真出现版本库的故障,就要求我们实现版本库的恢复操作了,这是用要使用svnadmin load命令,同时也需要上次的完全备份例如要把上次完全备份backuprepo,和之后的增量备份dumpfile:
svnadmin load project1 < project1.dump
1、 本文档适用于对Subvesion的自带服务svnserve进行权限配置,全部在authz.conf文件中完成。
2、 如果要对含有中文的目录或文件进行管理或分配时,需要将该文件保存为UTF-8格式,微软的记事本保存为UTF-8格式无效,所以不要用。可用如UltraEdit或EditPlus等软件完成,保存时,格式应选择UTF-8 NO BOM。
3、 权限分配时,应遵守从根目录到子目录、从设置最广泛权限到最精细权限、从只读权限到读写权限设置原则,即从根目录开始设置最广泛的访问权限,然后逐步设置下属子目录的访问权限。提示:目录的访问权限既可以分配给组,也可以分配指定用户。
Svn协议下的登录验证与权限控制,分别在版本库的conf目录下,svnserve.conf总配置文件; passwd.conf存用户名与密码的配置文件; authz.conf存权限配置的文件
现举例进行说明:
启动服务:服务应指向所有版本库的根目录,本例中为D:\SVN,所有版本库都在D:\SVN目录下;
命令如下:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
项目情况:D盘根目录下有一个文件夹SVN,在该文件夹中有jsyxv3、svntest两个版本库(可以有更多个),这些版本库共享使用同一个权限配置文件,目录结构如下:
D:\SVN
|---jsyxv3 (项目一,子目录略)
|---svntest (项目二,子目录略)
|---authz (共享的权限配置文件)
|---passwd (共享的密码文件)
#=====配置开始=====
#分组:
[groups]
group_admin = admin
group_ user1 = user1
group_ user2 = user2,user3
group_user3 = user4
#设置对根(即SVN)目录下,所有版本库的访问权限
[/]
* = r #所有登录用户默认权限为只读
@group_admin = rw #可以分配给组,该组有读写权限
wws = rw #也可以像这样分配给指定用户
#以下将对各版本库的及其目录进行权限分配
[jsyxv3:/] #设置对jsyxv3版本库中,所有项目的访问权限
* = #未授权用户没有任何权限
@group_user1 = rw
[jsyxv3:/程序管理] #设置对jsyxv3版本库中程序管理目录的访问权限
* = #未授权用户没有任何权限
@group_user2 = rw
[jsyxv3:/项目管理] #设置对jsyxv3版本库中项目管理目录的访问权限
* = #未授权用户没有任何权限
@group_user3 = rw
[svntest:/] #设置对svntest版本库中,所有项目的访问权限
* = #未授权用户没有任何权限
@group_user1 = rw
[svntest:/程序管理] #设置对svntest版本库中程序管理目录的访问权限
* = #未授权用户没有任何权限
@group_user2 = rw
@group_user3 = rw
[svntest:/项目管理] #设置对svntest版本库中项目管理目录的访问权限
* = #未授权用户没有任何权限
@group_user4 = rw
#=====配置结束=====
4、 最后重要提示:
4.1启动的服务与客户端检出的关系:
4.1.1 如果启动的服务指向一个具体的版本库,如红字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN/svntest" displayname= "SVNService" depend= Tcpip start= auto
则客户端检出的地址应为:svn://192.168.3.7/
4.1.2 如果启动的服务指向的是多个版本库的父目录,如红字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
则客户端检出的地址应为:svn://192.168.3.7/svntest
发表评论
-
svn钩子脚本,检查提交时日志填写情况
2011-07-07 15:31 1942版本库生成后,hooks目录下就存在一些钩子脚本的模板,用 ... -
git服务器gitolite安装与简单配置
2011-05-20 23:41 6804说到Git,作为Linus的另一大著名作品,目前已经成熟,与C ... -
解决Msysgit的中文乱码问题
2010-05-31 15:47 2720解决Msysgit的中文乱码问题 Git的Windows版本 ... -
对比SVN学习GIT版本管理工具(转)
2010-05-15 08:07 1579因为近期工作 ... -
git 使用http代理
2010-05-13 15:50 2028由于公司使用代理上网,使用git时需要走http proxy。 ... -
如何在svn系统中使用git(转)
2009-12-12 21:18 1691如果正在使用svn,打 ... -
Windows下subversion强制写日志钩子脚本
2008-03-07 09:03 7498Windows下subversion强制写日志强制写日志钩子脚 ... -
svn 命令行 faq(转)
2007-07-30 20:57 6342svn 命令行 faq 作者 willem ... -
Subversion之路--实现精细的目录访问权限控制(转)
2007-07-20 20:17 1598----- Original Subversion之路--实现 ... -
VSS使用手册 (转)
2007-03-20 22:06 16691 VSS概述 版本控制是工作组软件开发中的重要方 ... -
搭建svn+apache+trac平台(一)-安装 (转)
2007-03-20 22:00 2661我们的团队开始要进行前期的开发了,还有公司也有可能开始转到.N ... -
svnserver配置和使用
2006-12-02 23:40 5315svnserver配置和使用 svnserver 是个 ... -
subversion配置学习笔记
2006-12-02 20:32 2764subversion 工具已经安装完成.进行以下配置(环境fc ... -
利用模版生成CVS注释
2006-12-02 10:55 2623在Java源文件中添加下面用红色标记的一行 /** * @ ...
相关推荐
Umi-OCR-main.zip
基于springboot+Web的毕业设计选题系统源码数据库文档.zip
基于springboot校外兼职教师考勤管理系统源码数据库文档.zip
58商铺全新UI试客试用平台网站源码
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于SpringBoot的口腔诊所系统源码数据库文档.zip
数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/143956923
3-240P2162218.zip
网络安全 基于Qt创建的Linux系统下的浏览器.zip
C++ 类和对象:多态-练习题目2(制作咖啡和茶叶)
基于springboot+J2EE在线项目管理与任务分配中的应用源码数据库文档.zip
简介本项目提供了一个在51单片机上运行的简单操作系统,旨在帮助学习者深入理解操作系统的基本原理和任务调度机制。该操作系统通过汇编和C语言编写,实现了任务调度、中断处理等核心功能,并提供了详细的源代码和注释,方便学习和实践。
本文将深度卷积神经网络(CNN)设计实现一个复杂结构的生成模型,旨在通过多阶段的编码器-解码器结构,能够有效地将灰度图像转换为彩色图像。最后,本文将实现一个简单的Web应用,用户可以通过上传灰度图像,应用会使用预训练的Caffe模型对其进行颜色化,并将结果返回给用户。 1.模型设计:模型由多个卷积层、ReLU激活函数和批归一化层组成,通过前向传播函数将输入的灰度图像(L通道)转换为彩色图像(ab通道)。如果指定了 pretrained=True,则会自动下载并加载预训练的模型权重。 2. 系统通过Flask框架提供了一个Web应用,用户可以上传灰度图像,系统会自动将其转换为彩色图像,并在网页上显示结果。整个过程包括文件验证、图像处理、颜色化预测和结果展示,具有较高的实用性和用户体验。
一个JAVA图形化的、联网的五子棋游戏.zip javaweb
KWDB 是一款面向 【AIoT 场景】的【分布式多模数据库】,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。
页面数量:7页 网页主题:网站模板、酒店网站模板、官方网站模板 网页页面:首页、关于我们、相关服务、服务详情、在线博客、博客详情、在线留言 页面实现元素:加载动画、滚动加载、主题切换、导航栏 、轮播图、图文列表、图片切换、 文字列表、 按钮悬停、图片悬停、表单 实现技术:HTML、CSS 、JQuery 源码样式及js文件均分开存放,所有内容仅供初学者学习参考
内容概要:本文档提供了详细的 Neo4j 安装与配置指南,涵盖 Windows、Linux 和 Mac 系统的安装步骤。具体包括下载、安装、启动服务、修改配置文件(如端口配置、远程访问和内存限制)、设置管理员密码以及基本的 Cypher 查询语言使用方法。同时,还提供了一些常见问题及其解决方案。 适合人群:数据库管理员、软件开发人员、系统管理员。 使用场景及目标:①帮助初学者快速掌握 Neo4j 的安装与配置;②适用于需要搭建和使用图数据库的项目;③为已有用户解决常见问题。 其他说明:本文档不仅包含了基础的安装和配置流程,还提供了实际操作中可能遇到的问题及其解决方法,有助于提高使用者的实际操作能力。
基于SpringBoot+Vue的软件产品展示销售系统源码数据库文档.zip
《书戴嵩画牛》教学课件.pptx
20届智能车 【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。