首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CentOS 6.5 x64安装svn

#svn安装 yum install -y subversion 卸载svn旧版本 yum remove -y subversion wget http://pkgs.repoforge.org/subversion/subversion-1.7.4-0.1.el6.rfx.x86_64.rpm 安装新版本 rpm -ivh subversion-1.7.4-0.1.el6.rfx.x86_64.rpm 创建svn根目录 mkdir /svndata 创建svn公共配置目录 mkdir -p /usr/local/subversion/conf cd /usr/local/subversion/conf 编辑用户文件authz 内容如下: [groups] backend=zty [/] whh=rw @backend=rw 解释: backend是代表一个用户组,@backend=rw表示用户组有读写权限。 whh是用来跑钩子脚本的用户,名字大家可以随便取,下面会说到钩子脚本。 如果需要添加用户zhang,修改backend=zty,在后面加上即可,多个用户用逗号隔开,效果如下: backend=zty,zhang 编辑密码文件passwd 内容如下: [users] whh = whh zty = zty123 解释: 等号左边是用户,等号右边是密码 创建bin目录 mkdir -p /usr/local/subversion/bin 链接文件 ln -s /usr/bin/svn /usr/local/subversion/bin/svn 创建svn根目录 mkdir /svndata 创建svn日志目录 mkdir /var/log/svn 创建dts项目检出目录,此目录必须是空的。 一般svn服务器和网站服务器是在同一服务器上面的。 网站服务器的根目录为/www,所以dts项目从svn检出的路径也在/www目录下。 一旦客户端提交代码,访问网页,就可以看到效果。 mkdir /www/dts 创建项目 cd /svndata svnadmin create dts 编辑配置文件 cd /svndata/www/dts/conf/ 编辑配置文件svnserve.conf 清空所有内容 写入如下内容: [general] anon-access = none auth-access = write password-db = /usr/local/subversion/conf/passwd authz-db = /usr/local/subversion/conf/authz realm = web [sasl] # use-sasl = true # min-encryption = 0 # max-encryption = 256 指定用户和密码配置文件为公共目录。如果新建项目的也指定为公共目录,只需要修改公共目录的文件,使用指定用户和密码,就可以访问其他相关项目。 在项目众多,人员权限统一的情况下,是很有必要的。 假如公司有60多个项目,新来一个员工,要添加一个账户,每个项目改配置很费劲。 如果都指定为公共目录,那就只需要更改authz和passwd这2个文件就可以了。 编辑钩子文件,默认post-commit文件不存在 vim /svndata/www/dts/hooks/post-commit 内容如下: #!/bin/sh /usr/local/subversion/bin/svn update --username whh --password whh /www/dts/ >> /var/log/svn/dts.log 设置权限 chmod 755 /svndata/www/dts/hooks/post-commit 这里解释下,钩子脚本的作用。 当客户端提交文件成功之后,会自动执行post-commit。将更新的代码检出到指定目录,保证提交的代码和服务器一致。 需要注意的是,不要直接在服务器的指定目录,这里是指/www/dts/ 编辑文件,否则客户端提交文件之后,提示文件冲突。 启动svn svnserve -d -r /svndata 注意,必须要手动检出一份,否则post-commit不生效 svn co file:///svndata/www/dts/ /www/dts/ 再次执行命令 /usr/local/subversion/bin/svn update --username whh --password whh /www/dts/ 使用svn客户端上传代码测试 查看服务器/www/dts/目录是否有上传的文件

01
您找到你想要的搜索结果了吗?
是的
没有找到

Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件

#!/usr/bin/env/ python # -*- coding:utf-8 -*- __author__ = 'shouke' import os import subprocess # 复制文件或目录到指定目录(非自身目录) def copy_dir_or_file(src, dest): if not os.path.exists(dest): print('目标路径:%s 不存在' % dest) return [False, '目标路径:%s 不存在' % dest] elif not os.path.isdir(dest): print('目标路径:%s 不为目录' % dest) return [False, '目标路径:%s 不为目录' % dest] elif src.replace('/', '\\').rstrip('\\') == dest.replace('/', '\\').rstrip('\\'): print('源路径和目标路径相同,无需复制') return [True,'源路径和目标路径相同,不需要复制'] if not os.path.exists(src): print('源路径:%s 不存在' % src) return [False, '源路径:%s 不存在' % src] # /E 复制目录和子目录,包括空的 /Y 无需确认,自动覆盖已有文件 args = 'xcopy /YE ' + os.path.normpath(src) + ' ' + os.path.normpath(dest) # 注意:xcopy不支持 d:/xxx,只支持 d:\xxxx,所以要转换 try: with subprocess.Popen(args, shell=True, universal_newlines = True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as proc: output = proc.communicate() print('复制文件操作输出:%s' % str(output)) if not output[1]: print('复制目标文件|目录(%s) 到目标目录(%s)成功' % (src, dest)) return [True,'复制成功'] else: print('复制目标文件|目录(%s) 到目标目录(%s)失败:%s' % (src, dest, output[1])) return [False,'复制目标文件|目录(%s) 到目标目录(%s)失败:%s' % (src, dest, output[1])] except Exception as e: print('复制目标文件|目录(%s) 到目标目录(%s)失败 %s' % (src, dest, e)) return [False, '复制目标文件|目录(%s) 到目标目录(%s)失败 %s' % (src, dest, e)] # 删除指定目录及其子目录下的所有子文件,不删除目录 def delete_file(dirpath): if not os.path.exists(dirpath): print('要删除的目标路径:%s 不存在' % dirpath) return [False, '要删除的目标路径:%s 不存在' % dirpath] elif not os.path.isdir(dirpath): print('要删除的目标路径:%s 不为目录' % dirpath) return [False, '要删除的目标路径:%s 不为目录' % dirpath] # 注意:同xcopy命令,del也不支持 d:/xxxx,Linux/Unix路径的写法,只支持d:\xxx windows路径的写法 args = 'del /F/S/Q ' + os.path.normpath(dirpath) # /F 强制删除只读文件。 /S 删除所有子目录中的指定的文件。 /Q 安静模式。删除前,不要求确认 try: with subprocess.Popen(args, shell=True, universal_newlines = True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as proc:

02

linux svn钩子 svn同步当ftp用

好处,可以再提交更新时,同时同步更新指定目录下的文件。 我这里主要用在了同步web页面上。 最开始需要搭建好svn服务 并运行svn服务命令:svnserve -d -r /opt/svn 第一步:建立你的web程序目录 mkdir /opt/svntongbu 很多教程忽略了下面,这一步进入/opt/svn/svntongbu目录。 svn checkout svn://192.168.13.166/project 不重命名文件夹,直接在当前目录下检出 svn checkout svn://192.168.13.166/project test 检出文件并且重命名文件夹为test 第二步:在项目库的 hooks/ 目录下新建 post-commit 文件 【钩子脚本】 添加脚本内容如下: #!/bin/sh REPOS="$1" REV="$2" mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf export LANG=zh_CN.UTF-8 SVN=/usr/bin/svn #svn可执行文件 STATIC_DIR=/opt/svntongbu/project #要同步更新的目录 ${SVN} update ${STATIC_DIR} --username "wangzi" --password "wangzi" #如果是实时更新网页chown www:www 路径 第三步:让post-commit有执行的权限 chmod u+x post-commit这里就已经完成了 问题:如果遇到post-commit失败退出代码127 试着用命令找下对应的路径并修改post-commit,命令 whereis svn  找出可执行的 svn的路径

05

安装SVN

现在的开发工作都是由团队合作来完成开发,通常都是团队中的每个人或者每几个人完成一个模块的开发,最后再将模块拼凑起来,形成一个完整的项目,这就涉及到了协同开发。在各个模块的开发过程中,肯定会因为出现BUG或者需求更改,而进行代码的修改甚至重构的,代码每修改一次就相当于迭代了一次版本,一个完整的项目中通常会有多个模块,如果每个模块的开发过程中都会修改或重构代码,那么如果没有一个平台来管理、控制这些代码,肯定会造成代码混乱的局面。所以这时候就有了一个概念:版本控制,代码管理平台的主要功能就是进行版本的控制,以及记录代码修改、版本迭代的历史信息。

01

对比cp和scp命令 将数据从一台linux服务器复制到另一台linux服务器

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。 -a:此参数的效果和同时指定"-dpR"参数相同; -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录; -f:强行复制文件或目录,不论目标文件或目录是否已存在; -i:覆盖既有文件之前先询问用户; -l:对源文件

05
领券