SVN学习笔记

安装

yum -y install subversion

通过rpm -qa subversion可确认是否已安装
小帖士:如需保留yum安装包的话只需修改/etc/yum.conf中的keepcache的值即可

#修改
sed -i 's#keepcache=1#keepcache=0#g' /etc/yum.conf
#查看
grep keepcache /etc/yum.conf

配置并启动

创建两个目录,分别用于存储数据和用户、密码

mkdir -p /application/svndata
mkdir -p / application/svnpasswd

使用svnserve来启动SVN服务,相关参数可通过svnserve –help来查看用途

svnserve -d -r /application/svndata/
#查看服务是否启动
ps -ef | grep svn
#通过端口方式来查看服务是否启动
netstat -lnpt | grep 3690
#或者(CentOS 6默认未安装)
lsof -i :3690

svn-netstat

创建版本库

创建版本库使用命令svnadmin

svnadmin create /application/svndata/sadoc

通过tree /application/svndata可以查看到版本库基本的目录结构

/application/svndata/
└── sadoc
    ├── conf
    │   ├── authz
    │   ├── passwd
    │   └── svnserve.conf
    ├── db
    │   ├── current
    │   ├── format
    │   ├── fsfs.conf
    │   ├── fs-type
    │   ├── min-unpacked-rev
    │   ├── rep-cache.db
    │   ├── revprops
    │   │   └── 0
    │   │       └── 0
    │   ├── revs
    │   │   └── 0
    │   │       └── 0
    │   ├── transactions
    │   ├── txn-current
    │   ├── txn-current-lock
    │   ├── txn-protorevs
    │   ├── uuid
    │   └── write-lock
    ├── format
    ├── hooks
    │   ├── post-commit.tmpl
    │   ├── post-lock.tmpl
    │   ├── post-revprop-change.tmpl
    │   ├── post-unlock.tmpl
    │   ├── pre-commit.tmpl
    │   ├── pre-lock.tmpl
    │   ├── pre-revprop-change.tmpl
    │   ├── pre-unlock.tmpl
    │   └── start-commit.tmpl
    ├── locks
    │   ├── db.lock
    │   └── db-logs.lock
    └── README.txt

修改配置文件conf/svnserve.conf(别忘了先做好备份哦)

#修改第12,13行
anon-access = none
auth-access = write
#第20行
password-db = /application/svpasswd/passwd
#第27行
authz-db = /application/svnpasswd/authz

通过diff指令对比备份文件可查看修改的内容

diff svnserve.conf.bak svnserve.conf
12,13c12,13
< # anon-access = read
< # auth-access = write --- > anon-access = none
> auth-access = write
20c20
< # password-db = passwd --- > password-db = /application/svnpasswd/passwd
27c27
< # authz-db = authz --- > authz-db = /application/svnpasswd/authz

修改完配置文件需重启SVN使配置文件生效

pkill svnserve
svnserve -d -r /application/svndata/

使用了pid file的话可以通过如下方法重启

kill -USR1 <code>cat /application/svndata/svn.pid</code>
svnserve -d -r /application/svndata --pid-file=/application/svndata/svn.pid

接下来将conf文件夹下的passwd和authz文件拷贝到/application/svnpasswd目录下

cp passwd authz /application/svnpasswd/

注:为保持安全性可将拷贝到/application/svnpasswd/下的这两个文件设置700的权限

在passwd中配置用户名和密码,按照 user = password一行一个用户的方式添加即可
然后在authz文件中定义组设置权限:
基本格式

[<版本库>:/项目/目录]
@<用户组名> = 权限
<用户名> = 权限

#定义组-[groups]下面
sagroup = alan, david
[sadoc:/]
@sagroup = r
alan = rw

接下来就需要在本地下载SVN客户端,Windows下一般用TortoiseSVN (常用操作有SVN Update(首次为Checkout)和SVN Commit,缺省目录%APPDATA%\Subversion\auth)

Linux下客户端的操作方法

svn co svn://*.*.*.*/sadoc /local/dir/ --username=alan --password=...
svn add filename
snv ci -m "description..."
svn import /local/dir/ svn://*.*.*.*/sadoc -m "description..."

Linux下修改SVN IP地址(通过svn info可查看详细信息)

svn switch --relocate 原svn地址 新svn地址

SVN下可能过钩子来在提交前、提交后进行一些操作,默认在hooks文件夹下有如下模板,去除后面的.tmpl即可使用
post-commit.tmpl
post-lock.tmpl
post-revprop-change.tmpl
post-unlock.tmpl
pre-commit.tmpl
pre-lock.tmpl
pre-revprop-change.tmpl
pre-unlock.tmpl
start-commit.tmpl

注:从Windows上传的文件转换文本格式用dos2unix指令,钩子文件要加执行权限

以下是一个通过钩子来传送文件的简单示例

REPOS="$1"
REV="$2"
#encoding
export LC_CTYPE="en_US.UTF-8"
export LC_ALL=
#log pth
LOGPATH-"/app/log"
[ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p
#update content with svn
SVN update --username alan -- password alanhou /data/www

if [ $? -eq 0 ]
        then
        /usr/bin/rsync -az --delete /data/www /tmp/
fi

其它:

branch, tag, trunk

svnlook

线上更新代码:先上传到临时目录,再执行mv或者使用ln软链接

Jira, Mantis

互联网大型企业代码上线发布架构方案

CentOS安装SVN

1.使用yum install subversion -y可以直接在服务器上完成svn的安装。

2.通过rmp -ql subversion可以查看安装位置,可以看到svn在bin文件夹下生成了一些二进制文件

[root@alanhou ~]# rpm -ql subversion
/etc/bash_completion.d
/etc/bash_completion.d/subversion
/etc/rc.d/init.d/svnserve
/etc/subversion
/usr/bin/svn
/usr/bin/svnadmin
/usr/bin/svndumpfilter
/usr/bin/svnlook
/usr/bin/svnserve
/usr/bin/svnsync
/usr/bin/svnversion
... ...

通过svn –help可以查看svn的一些命令和使用方法。

3.为svn版本库创建一个文件夹,如执行mkdir -p /var/svn/alanhou创建一个名为alanhou目录

4.执行svnadmin create /var/svn/alanhou创建版本库,可以看到alanhou目录下出现如下目录和文件

[root@alanhou alanhou]# ll
total 24
drwxr-xr-x 2 root root 4096 Oct  9 05:10 conf
drwxr-sr-x 6 root root 4096 Oct  9 05:10 db
-r--r--r-- 1 root root    2 Oct  9 05:10 format
drwxr-xr-x 2 root root 4096 Oct  9 05:10 hooks
drwxr-xr-x 2 root root 4096 Oct  9 05:10 locks
-rw-r--r-- 1 root root  229 Oct  9 05:10 README.txt

conf目录中为svn版本库配置文件

[root@alanhou alanhou]# ll conf/
total 12
-rw-r--r-- 1 root root 1080 Oct  9 05:10 authz
-rw-r--r-- 1 root root  309 Oct  9 05:10 passwd
-rw-r--r-- 1 root root 2279 Oct  9 05:10 svnserve.conf
  • authz文件是权限控制文件,比如要设置用户alan对版本库根目录拥有读写权限
[/]
alan=rw
  • passwd是帐号密码文件,添加格式为user=password
  • svnserve.conf SVN服务配置文件

打开下面的几个注释(注意要同时去掉#后面的空格,否则会出现类似/var/svn/alanhou/conf/svnserve.conf:12: Option expected的报错):
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/alanhou # 认证空间名,版本库所在目录
启动版本库

svnserve -d -r /var/svn/alanhou

-d表示后台运行

-r 指定根目录

5.在Windows电脑上安装SVN客户端,如TortoiseSVN,在用于对接的文件夹上右击SVN Checkout,输入版本库所有服务器ip,点击OK在下一步中输入前面创建的用户名和密码

svn checkout

然后就可完成Checkout的步骤:

SVN checkout finished

Magento安装相关问题

安装Magento前需要确定系统的相关配置是否满足相关要求,请参见:安装Magento系统要求。安装时要求以下目录的chmod权限至少为0755:

• /app/etc/
• /var/
• /media/

Note:chmod 是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数。只有文件所有者和超级用户可以修改文件或目录的权限。

chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(user)的读、写、执行,用户组(group)的读、写、执行以及(other)其它用户的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。

chmod的八进制语法的数字说明;

r 4

w 2

x 1

– 0

所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如rwx ,也就是4+2+1 ,应该是7(即二进制的111)。

用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如rw- ,也就是4+2+0 ,应该是6(即二进制的110)。

其它用户的权限数字表达:其它用户权限位的数字相加的总和。如r-x ,也就是4+0+1 ,应该是5(即二进制的101)。

安装过程中会将/app/etc/目录下的local.xml.template复制一份并重命名为local.xml,然后根据图形化安装界面所填内容将相关值填入local.xml中。除了普通的手动安装(即按照图形化界面一步一步走)外,还可使用SSH和SVN方法进行安装。

SSH方法安装Magento

通过SSH(Secure Shell)连接服务器指令:
ssh username@server_address
通过cd(change directory)指令转向安装目录
cd /full/path/to/installation/directory/
以下1.3.2.4为magento的版本号
wget http://www.magentocommerce.com/downloads/assets/1.3.2.4/magento-
1.3.2.4.tar.gz
tar -zxvf magento-1.3.2.4.tar.gz
mv magento/* magento/.htaccess .
chmod o+w var var/.htaccess app/etc
chmod -R o+w media
./pear mage-setup .
./pear install magento-core/Mage_All_Latest-stable
rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*
rm -rf magento/ magento-1.3.2.4.tar.gz

Mac用户需将wget进行修改
curl http://www.magentocommerce.com/downloads/assets/1.3.2.3/magento-
1.3.2.3.tar.gz > magento-1.3.2.3.tar.gz

如果清楚所有变量值,可直接参照以下页面的方法
http://www.magentocommerce.com/wiki/groups/227/command_line_installation_wizard

  1. php-cli -f install.php — \
  2. –license_agreement_accepted “yes” \
  3. –locale “en_US” \
  4. –timezone “America/Los_Angeles” \
  5. –default_currency “USD” \
  6. –db_host “DB_HOST” \
  7. –db_name “DB_NAME” \
  8. –db_user “DB_USER” \
  9. –db_pass “DB_PASS” \
  10. –url “SITE_URL” \
  11. –use_rewrites “yes” \
  12. –use_secure “no” \
  13. –secure_base_url “” \
  14. –use_secure_admin “no” \
  15. –admin_firstname “FIRST_NAME” \
  16. –admin_lastname “LAST_NAME” \
  17. –admin_email “EMAIL_ADDRESS” \
  18. –admin_username “USERNAME” \
  19. –admin_password “PASSWORD”

升级指令
./pear mage-setup .
./pear install magento-core/Mage_All_Latest
rm -rf downloader/pearlib/cache/* downloader/pearlib/download/*
如需清除缓存和session,使用如下指令:
rm –rf var/cache/* var/session/*

SVN方法安装Magento

SVN(Subversion Network)安装Magento用到指令如下:

svn export http://svn.magentocommerce.com/source/branches/1.3

其中1.3为Magento的版本号,trunk安装指令:

svn export http://svn.magentocommerce.com/source/branches/1.3-trunk

什么是SVN

每天工作中都会接触到一些不熟悉的内容,电子商务尤其如此。今天就有同事在整理网站逻辑时提到了SVN。经了解,SVN为Apache Subversion的缩写,它是一个开源的软件版本管理控制系统,属于集中式文件版本管理系统。就等于是程序员/开发者从核心服务器上获取自己项目所需修改和编辑的那部分代码,进行开发,开发完成后再提交,所有的版本信息放在服务器上。

svn工作原理说明图